R语言ggplot2设置x轴同时显示正负值并重设y轴百分比刻度
R语言ggplot2坐标轴自定义设置问题
我在R语言中使用ggplot2绘制A、B两个对象的可视化图表,我的代码如下:
ggplot(test_error_bar_14_10_21, aes(x=levels, y=len, colour=index, group=index)) + geom_errorbar(aes(ymin=len-ci, ymax=len+ci), width=.03) + geom_line() + geom_point(size=3, shape=21, fill="white") + # 21是实心圆圈参数 xlab("接种人口占比(%)") + ylab("新增病例干预效果") + scale_colour_hue(name="指标类型", # 图例标签,使用更深的配色 breaks=c("doses/population", "death/population"), labels=c("A", "B"), l=40) + # 调低亮度参数,使用更深的配色 ggtitle("不同疫苗接种率对A、B指标的影响") + coord_flip() + # 翻转坐标轴 expand_limits(y=0) + # 扩展y轴范围 scale_y_continuous(breaks=0:20*4) + # 每4个单位设置一个刻度 theme_bw() + theme(legend.justification=c(1,0), legend.position=c(1,0)) # 将图例放在右下角
运行结果如下图:
我遇到了两个需要解决的问题:
- 从图中可见x轴存在负数值,但未标记负区间刻度,我该如何设置才能让x轴同时标记正负区间?我此前找到的相关帖子仅支持单轴仅显示负数值的场景,无法满足同轴同时显示正负值的需求。
- 除此之外,我还希望将y轴的刻度从当前的0-25%-75%-100%调整为10%-20%-…-100%的等距百分比刻度,请问如何实现?
示例数据集
应@Park的要求,我在此提供数据集test_error_bar_14_10_21的完整示例:
index levels len ci doses/population 0.1 7.232200 7.511183 doses/population 0.2 2.542600 8.51828 doses/population 0.3 -0.615100 10.090960 doses/population 0.4 -1.219400 9.363690 doses/population 0.5 -2.942717 11.359863 doses/population 0.6 -2.063000 9.12014 doses/population 0.7 0.721000 8.69263 doses/population 0.8 3.288216 10.747079 doses/population 0.9 6.778900 8.944848 doses/population 1.0 7.652900 8.24641 death/population 0.1 4.645150 11.179297 death/population 0.2 -5.860138 14.206702 death/population 0.3 -3.841500 15.451860 death/population 0.4 2.966200 16.215530 death/population 0.5 2.168000 18.536120
(注:我使用dput导出数据时出现报错,仅能读取4列中的2列,因此直接手动录入数据。我参照过相关dput使用教程但暂时未成功导出)
问题解决进展
- 我已尝试添加@Dave2e建议的代码,目前可正常运行,结果如下图:

- 更新:我添加了@Park提供的代码,将左侧列调整为百分比显示,效果如下图:

- 在@Park的帮助下我已经得到了预期结果,非常感谢。

内容的提问来源于stack exchange,提问作者Nguyen Lis
相关产品推荐
相关产品推荐

