我有一个名为XY的矩阵,其中包含以下条目:
0 1 1 3
2 4 2 3
4 2 3 5
6 2 5 6
我想在同一张图中绘制第1列和第2列,分别作为x和y轴,第3列和第4列分别作为x和y轴。我正在尝试以下代码:
plot(XY[,1],XY[,2],type="l",col="red")
lines(XY[,3],XY[,4],col="green")
points(XY[,1],XY[,2],type="p",col="red")
points(XY[,3],XY[,4],type="p",col="green")
有没有更通用的方法来制作此图而不必重复相同的代码?
谢谢
如果您不介意使用ggplot
而不是base
绘图(给定我认为您不想要的标签),则可以执行以下操作:
library(ggplot2)
XY <- data.frame(XY)
colnames(XY)[1:4] <- c(paste0("var",1:4))
ggplot(data = XY) +
geom_point(aes(x = var1, y = var2), color = "red") +
geom_line(aes(x = var1, y = var2), color = "red") +
geom_point(aes(x = var3, y = var4), color = "green") +
geom_line(aes(x = var3, y = var4), color = "green")
列名是一个建议,也许您有更好的变量名
为了具有图例,长格式的数据更易于处理。您可以尝试这样的事情:
df <- rbind(
cbind(XY[,c(1,2)], "group1"),
cbind(XY[,c(3,4)], "group2")
)
cols <- colnames(df)
将“ group1”和“ group2”更改为相关类别名称。
您可以这样绘制:
ggplot(data = df, aes_string(x = cols[1], y = cols[2], col = cols[3])) +
geom_point() +
geom_line() +
labs(color = "My colors")
我aes_string
之所以使用,是因为这一次引用了列名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句