【发布时间】:2018-07-03 15:15:08
【问题描述】:
我希望在数据的整体图之上绘制数据集子集的平滑线。
例如,在下图中,我希望将右侧的绿色和蓝色数据点绘制为单独的 geom_smooth 线。
一个可重现的代码示例如下:
library(datasets)
library(ggplot2)
library(tidyr)
iris_subset <- subset(iris, Species == "virginica" | Species == "versicolor")
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species))
p <- p + geom_point()
p <- p + geom_smooth(method="loess", colour = "black")
p <- p + geom_smooth(aes(data = iris_subset, x = Sepal.Length, y = Sepal.Width), method="loess", colour = "red")
print(p)
但是,当我尝试这样做时,它会抛出错误“错误:美学必须是长度 1 或与数据相同”
这似乎暗示它不喜欢在与原版相同的轴上绘制不同长度的子集,但在玩过它之后我碰壁了。
【问题讨论】:
-
2) 避免在`aes中使用
$ -
3) 您可以在每个函数的“data”参数中对数据进行子集化,目前您不这样做
-
最后但同样重要的是:Subset and ggplot2的可能重复
-
问题已解决,我试图在
aes()括号内获取数据。感谢所有的帮助。我现在就写出来。