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

如何在ggplot2密度图中仅调整指定因子层级的线条粗细?

实现指定分组密度图线条加粗及代码优化

一、单独加粗'50 to 65'分组的线条

ggplot 没有scale这个美学映射参数,要实现指定分组线条加粗,可通过映射size美学并手动设置刻度值实现:

  • 在aes中添加size = age_cat_maths关联分组与线条粗细
  • 使用scale_size_manual()为不同分组指定粗细数值,仅给'50 to 65'设置更大的数值

二、代码优化建议

原代码嵌套ifelse生成年龄分组的写法冗余易出错,推荐用cut()函数替代,同时可简化数据处理流程。

修改后的完整代码

# 优化年龄分组生成逻辑
sq <- sq %>% 
  mutate(age_cat_maths = cut(teacher_age_maths,
                             breaks = c(18, 30, 40, 50, 66),
                             labels = c('18 to 29', '30 to 39', '40 to 49', '50 to 65'),
                             include.lowest = TRUE)) %>%
  drop_na(age_cat_maths) %>%
  select(age_cat_maths, score_teacher_maths)

# 绘制密度图,指定分组线条粗细
ggplot(sq, aes(x = score_teacher_maths,
               linetype = age_cat_maths,
               size = age_cat_maths)) +
  geom_density(adjust = 2, na.rm = TRUE) +
  # 手动设置线条粗细:仅'50 to 65'加粗,其他用默认粗细
  scale_size_manual(values = c('18 to 29' = 1, 
                               '30 to 39' = 1, 
                               '40 to 49' = 1, 
                               '50 to 65' = 2)) +
  # 可选:隐藏size图例,保持原有图例简洁
  guides(size = "none")

补充说明

  • cut()函数通过断点和标签直接生成分组,比嵌套ifelse更高效易维护
  • scale_size_manual()的values可按需调整,数值越大线条越粗
  • 添加guides(size = "none")可避免图例出现多余的粗细标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:40:29