我试图在同一张图上从我的数据集中绘制 3 条线,并使用 ggplot2 显示它们。我想手动设置每条线的颜色和形状。
问题是颜色/形状是根据标签的字典顺序设置的,我似乎无法控制所选择的内容。
这是我尝试过的:
px <-
ggplot(dataset) +
stat_smooth(aes(x=id, y=dataset[,4], colour="2000", linetype="2000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,3], colour="500", linetype="500"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,2], colour="1000", linetype="1000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
theme(legend.title=element_blank()) +
xlab("x") +
ylab("y") +
ggtitle("px")
py <-
ggplot(dataset) +
stat_smooth(aes(x=id, y=dataset[,4], colour="1000", linetype="1000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,3], colour="500", linetype="500"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,2], colour="2000", linetype="2000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
theme(legend.title=element_blank()) +
xlab("x") +
ylab("y") +
ggtitle("py")
pz <-
ggplot(dataset) +
stat_smooth(aes(x=id, y=dataset[,4], colour="B1000", linetype="B1000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,3], colour="C500", linetype="C500"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
stat_smooth(aes(x=id, y=dataset[,2], colour="A2000", linetype="A2000"),se=FALSE, size=1, span=0.1, level=0.90, method="loess") +
theme(legend.title=element_blank()) +
ylab("y") +
xlab("x") +
ggtitle("pz")
这就是我得到的:
我的数据如下所示:
> head(dataset)
id A B C
1 1 0 26 44
2 2 0 0 0
3 3 0 0 46
4 4 26 22 0
5 5 16 0 0
6 6 0 0 30
我想要像最后一个一样的东西,在图例框上具有这些精确的颜色、形状和顺序,但不必在每个标签前加上 ABC。
我怎样才能做到这一点?
PS:即使我使用的是 stat_smooth,geom_line 也会发生同样的情况