You need to enable JavaScript to run this app. R语言中如何从DataFrame绘制同图多色行连续曲线
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何从DataFrame绘制同图多色行连续曲线

问题核心原因

之前的代码没法生成同图多曲线,两个关键问题:

  • R的绘图逻辑里,每次执行plot()都会清空当前画布,生成一张全新的图。你在apply循环里逐行调用plot,自然会输出6张完全独立的单曲线图,根本没法叠到一起
  • 数据维度错配:矩阵第一列是目标编号(1到6),不是累计概率值,直接拿整行数据绘图会把数字序号当成概率值,导致坐标轴范围错乱、曲线变形
可直接运行的绘图代码

数据梳理

你的res_final为6行9列的矩阵结构:

  • 每行对应一个独立目标
  • 第一列存储目标ID(1~6),剩下8个列依次对应传感器数量从1递增到8时的累计检测概率
    绘图时x轴固定为1~8的传感器数量序列,y轴取每行去掉第一列后的8个概率值即可。
# 配置6种高区分度的曲线颜色
line_colors <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#A65628")
# 提取绘图用的概率矩阵:去掉第一列的目标ID列
prob_matrix <- res_final[, -1]
# 初始化全局画布:只执行一次plot搭建基础绘图框架,后续内容全部叠加到这个框架上
plot(
  x = 1:ncol(prob_matrix),
  y = prob_matrix[1, ],
  type = "l",
  lwd = 2,
  col = line_colors[1],
  xlab = "Number of sensors",
  ylab = "Cumulative detection probability",
  main = "Evolution of cumulative probabilities for 6-targets based on the Number of sensors",
  ylim = c(min(prob_matrix) - 0.05, max(prob_matrix) + 0.05) # 给y轴留适当边距,避免曲线贴到坐标轴
)
# 循环把剩余5条曲线叠加到画布上
for (row_idx in 2:nrow(prob_matrix)) {
  lines(
    x = 1:ncol(prob_matrix),
    y = prob_matrix[row_idx, ],
    col = line_colors[row_idx],
    lwd = 2
  )
}
# 添加图例标注每条曲线对应的目标
legend(
  "bottomright",
  legend = paste("Target", res_final[, 1]),
  col = line_colors,
  lwd = 2
)

实用注意点

  • 多曲线同图的核心规则:只在最开始调用一次plot()初始化画布,后续所有新增图形元素(曲线、点、标注)都用lines()、points()这类叠加类函数操作,绝对不能在循环里反复调用plot()
  • 提前把标识类的非数值列(比如目标ID)从绘图数据里剔除,避免把标识值当成有效数据点导致曲线偏移、坐标轴范围异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 23:15:03