R语言ggplot2绘图设置数值轴刻度为0-6的问题求助
问题原因
你的代码混淆了坐标轴的映射逻辑:aes()中y参数绑定的是连续型的mean变量,也就是你要调整刻度的数值轴。就算使用coord_flip()翻转了坐标轴方向,调整数值刻度也需要针对连续型的y轴标度,而非离散型的x轴标度,你之前调用scale_x_discrete()完全是修改错了对象。
可行解决代码
# 先构造测试数据集 data <- structure(list(question = c("Q1", "Q2", "Q3", "Q4"), n = c(7L, 7L, 7L, 7L), mean = c(5.14285714285714, 5, 5.57142857142857, 5.28571428571429), sd = c(0.899735410842437, 1.29099444873581, 1.13389341902768, 0.951189731211342)), row.names = c(NA, 4L), class = c("tbl_df", "tbl", "data.frame")) # 绘图代码 library(ggplot2) ggplot(subset(data, question %in% c("Q1", "Q2")), aes(x=question, y=mean)) + geom_bar(stat ="identity", width = 0.5)+ geom_errorbar(aes(ymin = mean-sd, ymax = mean+sd, width = 0.5)) + coord_flip() + # 正确修改连续y轴的刻度 scale_y_continuous(breaks = 0:6, limits = c(0, 6))
补充说明
如果设置limits后发现超出范围的误差条被截断,可以把标度里的limits去掉,换成在coord_flip()中设置范围:
ggplot(subset(data, question %in% c("Q1", "Q2")), aes(x=question, y=mean)) + geom_bar(stat ="identity", width = 0.5)+ geom_errorbar(aes(ymin = mean-sd, ymax = mean+sd, width = 0.5)) + coord_flip(ylim = c(0, 6)) + scale_y_continuous(breaks = 0:6)
内容的提问来源于stack exchange,提问作者Espejito
相关产品推荐
相关产品推荐

