R 如何使用ggplot在同一个图形上绘制多个数据帧
我有36个不同的数据帧,其中包含dX和dY变量。我已经将它们存储在一个列表中,并希望以x=dX和y=dY在同一个图形上显示它们 36个数据帧不共享相同的dX值。它们大致覆盖相同的范围,但没有完全相同的值,因此使用合并会创建大量NA值。然而,行数是相同的 我尝试了一些几乎奏效的丑陋的东西:R 如何使用ggplot在同一个图形上绘制多个数据帧,r,ggplot2,R,Ggplot2,我有36个不同的数据帧,其中包含dX和dY变量。我已经将它们存储在一个列表中,并希望以x=dX和y=dY在同一个图形上显示它们 36个数据帧不共享相同的dX值。它们大致覆盖相同的范围,但没有完全相同的值,因此使用合并会创建大量NA值。然而,行数是相同的 我尝试了一些几乎奏效的丑陋的东西: g <- ggplot() for (i in 1:36) { g <- g + geom_line(data = df.list[[i]], aes(dX, dY, colour = i))
g <- ggplot()
for (i in 1:36) {
g <- g + geom_line(data = df.list[[i]], aes(dX, dY, colour = i))
}
print(g)
这里有几个问题:
- “variable”总是等于dY。我所期望的是索引 列表中的数据帧(存储在L1中),甚至 更好的是,函数名的结果(i)
- 曲线使用连续比例,范围从1到36,而我需要离散比例
- 最后,使用geom_line()似乎不会单独绘制数据帧曲线,而是将不同数据集的点链接在一起
你知道如何解决我的问题吗?看起来最简单的方法是创建一个数据框(如其中一位评论者所建议的),并使用源数据框的索引作为
颜色的索引:
library(dplyr) # For bind_rows() function
ggplot(bind_rows(df.list, .id="id"), aes(dX, dY, colour=id)) +
geom_line()
在上面的代码中,.id=“id”
导致bind_rows
包含一个名为id
的列,其中包含包含每个数据帧的列表元素的名称。看起来最简单的选择是创建一个数据帧(如一位评论员所建议的那样)并使用颜色的源数据帧索引:
library(dplyr) # For bind_rows() function
ggplot(bind_rows(df.list, .id="id"), aes(dX, dY, colour=id)) +
geom_line()
在上面的代码中,.id=“id”
会使绑定行
包含一个名为id
的列,其中包含包含每个数据帧的列表元素的名称。我会将data.frame组合成一个大的data.frame,添加一个id列,然后使用ggplot进行打印。有很多方法可以做到这一点,这里有一个:
newDF <- do.call(rbind, list.df)
newDF$id <- factor(rep(1:length(df.list), each = sapply(df.list, nrow)))
g <- geom(newDF, aes(x = dX, y = dY, colour = id)
g <- g + geom_line()
print(g)
newDF我将把data.frame合并成一个大的data.frame,添加一个id列,然后用ggplot绘图。有很多方法可以做到这一点,这里有一个:
newDF <- do.call(rbind, list.df)
newDF$id <- factor(rep(1:length(df.list), each = sapply(df.list, nrow)))
g <- geom(newDF, aes(x = dX, y = dY, colour = id)
g <- g + geom_line()
print(g)
newDF循环方法的一个问题是根据i
设置颜色。R将在i达到9或10后开始回收颜色,请参见以下示例:绘图(1:20,col=1:20,pch=19)
。要更改颜色,您需要手动创建一个颜色向量来循环,通过它您可以从colors()
中看到。这将返回RIt中所有可用的颜色,但实际上它不是在9或10之后循环,图形上只有一种颜色…您的数据具有相同的ColName吗?我将通过rbind data.frame列表创建一个唯一的data.frame,其中有一列存储数据源的编号(1到36)。然后我会用ggplotOK绘制这些数据,我明白你的意思了。尝试将col参数移到geom_行中aes选项之外<代码>g将颜色置于aes选项之外会有所帮助!我现在有很多颜色。。。但是没有传说。。。如何设置图例,使颜色与函数名(I)计算的名称相关联?循环方法的一个问题是将颜色设置为基于I
更改。R将在i达到9或10后开始回收颜色,请参见以下示例:绘图(1:20,col=1:20,pch=19)
。要更改颜色,您需要手动创建一个颜色向量来循环,通过它您可以从colors()
中看到。这将返回RIt中所有可用的颜色,但实际上它不是在9或10之后循环,图形上只有一种颜色…您的数据具有相同的ColName吗?我将通过rbind data.frame列表创建一个唯一的data.frame,其中有一列存储数据源的编号(1到36)。然后我会用ggplotOK绘制这些数据,我明白你的意思了。尝试将col参数移到geom_行中aes选项之外<代码>g将颜色置于aes选项之外会有所帮助!我现在有很多颜色。。。但是没有传说。。。如何设置图例,使颜色与函数名(I)计算的名称相关联?