我所有正在使用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()我得到错误:
应用于连续变量的离散值?
答案 0 :(得分:0)
如果可以的话会有所帮助:
ylim()
和
scale_y_continuous()
。没有它,很难确切地知道是什么
你做错了,因为这是你的问题所在。我们无法修复它
如果我们不知道。像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())