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

ggplot箱线图修改求助:图例设置与月份轴排序问题

ggplot2箱线图修改方案

1. 调整X轴月份顺序与显示名称

无需修改Excel原始数据,直接在R中将month列转换为有序因子,指定自定义顺序和显示标签即可:

# 加载依赖包(未安装先执行 install.packages(c("ggplot2", "dplyr")) )
library(ggplot2)
library(dplyr)

# 重新定义月份的顺序与显示名称
summer.months <- summer.months %>%
  mutate(month = factor(month, 
                        levels = c(11, 12, 1, 2, 3, 4),  # 强制按指定时间顺序排列
                        labels = c("十一月", "十二月", "一月", "二月", "三月", "四月")))  # 替换为中文月份名,需英文可改用 c("Nov","Dec","Jan","Feb","Mar","Apr")

2. 图例添加样本量、调整位置与放大

步骤1:统计各分组样本数量

按图例涉及的position和canopy分组,计算每组样本量:

# 统计每个(position, canopy)组合的样本数
sample_counts <- summer.months %>%
  group_by(position, canopy) %>%
  summarize(n = n(), .groups = "drop") %>%
  mutate(label = paste0(position, " (n=", n, ")"))  # 生成带样本量的图例标签

步骤2:修改ggplot代码实现需求

将样本量标签整合到图例,同时调整图例位置和尺寸:

ggplot(summer.months, aes(x = month, y = Temp_mean, linetype = position, color = canopy, fill = position)) +
  geom_boxplot() +
  theme_bw() +
  ggtitle("不同林冠下夏季立枯与倒枯的温度变化") +
  labs(y = "温度值(℃)", x = "月份") +
  scale_fill_manual(values = c("white", "white", "green", "black"), labels = sample_counts$label) +
  scale_linetype_discrete(labels = sample_counts$label) +
  # 调整图例位置与大小
  theme(
    legend.position = "topright",
    legend.text = element_text(size = 12),
    legend.title = element_text(size = 14),
    legend.key.size = unit(1.2, "cm")
  )

补充说明

  • 若图例是position与canopy的交叉组合,可调整分组统计逻辑,确保每个图例项对应正确样本量;
  • 多个美学映射(如linetype、fill)的图例标签需保持一致,避免混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:40:24