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

如何在同一图中绘制FTSW_apres_arros与P_av_arros并区分图例

在ggplot2中合并两个变量绘图并自定义图例样式

核心思路

ggplot2对长格式数据的支持更友好,所以首先需要将包含两个变量的宽格式数据集转换为长格式,再通过映射color/shape等美学属性区分两个变量,最后自定义图例样式匹配你的需求。

步骤1:转换数据格式

使用tidyr::pivot_longer将宽格式数据转为长格式,把FTSW_apres_arros和P_av_arros合并为一列数值,新增一列标记变量类别:

library(tidyr)
library(ggplot2)

# 假设你的原始数据集名为df,替换成实际数据集名称
df_long <- df %>%
  pivot_longer(
    cols = c(FTSW_apres_arros, P_av_arros),  # 指定要合并的两个变量
    names_to = "Variable",                   # 新增列的名称,用于标记变量类别
    values_to = "Value"                      # 合并后的数值列名称
  )

步骤2:绘制合并图表

基于长格式数据,将Variable映射到颜色、形状等属性,绘制基础合并图(这里以折线+散点为例,可根据你原绘图的几何图层替换):

# 基础合并绘图,x轴替换为你实际的自变量(比如时间、处理组等)
p <- ggplot(df_long, aes(x = 你的自变量列名, y = Value, color = Variable)) +
  geom_line(linewidth = 1) +  # 原绘图是折线就保留,柱状图换geom_col(position = "dodge")
  geom_point(size = 2)        # 可根据需求添加或移除

步骤3:自定义图例样式

根据你提供的目标图例样式,调整图例的标题、颜色、形状、位置等:

# 自定义图例示例,根据你的目标样式修改参数
p_final <- p +
  # 自定义图例标题和颜色
  scale_color_manual(
    name = "监测指标",  # 替换为你需要的图例标题
    values = c(
      "FTSW_apres_arros" = "#0073C2FF",  # 替换为目标颜色
      "P_av_arros" = "#EFC000FF"
    )
  ) +
  # 如果需要用形状区分(可选)
  scale_shape_manual(
    name = "监测指标",
    values = c(
      "FTSW_apres_arros" = 16,  # 替换为目标形状代码(16是实心圆,17是实心三角)
      "P_av_arros" = 17
    )
  ) +
  # 调整图例外观和位置
  theme(
    legend.position = "right",  # 替换为目标位置:top/right/bottom/left
    legend.title = element_text(face = "bold", size = 12),
    legend.text = element_text(size = 10),
    legend.background = element_rect(fill = "white", color = "black")
  )

# 输出最终图
print(p_final)

注意事项

  • 如果你的原始绘图包含误差棒、拟合线等元素,直接将对应的几何图层(如geom_errorbar、geom_smooth)添加到合并后的绘图代码中即可,确保美学映射正确。
  • 若为柱状图,需在geom_col中添加position = "dodge"避免柱子重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:24:44