我希望在数据的总体图上绘制数据集子集的平滑线。
例如,在下面的图像中,我希望将右侧的绿色和蓝色数据点绘制为单独的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或与数据相同”
这似乎暗示着它不喜欢包含与原始图形在同一轴上绘制的不同长度的子集,但是在玩了之后我撞墙了。
答案 0 :(得分:0)
仅供参考,我在这里尝试从data=subset
内部调用aes()
。
已解决的代码如下:
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))
p <- p + geom_point(aes(colour = Species))
p <- p + geom_smooth(method="loess", colour = "black")
p <- p + geom_smooth(data = iris_subset, aes(x = Sepal.Length, y = Sepal.Width), method="loess", colour = "red")
print(p)