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

如何在R中创建区分Nr变量与线型的多线图?

在R中用ggplot2绘制按组别区分线型的折线图

你可以用ggplot2轻松实现需求,以下是完整的可运行代码和关键步骤说明:

完整代码

# 加载ggplot2包
library(ggplot2)

# 构建数据集
sc = c(0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4)
pat = c("Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", 
       "Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", 
       "Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", "Pattern 1", 
       "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2",
       "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2",
       "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2", "Pattern 2")
nr= c(3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)
changes = c(10,8,7,5,4,7,3,1,0,0,4,0,0,0,0,11,8,4,2,1,6,2,0,0,0,2,0,0,0,0)

df <- data.frame(sc = sc, pat = pat, nr = nr, changes = changes)

# 绘制目标折线图
ggplot(df, aes(x = sc, y = changes, color = factor(nr), linetype = pat)) +
  geom_line(linewidth = 1) +
  scale_linetype_manual(values = c("Pattern 1" = "solid", "Pattern 2" = "dashed")) +
  scale_color_manual(values = c("3" = "#1f77b4", "4" = "#ff7f0e", "5" = "#2ca02c")) +
  labs(
    x = "sc",
    y = "changes",
    color = "nr",
    linetype = "Pattern",
    title = "分组折线图"
  ) +
  theme_minimal()

关键参数说明

  • 映射设置:aes()中指定color = factor(nr)将nr转为分类变量,确保按3/4/5分组;linetype = pat让不同Pattern对应不同线型。
  • 线型自定义:scale_linetype_manual()强制指定Pattern 1为实线(solid),Pattern 2为虚线(dashed),完全匹配你的需求。
  • 颜色自定义:scale_color_manual()为每个nr组分配独立颜色,你可以替换颜色代码调整样式。
  • 细节优化:linewidth = 1让线条更清晰,theme_minimal()提供简洁的视觉风格,labs()完善图表的标签和标题。

运行代码后就能得到你想要的折线图:每个nr组别对应两条线,实线是Pattern 1,虚线是Pattern 2,颜色区分不同nr组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:48