如何在具有构面的组中向 ggplot 添加一条最适合的线

jmt*_*ung 2 r ggplot2

我有一个包含以下变量(水果、价格、国家、有机/非有机、位置)的数据集。

我想要一个像这里这样的情节,但添加了一个东西 - 一条最适合的线,穿过有机/非有机、位置和水果的每个分组的点。

情节 -> https://dl.dropboxusercontent.com/u/3803117/stackoverflow.jpeg 在此处输入图片说明 例如,在“Organic, City”方块中,我想要 4 条最佳拟合线 - 一条以苹果、香蕉、樱桃、枣等为中心。

这是我用来生成绘图的代码。

p <- ggplot(data,aes(factor(fruit),price)) + 
  geom_violin(aes(fill=Country,trim=FALSE)) + 
  geom_boxplot(aes(fill=Country),position=position_dodge(0.9),width=.1) + 
  geom_jitter(alpha=0.5) + 
  facet_wrap(organic~location) +
  xlab("Fruit") +
  ylab("Price") +
  labs(fill="Country")
Run Code Online (Sandbox Code Playgroud)

这是一个示例数据集,如果它可能有帮助的话 -> https://dl.dropboxusercontent.com/u/3803117/stackoverflow.csv

非常感谢所有的帮助!

CMi*_*ael 5

geom_abline 文档没有准确指定您要查找的内容吗?请参阅“# 线性模型的斜率和截距”部分

http://docs.ggplot2.org/current/geom_abline.html

编辑:刚刚检查并意识到没有没有 SE 波段的示例,但您可以通过设置 SE=FALSE 轻松禁用它们:

p <- qplot(wt, mpg, data = mtcars)
p <- p + geom_smooth(aes(group=cyl), method="lm", se=FALSE)
p <- p + facet_grid(cyl~.)
print(p)
Run Code Online (Sandbox Code Playgroud)

如果您提供了示例数据集,则更容易为您提供帮助。

EDIT2:以下内容可能更类似于 OP 的设想。然而,我认为它没有意义,因为国家(或水果、类型或任何东西)的排序通常不能用于制定有用的线性关系:

p <- ggplot(data,aes(factor(country),price)) + 
  geom_violin(aes(fill=country,trim=FALSE)) + 
  geom_boxplot(aes(fill=country),position=position_dodge(0.9),width=.1) + 
  geom_jitter(alpha=0.5) + 
  facet_wrap(organic~location+fruit) +
  xlab("Fruit") +
  ylab("Price") +
  labs(fill="country")
p <- p + geom_smooth(aes(group=1,color=country), method="lm", se=FALSE)
p
Run Code Online (Sandbox Code Playgroud)