我尝试将三个数据集绘制到同一张图上。其中一个数据集应该只出现在图上作为一组不相连的点,而另外两个数据集应该出现为相连的数据点。 我可以使用以下代码构建图表:
x <- c(1,2,3,4)
y <- c(1.1,1.2,1.3,1.4)
y2 <- c(2.1,2.2,2.3,2.4)
x3 <- c(4,5,6,7)
y3 <- c(3.1,3.2,3.3,3.2)
p1 <- data.frame(x=x,y=y)
p2 <- data.frame(x=x,y=y2)
p3 <- data.frame(x=x3,y=y3)
plot(x,y,type="o", col="red")
points(x3,y3,col="darkgreen",pch=16)
points(x,y2,type="o",col="blue")
代码中显示了两组用"type = 'o'"标记的点,意味着这些点用线连接起来,而另一组点则没有用线连接。我尝试在ggplot2中重现这种情况。 我在ggplot2中执行以下操作:
zz <- melt(list(p1=p1,p2=p2,p3=p3), id.vars="x")
ggplot(zz, aes(x.value, color = L1))
+ geom_point() + scale_color_manual("Dataset",
values = c("p1" = "darkgreen", "p2" = "blue", "p3" = "red"))
按照上述方法,我得到了三组不同颜色的点,但是红色和蓝色的点没有分别连接。 如果想要连接这些点,可以在上述命令中添加geom_line(),这样就会得到以下结果:
ggplot(zz, aes(x.value, color = L1)) + geom_point() +
scale_color_manual("Dataset", values =
c("p1" = "darkgreen", "p2" = "blue", "p3" = "red")) + geom_line()
当然,这样会导致所有点都相互连接,因此所有红点都与彼此相连,所有蓝点也是如此,所有绿点也是如此。但是,尽管我希望红色和蓝色的点相互连接,但我不希望绿色的点相互连接。有没有办法做到这一点?
我可以执行以下操作(或类似操作):
ggplot(p2, aes(x,y)) + geom_point(color = "blue") + geom_line(color="blue")
+ geom_point(data=p3, color = "red") +
geom_line(data=p3, color="red") + geom_point(data=p1, color = "darkgreen")
使用此命令,红色点会相互连接,蓝色点会相互连接,而绿色点则不会连接。但是,我不想这样做,因为我希望能够在图例中显示所有点的颜色(在此解决方案中没有图例显示)。
aes(x.value, color = L1)
的地方应该为aes(x,value, color = L1)
。 - pedromanoel