Home > database >  How to add a tick mark with characters manually to a histogram?
How to add a tick mark with characters manually to a histogram?

Time:03-25

I want to add a tick mark to the end of the x-axis of a histogram in ggplot. The axis range is from 0 - 55, and I want the last tick mark to be changed to ">55".

set1 %>% 
  ggplot(aes(x=total, fill=lowcost)) 
  geom_histogram(binwidth=1,aes(y = (..count..)/sum(..count..)),col=I("black")) 
  scale_color_grey() scale_fill_grey(start = .85,
                                     end = .85,)  
  theme_linedraw() 
  guides(fill = "none", cols='none') 
  geom_vline(aes(xintercept=10, size='Low target'),
             color="black", linetype=5) 
  geom_vline(aes(xintercept=50, size='High target'),
             color="black", linetype="dotted") 
  scale_size_manual(values = c(.5, 0.5), guide=guide_legend(title = "Target", override.aes = list(linetype=c(3,5), color=c('black', 'black')))) 
  scale_y_continuous(labels=scales::percent) 
  scale_x_continuous(breaks = seq(0,55,10),limits = c(0,60)) 
  facet_grid(cols = vars(lowcost)) 
  ggtitle("Ask Set 1 ") 
  theme(plot.title = element_text(hjust = 0.5)) 
  xlab("Total donation ($)") 
  ylab("Percent")

CodePudding user response:

To show you what @Allan Cameron said in the comments, I created a reproducible dataset. You can use the following code:

library(tidyverse)
set1 <- data.frame(total = runif(100, 0, 100),
                   lowcost = rep(LETTERS[1:2], 100))

set1 %>% 
  ggplot(aes(x=total, fill=lowcost)) 
  geom_histogram(binwidth=1,aes(y = (..count..)/sum(..count..)),col=I("black")) 
  scale_color_grey() scale_fill_grey(start = .85,
                                     end = .85,)  
  theme_linedraw() 
  guides(fill = "none", cols='none') 
  geom_vline(aes(xintercept=10, size='Low target'),
             color="black", linetype=5) 
  geom_vline(aes(xintercept=50, size='High target'),
             color="black", linetype="dotted") 
  scale_size_manual(values = c(.5, 0.5), guide=guide_legend(title = "Target", override.aes = list(linetype=c(3,5), color=c('black', 'black')))) 
  scale_y_continuous(labels=scales::percent) 
  scale_x_continuous(breaks = c(seq(0,50,10), 55), labels = c(seq(0, 50, 10), '>55'), limits = c(0, 60))  
  facet_grid(cols = vars(lowcost)) 
  ggtitle("Ask Set 1 ") 
  theme(plot.title = element_text(hjust = 0.5)) 
  xlab("Total donation ($)") 
  ylab("Percent")

Output:

enter image description here

  • Related