在ggplot中设置y轴断点

51

我在代码中设置断点时遇到了困难,我尝试添加breaks=seq(0, 100, by=20),但似乎无法正确地解决问题。基本上,我希望Y轴从0到100,每20个刻度一次。

    YearlyCI <- read.table(header=T, text='
  Station Year       CI        se
     M-25 2013 56.57098 1.4481561
     M-45 2013 32.39036 0.6567439
      X-2 2013 37.87488 0.7451653
     M-25 2008     74.5       2.4
     M-45 2008     41.6       1.1
     M-25 2004     82.2       1.9
     M-45 2004     60.6       1.0
     ')


library(ggplot2)
ggplot(YearlyCI, aes(x=Year, y=CI, colour=Station,group=Station)) +
  geom_errorbar(aes(ymin=CI-se, ymax=CI+se), colour="black", width=.2) +
  geom_line(size=.8) +
  geom_point(size=4, shape=18) +
  coord_cartesian(ylim = c(0, 100)) +
  xlab("Year") +
  ylab("Mean Condition Index") +
  labs(fill="") +
  theme_bw() +
    theme(legend.justification=c(1,1), legend.position=c(1,1)) 

1
你如何尝试添加刻度线?+ scale_y_continuous(breaks = seq(0,100,by = 20)应该行得通。 - adibender
添加成功。之前我是分别添加了scale_y_continuous和coord_cartesian代码,我不知道它们可以一起使用。非常感谢! - user3490557
1个回答

101
你需要添加 <\p>。
+ scale_y_continuous(breaks = seq(0, 100, by = 20))

编辑: 根据下面的评论,仅当轴已在适当范围内时才起作用。为了强制执行范围,您可以将上述代码扩展如下:

+ scale_y_continuous(limits = c(0, 100), breaks = seq(0, 100, by = 20))

10
只有在您的数据已经在0到100的范围内时,此方法才有效。如果数据不在这个范围内,并且您想要强制图形显示从0到100的Y轴(每隔20个刻度)- 例如为了使多个并排显示的图形坐标轴相等 - 可以像这样添加' limits = c(0,100)':+ scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by = 20)) - rvrvrv
1
如果您想使用数据的 y 轴限制而不是进行指定,您该如何更改此内容?我尝试过 +scale_y_continuous(breaks = seq(0, ylim(), by = 500),但是会出现错误:“在空对象上应用 'limits' 的方法不适用于该类”。我的数据框架采用长格式。谢谢。 - JJGabe
3
max_val <- max(your_variable) 的意思是找到your_variable中的最大值并将其存储在变量max_val中。然后,scale_y_continuous(breaks = seq(0, max_val, by = 500), limits=c(0, max_val)) 的意思是在y轴上设置一个连续的比例尺,其中显示从0到max_val的刻度线(每隔500个),并且限制y轴的范围在0到max_val之间。 - adibender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接