我有很多图,其中出现了类别的不同组合。因此,例如,图1具有类别A,B,D,图2具有类别A,C,D,图3具有类别A,B,C,D。我如何告诉ggplot为相同类别使用相同的形状和颜色每个情节?
我的设置基本上是这样的:
df1 <- as.data.frame(cbind(sample(4), sample(4), c("A", "A", "B", "D")))
df2 <- as.data.frame(cbind(sample(4), sample(4), c("B", "C", "C", "D")))
df3 <- as.data.frame(cbind(sample(4), sample(4), c("A","B", "C", "D")))
df.lst <- list(df1, df2, df3)
plt.lst <- list()
for(df in df.lst){
plt <- ggplot(df, aes(x=V1, y=V2, color=V3, shape=V3)) +
geom_point()
plt.lst[[length(plt.lst)+1]] <- plt
}
grid.arrange(grobs=plt.lst)
为我提供了具有不同形状/颜色的相同类别:(
答案 0 :(得分:1)
使用@markus的建议,在创建3x1图(由facet_wrap()
提供)之前将所有数据帧绑定到一个df
中,将使您可以在具有不同图形的图形中看到相同的形状/颜色类别组合。
# load necessary package -------
library(tidyverse)
# collapse individual data frames into one --------
# so that your data is tidy
df <-
list(df1 = data.frame(cbind(sample(4), sample(4), c("A", "A", "B", "D")))
, df2 = data.frame(cbind(sample(4), sample(4), c("B", "C", "C", "D")))
, df3 = data.frame(cbind(sample(4), sample(4), c("A","B", "C", "D")))) %>%
bind_rows(.id = "origin")
# create a 3x1 plot -------
df %>%
ggplot(aes(x = X1, y = X2, color = X3, shape = X3)) +
geom_point() +
facet_wrap(facets = vars(origin), nrow = 3, ncol = 1)
# end of script #