R:如何根据具有不同列名的数据组合ggplots
Posted
技术标签:
【中文标题】R:如何根据具有不同列名的数据组合ggplots【英文标题】:R: how to combine ggplots basd on data with different column names 【发布时间】:2022-01-13 17:27:05 【问题描述】:下面的两个 ggplots 单独工作,但我想将它们组合到一个图例中,其中 df2
中的行的 Group
变量出现在图例中。
library(ggplot2)
df1 <- data.frame(x = 1:10, y = 1:10)
df2 <- data.frame(x = rep(1:10,2),
y = c(seq(1,2,length.out = 10),
seq(5,6,length.out = 10)),
Group = c(rep("A",10),rep("B",10))
)
p1 <- ggplot(data = df1, aes(x = x, y = y)) +
geom_point()
p2<- ggplot(data = df2, aes(x = x, y = y,
group = Group, color = Group)) +
geom_line()
问题是由 2 个数据框具有不同的列名引起的。因此,我无法生成 2 个图并像 p1 + p2
那样添加它们,因为它是在之前已在此处发布的其他解决方案中完成的。
【问题讨论】:
【参考方案1】:首先,在ggplot2
中,每一层都有自己的本地data
参数,即您可以将不同的数据集传递给每一层。如果您没有为图层设置data
参数,它将简单地继承ggplot()
(如果有)中设置的全局数据集,即您可以通过将+ geom_line(data = df2, aes(group = Group, color = Group))
添加到您的第一个图来将您的图合并为一个。
其次,如果您的数据集有不同的列名,那也没什么大不了的。与data
参数一样,每一层都有自己的(本地)美学集。如果未设置,图层将继承ggplot()
中设置的全局美学,即使用不同的列名,您只需告诉哪些列应映射到每层的美学上。
稍微更改了您的示例数据:
library(ggplot2)
df1 <- data.frame(x1 = 1:10, y1 = 1:10)
df2 <- data.frame(x2 = rep(1:10,2),
y2 = c(seq(1,2,length.out = 10),
seq(5,6,length.out = 10)),
Group = c(rep("A",10),rep("B",10))
)
ggplot(data = df1, aes(x = x1, y = y1)) +
geom_point() +
geom_line(data = df2, aes(x = x2, y = y2, group = Group, color = Group))
【讨论】:
以上是关于R:如何根据具有不同列名的数据组合ggplots的主要内容,如果未能解决你的问题,请参考以下文章
使用 ggplot 在 R 中绘制组合 shapefile 时出现问题,未给出定义错误