首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用geom_smooth或stat_smooth绘图

用geom_smooth或stat_smooth绘图
EN

Stack Overflow用户
提问于 2017-03-07 00:54:39
回答 1查看 7.8K关注 0票数 1

我试图用最佳拟合线和95%预测线绘制线性回归图,但是当使用stat_smoothgeom_smooth时,我会看到图片中的图形。这些线不会出现在图表上,而且它似乎试图为所有的站点创建这些线条。数据的模拟显示在下面和图片中。谢谢你的时间和帮助。

代码语言:javascript
复制
Site Cu  Fe
A     1 123
B     2 123
C     3 534
D     4 364
E     5 234
F     6 634
G     7 784
H     8 856

截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 02:40:32

您正在尝试使用color=site从一个观察结果中进行回归,这就是为什么没有任何行返回的原因。

以下是预测的95%置信区间的最佳拟合线:

代码语言:javascript
复制
library(ggplot2)

# produce data
df1 <- structure(list(Site = c("A", "B", "C", "D", "E", "F", "G", "H"), Cu = 1:8, Fe = c(123L, 123L, 534L, 364L, 234L, 634L, 784L, 856L)), .Names = c("Site", "Cu", "Fe"),  row.names = c(NA, -8L), class = "data.frame")

# ordinary case of linear regression with 95CI band
ggplot(data = df1, aes( x = Fe, y = Cu)) +
  geom_point() +
  geom_smooth(method="lm")

如果您仍然希望强制这些点具有颜色图例,则可以:

代码语言:javascript
复制
# plot regression line with band and color points by Site
ggplot(data = df1, aes( x = Fe, y = Cu)) +
  geom_smooth(method="lm") +
  geom_point(aes(color=Site))

由于每个站点只有一个观察结果,所以我建议您标记这些点,而不是将geom_point映射到颜色:

代码语言:javascript
复制
ggplot(data = df1, aes(x = Fe, y = Cu)) +
   geom_smooth(method = "lm") +
   geom_label(aes(label=Site))

另一种选择可能是,您希望绘制每个站点的一行,并且您的模拟数据集是不完整的,在这种情况下:

代码语言:javascript
复制
df1 <- data.frame(    Site = sample(letters[1:8], 999, replace=T),
                    Fe = runif(999), 
                    Cu = 1:999+rnorm(1))


ggplot(data = df1, aes(x = Fe, y = Cu, colour=Site)) +
  geom_smooth(method = "lm", alpha=0.1) +
  geom_point(alpha=0)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42638311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档