You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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建议的代码,目前可正常运行,结果如下图:
    Dave2e方案运行结果
  • 更新:我添加了@Park提供的代码,将左侧列调整为百分比显示,效果如下图:
    Park方案优化显示效果
  • 在@Park的帮助下我已经得到了预期结果,非常感谢。
    最终预期效果图

内容的提问来源于stack exchange,提问作者Nguyen Lis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:39:03