缩放ggplot2中的Y轴误差条

时间:2014-07-31 18:19:52

标签: r ggplot2

我所有正在使用Rstudio的数据帧如下:

                      X NSUM MEAN LOWMEAN UPMEAN
2 Nonmonetary Incentive  800 4.86    4.58   5.15
3       $0 (no mention)  822 5.06    4.78   5.35
4                  $25   830 6.35    6.06   6.65
5                  $50   815 6.84    6.54   7.14
6                  $75   864 7.00    6.70   7.29

所以我使用以下命令创建了这个漂亮的情节:

plot1 <- ggplot(rawdata, aes(x = rawdata$X, y = rawdata$MEAN)) + 
  geom_point(colour = "red") + 
  geom_errorbar(aes(ymin = rawdata$LOWMEAN, ymax = rawdata$UPMEAN, width =0), colour = "black") + 
  coord_flip()

绘制方法和条形图以显示上限和下限。我想要做的是改变y轴,使得滴答不会经常出现,但无论我做什么,ylim()或scale_y_continuous()我得到错误:

应用于连续变量的离散值?

2 个答案:

答案 0 :(得分:0)

如果可以的话会有所帮助:

  1. 提供可重复的数据,而不是给我们输出和
  2. 告诉我们您传递给ylim()scale_y_continuous()。没有它,很难确切地知道是什么 你做错了,因为这是你的问题所在。我们无法修复它 如果我们不知道。
  3. scale_y_continuous(breaks = seq(4.5, 7.5, by = 1))这样的东西应该可以正常工作。这将轴(rawdata $ MEAN)从4.5扩展到7.5,增量为1.您应该能够以这种方式使轴正常工作。像ylim(4.5, 7.5)这样的东西也有效。当我将它添加到你的ggplot代码时,它运行正常。

答案 1 :(得分:0)

所以有几件事情。

首先,aes(...)在默认数据集的上下文中计算它的参数。这意味着aes(x=X,...)将在X参数(data=...中使用的任何数据框中查找({1}}列rawdata。您永远不会使用,例如rawdata$X内的aes(...)。这可能导致不可预测且通常非常模糊的结果。

其次,要控制轴刻度数,请在breaks=...中使用limits=...scale_y_continuous(...)。前者将设置刻度,但可能不会显示全部,因为限制是自动设置的。后者将覆盖默认限制。以下是您的数据的两个示例:

library(ggplot2)
ggplot(rawdata, aes(x = X, y = MEAN)) + 
  geom_point(colour = "red") + 
  geom_errorbar(aes(ymin = LOWMEAN, ymax = UPMEAN, width =0)) + 
  coord_flip()+
  scale_y_continuous(breaks=c(4,5,6,7,8))

注意我们如何将休息时间设置为(4,5,6,7,8),但我们没有看到4和8.这是因为ggplot自动设置限制,这不是t包括4和8.您可以按如下方式强制执行此操作:

ggplot(rawdata, aes(x = X, y = MEAN)) + 
  geom_point(colour = "red") + 
  geom_errorbar(aes(ymin = LOWMEAN, ymax = UPMEAN, width =0)) + 
  coord_flip()+
  scale_y_continuous(breaks=c(4,5,6,7,8), limits=c(4,8))

最后,如果你想要删除主要标记之间的微弱网格线,你需要使用theme(...)

ggplot(rawdata, aes(x = X, y = MEAN)) + 
  geom_point(colour = "red") + 
  geom_errorbar(aes(ymin = LOWMEAN, ymax = UPMEAN, width =0)) + 
  coord_flip()+
  scale_y_continuous(breaks=c(4,5,6,7,8), limits=c(4,8))+
  theme(panel.grid.minor=element_blank())