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

ggplot2双Y轴主Y轴最小值设为0的问题求助

解决ggplot2双Y轴主Y轴最小值设为0的问题

问题根源

你当前代码用min(stats$avg_asking_rate)计算偏移量,导致主Y轴起点不是0,同时瓷砖图的位置逻辑错误,引发边缘间隙和数据显示异常。要实现主Y轴最小值为0且保留原图表样式,需重新调整双轴映射规则并修正瓷砖图参数。

修改后的代码

# 计算两组数据的最大值,用于双轴范围匹配
max_rate <- max(stats$avg_asking_rate)
max_availability <- max(stats$availability_rate)

# 生成转换系数,让availability_rate的范围适配主Y轴0到max_rate的区间
coeff <- max_rate / max_availability

stats %>%      
  ggplot(aes(x = `Snapshot Date`))+
  ggtitle("Rent ($/SF NNN)       (%)") +                                                                                                                        
  # 修正瓷砖图位置:y设为数值的一半,高度为数值本身,确保从主Y轴0点开始
  geom_tile(aes(y = avg_asking_rate/2, height = avg_asking_rate, width = 70, fill = "Avg. Asking Rate")) + 
  # 对availability_rate做系数转换,匹配主Y轴数值范围
  geom_line(aes(y = availability_rate * coeff, colour = "Availability Rate"), size = 1)+
  scale_x_date(name = NULL,
               breaks = quarter_labels[, "Snapshot Date", drop=T],
               labels = quarter_labels[, "qlabel", drop=T])+
  scale_y_continuous(name = NULL,
                     # 强制主Y轴范围从0到avg_asking_rate的最大值
                     limits = c(0, max_rate),
                     breaks = scales::breaks_pretty(n = 5),
                     # 次Y轴反向转换,还原availability_rate的真实数值
                     sec.axis = sec_axis(~./coeff, breaks = scales::breaks_pretty(n = 5))) +
  scale_fill_manual(name = NULL, 
                    values = c("Avg. Asking Rate" = secondary_pal[5]),
                    guide = guide_legend(order = 1))+
  scale_colour_manual(name = NULL, 
                      values = c("Availability Rate" = primary_pal[4]), 
                      guide = guide_legend())

修改说明

  1. 双轴映射逻辑重构:通过转换系数coeff将availability_rate的数值范围缩放到与主Y轴0到avg_asking_rate最大值的区间匹配,避免轴偏移导致的显示错乱。
  2. 瓷砖图参数修正:将瓷砖图的y参数改为avg_asking_rate/2,height设为avg_asking_rate,确保瓷砖从主Y轴0点向上延伸,消除边缘间隙。
  3. 主Y轴范围强制设置:在scale_y_continuous中添加limits = c(0, max_rate),确保主Y轴最小值固定为0。

原始图表参考

原始图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:53:09