r - 如何在R中的同一图中绘制矩阵的几列?
问题描述
我有一个名为 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
,是因为这次引用了列名。
推荐阅读
- windows - 我安装 Nim 没有任何问题,但它给了我这个错误,我该怎么办?
- javascript - 滚动时如何替换粘性元素?
- javascript - “TypeError:使用 multer 上传用户个人资料照片时无法读取未定义的属性‘文件名’”
- r - 使用 case_when R 附加一个向量
- discord.js - if (fn(val, key, this)) 错误 (Discord.js)
- python - Python Selenium 不会选择所有图像标签
- wso2 - 如何启用 WSO2 IS 版本 5.11.0 的新 & beta GUI?
- swift - UIcollection 视图中未显示数据。我做错了什么
- python - Pycharm 在使用 OpenCV 和 Python3.9 的 macOS“Big Sur”上不显示图像预览
- snowflake-cloud-data-platform - 使用 matillion ETL for snowflake 将两个 json 语句合并为一个