【问题标题】:Using ggplot2 for lm function on allcolumns in data.frame在 data.frame 的所有列上使用 ggplot2 的 lm 函数
【发布时间】:2014-05-01 07:42:37
【问题描述】:

我的数据如下图所示:

Fasting_glucose sample  Prevotella  Turicibacter    Mitsuokella Description
138 PCS119F 0.005782    0   0   Known_Diabetic
114 PCS119M 0.062654    0.000176    0.020358    New_Diagnosed
100 PCS11F  0.33044 0.000469    0.000352    New_Diagnosed
88  PCS120M 0.097811    0.000135    0   Normoglycemic
228 PCS125F 0.17703 0.000264    0.06429 Known_Diabetic
98  PCS127M 0.466902    0   0.011735    Normoglycemic
148 PCS130F 0.186682    0   0.000131    New_Diagnosed
233 PCS132F 0.003126    0   0   Known_Diabetic

我想使用lm 函数来绘制Fasting_glucose 与使用描述列作为分组变量的所有其他列之间的简单线性回归。

目前,我正在尝试使用以下脚本:

Prevotella<-ggplot(fasting.glucose, aes(Fasting_glucose, Prevotella)) +
geom_point() +
geom_smooth(method="lm")+ geom_point(aes(size = Fasting_glucose))+geom_point(aes(fill=Description, size=Fasting_glucose),  shape=21)+theme(panel.background = element_rect(fill='white', colour='black')) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())

但它一次只产生一个情节。

所以只想问如何应用lm 函数并一次为所有列绘制它。

【问题讨论】:

  • 您需要指定您要查找的输出。有很多方法可以查看多个变量之间的拟合度。
  • 我期望的输出是脚本应该返回一个包含多个散点图的单个图,其中包含所有列的回归线,如 Prevotella、Tuneribacter、Mitsuokella 等针对 Fasting_glucose 水平。
  • 尝试添加+ facet_wrap( ~ Description)
  • facet_wrap(~Description) 根据描述列中的组来分离样本。但我仍然无法为所有列与 Fasting_glucose 列生成图。

标签: r


【解决方案1】:

您需要将数据设为tidy 才能与ggplot2 一起使用。这意味着加载reshape2 包并使用melt 函数。

library(ggplot2)
library(reshape2)

x <- read.table(text = "Fasting_glucose sample  Prevotella  Turicibacter    Mitsuokella Description
138 PCS119F 0.005782    0   0   Known_Diabetic
114 PCS119M 0.062654    0.000176    0.020358    New_Diagnosed
100 PCS11F  0.33044 0.000469    0.000352    New_Diagnosed
88  PCS120M 0.097811    0.000135    0   Normoglycemic
228 PCS125F 0.17703 0.000264    0.06429 Known_Diabetic
98  PCS127M 0.466902    0   0.011735    Normoglycemic
148 PCS130F 0.186682    0   0.000131    New_Diagnosed
233 PCS132F 0.003126    0   0   Known_Diabetic", header = TRUE)

y <- melt(x, id.vars = c("Fasting_glucose", "sample", "Description"))

ggplot(y, aes(Fasting_glucose, value, colour = Description)) + geom_point() +
geom_smooth(method = "lm") + facet_wrap(~ variable)

【讨论】:

  • 我猜 OP 想做facet_wrap(Description~variable) 但否则这种方法是正确的
  • 谢谢你,nacnudus,它按照我想要的方式工作。我想知道是否可以将 R 值添加到每个图中?
  • 很高兴帮助并欢迎使用 StackOverflow。您可以通过单击我的答案旁边的勾号让其他人知道此问题已得到解答。 R 值问题是一个热门问题,已回答 here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-19
  • 1970-01-01
  • 2017-01-08
相关资源
最近更新 更多