r - 您如何遍历所有列以在 ggplot 中绘制多个系列?
问题描述
我已经在列中格式化了一些数据,我希望制作一个折线图,其中单个 x 轴针对许多列绘制。每列 (Y1, Y2, ...Y500) 输出不同的行。
如何遍历所有列以为每个 X1:Yn 组合创建一个系列,同时保持相同的 x 轴?
目前,我有以下代码,但确实想手动添加所有 500 列。
plot <- ggplot(data=myData) + geom_point(aes(x=X1, y=Y1, color="blue")) + geom_point(aes(x=X1, y=Y2, color="red"))
解决方案
您可以将 Y 堆叠成一列(并相应地堆叠/重复 x),并创建第二列 - 一个因子 - 指示变量(查看 tidyr::pivot_longer)。拥有该数据框后,您可以执行以下操作:
ggplot = (data=df, aes(x=x, color=factor)) + geom_line()
# Assuming the data frame is called "df", the x column is "x", and the indicator of variable is "factor"
另一种方法(但第一种可能更好)是做一个循环:
g = ggplot(data=df, aes(x=x))
for(i in 1:ncol(df)){
g + geom_line(aes(y=df[,i]))}
plot(g)
推荐阅读
- hibernate - 如何忽略 Hibernate 中的列名
- c# - 相机仅在 Z 轴 Unity 3D 上跟随玩家
- code-coverage - 如何在 TFS 2017 Build 中发布多个 Cobertura.xml 文件的代码覆盖率结果?
- ruby - 如何在 Github 上找到使用特定 Ruby gem 的应用程序?/包含特定的代码行?
- jenkins - 如何从我的程序或从集中运行的服务以编程方式更新 Jenkins 进度条?
- c - 如何读取字符串
- c# - 检查字符串是否出现其他字符串并使用 C# 相应地更改字符串的有效方法
- rabbitmq - 如何防止客户端在 RabbitMQ 中发送没有 user_id 属性的消息
- flask - 更改 VS Code 中的代码后,FLASK 不会重新加载
- node.js - 函数不是函数