绘制属于数据框中特定列数据的多条回归线[重复]
Posted
技术标签:
【中文标题】绘制属于数据框中特定列数据的多条回归线[重复]【英文标题】:Plotting multiple regression lines that belong to data from a specific column in a dataframe [duplicate] 【发布时间】:2022-01-22 01:49:24 【问题描述】:我有几个植物的数据框,其中包含三个特征测量值。
plant_id stem_id stem_hei inf_len
1 1 1 410 92
2 1 2 520 130
3 1 3 440 98
4 2 1 480 109
5 2 2 490 115
6 2 3 500 125
7 3 1 457 105
8 3 2 425 83
9 3 3 412 93
10 4 1 385 100
11 4 2 375 78
12 4 3 380 66
我为所有这些都放置了一个简单的茎高 (x=stem_hei) 与花序长度 (y=inf_len) 的关系图,它可以顺利完成。 regression line plot
我想要的是为同一关系绘制三个单独的回归线。但是每个都包含词干 1,2 和 3 的数据:(第 1 行:来自词干 1 的数据,第 2 行:来自词干 2 的数据,第 3 行相同)
我以为使用这个函数会根据stem_id的值选择数据,但它没有:
plot(tr_correl$tall_stem_hei, tr_correl$inf_len, "stem_id" == "1")
这似乎很明显,但我真的不知道如何从这里开始。提前感谢您的帮助!
【问题讨论】:
这可以工作plot(tr_correl1$tall_stem_hei[tr_correl1$stem_id==1], tr_correl1$inf_len[tr_correl1$stem_id==1])
。但是您可以使用ggplot
更优雅地绘制所有三个回归线
嗨!您的 data.frame 结构良好,可以使用ggplot
plotting 库的geom_line()
层。您可以在 ggplot 2 官方文档或此 *** 帖子中找到更多信息:***.com/a/66531066/10740287
【参考方案1】:
您可以使用ggplot2
包轻松地做到这一点,使用geom_smooth
。您可以更改回归类型、是否显示 SE 等等。使用美学col
(和/或linetype
),您可以为不同的组绘制不同的线条。
tr_correll <- data.table(stem_id=c("a","b","c"),tall_stem_hei=rnorm(9),inf_len=rnorm(9))
ggplot(tr_correll,aes(y=inf_len,x=tall_stem_hei,col=stem_id))+geom_point()+
geom_smooth(method="lm",se=F)
【讨论】:
不幸的是它不起作用,它创建了一个单线图,而我正在寻找的是回归线。无论如何感谢您的建议,我认为 ggplot 是要走的路。 我的错,我太仓促了。固定 我无法添加不同的行。我得到的只是蓝色范围内的点。第一个带有 data.table 的代码行需要什么?我正在使用美学col
和线型,但我不知道是否正确(除了我没有linetype
功能,只有这个:ggplot(ilts, aes(y=inf_len, x=tall_stem_hei, col= stem_id, linetype_pal("stem_id")))+geom_point() + geom_smooth (method= "lm", se=F)+geom_smooth (data = ilts, method= "lm", se=F)
已修复,我成功了,非常感谢 Simone 的帮助!以上是关于绘制属于数据框中特定列数据的多条回归线[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]
如何在 R 中合并同一数据框中的行(基于特定列下的重复值)?