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

如何在ggplotly图表中添加变量并设置独立Y轴,同时自定义变量颜色

我来帮你搞定这个需求!你想要给var3添加独立的右侧Y轴,同时自定义所有变量的颜色对吧?我调整了你的代码,完美实现这两个功能,还优化了图表的可读性:

修改后的完整代码

library(tidyr)
library(ggplot2)
library(plotly)

# 生成原始数据
data <- data.frame(Date = seq(as.Date("2018-02-03"), as.Date("2019-05-05"), by = "days"), 
                   var1 = runif(457), 
                   var2 = runif(457)) %>% 
  tidyr::pivot_longer(-Date, names_to = "variable", values_to = "value")

data2 <- data.frame(Date = seq(as.Date("2018-02-03"), as.Date("2019-05-05"), by = "days"), 
                    var3 = runif(457) * 100) %>% 
  tidyr::pivot_longer(-Date, names_to = "variable", values_to = "value")

# 构建图表
plot <- ggplot() +
  # 堆叠柱状图(主Y轴:对应var1、var2)
  geom_bar(data = data, aes(x = Date, y = value, fill = variable), 
           stat = 'identity', position = "stack") +
  # 折线图(映射到次Y轴:对应var3)
  geom_line(data = data2, aes(x = Date, y = value, colour = variable), linewidth = 1) +
  # 设置双Y轴:主Y轴和右侧独立次Y轴
  scale_y_continuous(
    name = "var1 & var2 数值",
    sec.axis = sec_axis(~., name = "var3 数值")
  ) +
  # 自定义柱状图填充色(对应var1、var2)
  scale_fill_manual(values = c("#A90046", "#D1EAFE"), 
                    name = "柱状图变量") +
  # 自定义折线图颜色(对应var3)
  scale_color_manual(values = "#EDF2F4", 
                     name = "折线图变量") +
  theme_minimal() +
  # 优化主题:让次Y轴颜色和折线匹配,提升可读性
  theme(
    axis.title.y.right = element_text(color = "#EDF2F4"),
    axis.text.y.right = element_text(color = "#EDF2F4"),
    legend.position = "bottom"
  )

# 转换为交互式图表
ggplotly(plot)

关键修改说明

  • 添加独立Y轴:通过scale_y_continuous的sec.axis参数创建右侧次Y轴,这里直接用~.是因为var3的数值范围(0-100)和主Y轴(0-1)天然区分,不需要额外的数值转换;如果后续变量量级不同,你可以在这里写转换公式,比如~./100来对齐刻度。
  • 自定义颜色生效:把你注释掉的scale_fill_manual和scale_color_manual移到了所有图层之后,这样它们能正确绑定对应的填充/颜色映射,不会被后续图层覆盖。
  • 可读性优化:给两个Y轴设置了明确的名称,调整了次Y轴的文字颜色和折线颜色一致,还把图例移到了底部,避免遮挡图表内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:29:08