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

使用循环函数批量绘制多列数据图表的问题求助(ggplot2)

问题原因

你的代码里y="i"是把字符串"i"当成了Y轴的固定值,所有数据点的Y值都一样,所以图表才会呈现直线,根本没用到对应列的浓度值。

修正后的代码

方法1:用.data代词(推荐,适配ggplot2现代语法)

library(ggplot2)

# 剔除第一列,获取所有要作为Y轴的列名
col_names <- colnames(rotated.plot.data)[-1]

for(i in col_names){
  plot <- ggplot(rotated.plot.data, aes(x = instrument.supersaturation, y = .data[[i]])) +
    geom_point() +
    labs(y = i)  # 给每个图表的Y轴加上对应列名,方便识别
  print(plot)
}

方法2:用aes_string(兼容旧版ggplot2)

library(ggplot2)

col_names <- colnames(rotated.plot.data)[-1]

for(i in col_names){
  plot <- ggplot(rotated.plot.data, aes_string(x = "instrument.supersaturation", y = i)) +
    geom_point() +
    labs(y = i)
  print(plot)
}
关键说明
  • .data[[i]]能动态引用数据框里列名为i的列,让ggplot正确读取对应列的浓度值。
  • 加labs(y = i)是为了每个图表的Y轴都显示对应的列名,避免所有图表Y轴标签一致,方便区分不同图表对应的指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:40:32