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

ggplot双折线图双轴问题:刻度匹配错误及轴位调整需求

解决方案

要实现将avg_area_flow放在左侧主y轴、avg_conductance放在右侧次y轴,且两轴刻度差异约100倍的折线图,核心是对次轴对应的折线数据做数值转换,让折线位置和次轴刻度匹配。具体修改如下:

修改后代码

library(ggplot2)

ggplot(TR_midday_avg, aes(x = day)) +
  # 绘制主y轴的area_flow折线
  geom_line(aes(y = avg_area_flow, color = "面积流量"), linewidth = 1) +
  # 绘制次y轴的conductance折线:除以100匹配主y轴数值范围
  geom_line(aes(y = avg_conductance / 100, color = "导度"), linewidth = 1) +
  scale_y_continuous(
    name = "树干液流(面积流量)", # 主y轴名称
    # 次y轴:将主y轴数值乘以100,还原导度原刻度
    sec.axis = sec_axis(~ . * 100, name = "导度")
  ) +
  scale_color_manual(values = c("面积流量" = "blue", "导度" = "red")) +
  labs(title = "正午树干液流与导度变化", x = "日期") +
  theme_minimal()

关键说明

  • 转换系数依据:从数据片段看,avg_conductance数值约为avg_area_flow的100倍(如15138/161≈94),选择100作为转换系数,符合刻度差异需求。
  • 折线数据转换:绘制avg_conductance时必须除以100,让折线y值范围与主y轴匹配,再通过次轴的~.*100还原出导度的原始刻度值。
  • 颜色区分:添加颜色映射可清晰区分两条折线,避免混淆。

数据片段(中文翻译)

# 一个 tibble:6 × 7
  日期 平均径向流量 平均面积流量 平均光合有效辐射 平均温度 平均水汽压亏缺 平均导度
  <dbl>        <dbl>        <dbl>          <dbl>     <dbl>          <dbl>      <dbl>
1   103         0.610         161.            808      21.8           0.994     15138.
2   104         0.508         134.            759.     23.9           1.07      13884.
3   105         0.585         153.            890      18.2           1.71       8816.
4   106         0.511         133.            918.     17.9           0.922     16326.
5   107         0.482         124.           1055.     12.5           0.891     16999.
6   109         0.245          60.7           456.      9.38          0.652     23214.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:23:09