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

如何对同一列分组的N0与N1的yield数据做回归拟合绘图?

解决方案

你的代码无法运行主要有两个原因:一是aes()括号未闭合,二是在ggplot的aes中直接使用subset()会破坏数据上下文映射逻辑。以下是无需转置原数据集的简洁可行方案:

方案一:构造临时小数据框(推荐)

直接提取两个分组的yield值生成临时数据,完全不改动原dataA结构,适配你30多列的实际数据场景:

# 加载ggplot2
library(ggplot2)

ggplot(data = data.frame(
  N0_yield = dataA$yield[dataA$nitrogen == "N0"],
  N1_yield = dataA$yield[dataA$nitrogen == "N1"]
), aes(x = N0_yield, y = N1_yield)) +
  geom_point(alpha = 0.5, size = 4) +
  stat_smooth(method = 'lm', linetype = 1, se = FALSE, 
              formula = y ~ x, linewidth = 0.5, color = "dark red")

方案二:利用原数据的索引匹配

如果不想额外构造数据框,也可以直接在aes中用索引提取对应值(注意两个分组的样本数必须一致,你的数据满足这个条件):

ggplot() +
  geom_point(aes(
    x = dataA$yield[dataA$nitrogen == "N0"],
    y = dataA$yield[dataA$nitrogen == "N1"]
  ), alpha = 0.5, size = 4) +
  stat_smooth(aes(
    x = dataA$yield[dataA$nitrogen == "N0"],
    y = dataA$yield[dataA$nitrogen == "N1"]
  ), method = 'lm', linetype = 1, se = FALSE, 
  formula = y ~ x, linewidth = 0.5, color = "dark red")

说明

  • 两种方案都不需要转置你30多列的原数据集,仅针对nitrogen分组提取所需的yield值。
  • 方案一更符合ggplot的使用规范,代码可读性更强,优先推荐。

内容的提问来源于stack exchange,提问作者J.K Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:50:15