Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 缩放ggplot2中的Y轴错误条_R_Ggplot2 - Fatal编程技术网

R 缩放ggplot2中的Y轴错误条

R 缩放ggplot2中的Y轴错误条,r,ggplot2,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

大家好,我正在使用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我都会得到错误:


离散值应用于连续变量

如果您能够:

提供可复制的数据,而不是向我们提供输出和 向我们展示您传递给ylim和 连续缩放。没有这一点,就很难知道到底是什么 你做错了,因为这就是你的问题所在。我们无法修复它 如果我们不知道的话。
像scale_y_continuousbreaks=seq4.5、7.5、by=1这样的东西应该可以正常工作。这以1为增量将轴rawdata$平均值从4.5缩放到7.5。您应该能够以这种方式使轴工作良好。类似于ylim4.5、7.5的东西也可以工作。当我把它添加到你的ggplot代码中时,它工作得很好。

所以有几件事

首先,aes。。。在默认数据集的上下文中计算其参数。这意味着aesx=X,。。。将首先在data=。。。在您的情况下,参数rawdata。您不应在aes中使用,例如rawdata$X。。。。这可能导致不可预测且通常非常模糊的结果

其次,要控制轴记号的数量,请使用breaks=。。。和限制=。。。以比例y连续。。。。前者将设置刻度,但可能不会显示所有刻度,因为限制是自动设置的。后者将覆盖默认限制。下面是两个数据示例:

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自动设置限制,不包括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))
最后,如果你想消除主刻度之间的模糊网格线,你需要使用主题

你不应该在ggplot中使用$。在第一个参数中,您将rawdata指定为您的数据,您不必一直重新键入它。
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())