Dag
Dag

Reputation: 589

Y axis won't start at 0 in ggplot

In this plot I order the ylim to be 0, but the y axis seems to start at -1 anyway, which is very annoying. I really like the y axis to stat at 0. Solutions?

sub1=subset(table.popstat,POPSTAT==1,select=c(1,3))
ggplot(sub1, aes(x=YR,y=Freq)) + ylim(0,15) +
  geom_bar(stat='identity') + 
  annotate("text",x=3,y=14.9,label="Population status",cex=10)

Also, I have 30 plots like this, and there are many different ranges on the y axis. I need a generic code that places the text in the upper left corner of the graph no matter what the ymax is. Doable?

Upvotes: 10

Views: 33771

Answers (2)

Li Xing
Li Xing

Reputation: 59

p + scale_y_continuous(
  limits =   c(0,max_num),
  expand = expansion(mult = c(0,0.05))
)

this function ( expansion(mult = c(0,0.05))) may help

Upvotes: -1

Richard Telford
Richard Telford

Reputation: 9923

ggplot automatically extends the axes slightly to make sure there is room for points to plot. You can turn this behaviour off with the expand argument

ggplot(sub1, aes(x=YR,y=Freq)) + 
  geom_bar(stat='identity') + 
  annotate("text",x=3,y=14.9,label="Population status",cex=10) +
  scale_y_continuous(expand = c(0, 0), limits = c(0, 15))

Upvotes: 24

Related Questions