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

R语言中无索引嵌套列表的带自动配色折线图绘制方法

数据预处理

首先将嵌套列表转换为绘图用矩阵,每列对应一个子列表、每行对应一个固定位置的元素序列:

# 合并列表中的矩阵为14行3列的绘图矩阵
eig_mat <- do.call(cbind, eig_inter_list)
# 自动获取参数,无需硬编码
n_line <- nrow(eig_mat) # 折线总数量
n_x <- ncol(eig_mat) # x轴刻度总数量

基础R绘图方案

# 加载配色包,如未安装先运行 install.packages("viridis")
library(viridis)
# 自动生成适配折线数量的区分度配色
line_colors <- viridis(n_line)

# 可选:固定前两位颜色为红、蓝,匹配需求
# line_colors[1:2] <- c("red", "blue")

# 初始化空白画布
plot(1, type = "n", 
     xlim = c(1, n_x), ylim = range(eig_mat),
     xaxt = "n", xlab = "子列表序号", ylab = "数值")
# 设置x轴刻度
axis(side = 1, at = 1:n_x, labels = paste0("子列表", 1:n_x))
# 循环绘制所有折线
for (i in 1:n_line) {
  lines(x = 1:n_x, y = eig_mat[i, ], col = line_colors[i], lwd = 1.5)
}

# 折线数量过多时可注释掉下方图例代码
legend("topright", 
       legend = paste0("序列", 1:n_line),
       col = line_colors, lty = 1, cex = 0.7)

ggplot2绘图方案

适合需要后续调整样式的场景:

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

# 转换为长格式数据
plot_df <- as.data.frame(eig_mat) %>%
  mutate(line_id = factor(1:n_line)) %>%
  pivot_longer(cols = -line_id, names_to = "x_idx", values_to = "val") %>%
  mutate(x_idx = as.integer(gsub("V", "", x_idx)))

ggplot(plot_df, aes(x = x_idx, y = val, group = line_id, color = line_id)) +
  geom_line(linewidth = 1) +
  # 自定义x轴刻度
  scale_x_continuous(breaks = 1:n_x, labels = paste0("子列表", 1:n_x)) +
  # 自动适配配色
  scale_color_viridis_d() +
  labs(x = "子列表序号", y = "数值") +
  theme_bw()

适配规则说明

  • 所有代码均无硬编码参数,输入数据的子列表数量、每个子列表的元素数量变化时,代码可自动适配,无需修改核心逻辑
  • 配色默认使用色弱友好、区分度高的viridis色板,最多可支持上百种不同颜色的生成;如果折线数量极大,可替换为hcl.colors(n_line, palette = "Cold")生成更多区分度高的颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:24:03