gpt4 book ai didi

r - 使用两个离散变量绘制多个图 - 如何在两个轴中包含所有离散变量

转载 作者:行者123 更新时间:2023-12-03 19:02:58 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据集:

test<-data.frame("M"=c("a","b","c","a","b","b","c","a","b","c"), 
"N"=c(1,3,4,6,6,7,7,8,8,8),
"X"=c(0,1,0,1,1,0,1,0,1,1),
"Y"=c(1,1,0,0,1,0,1,1,1,0))

我正在制作一个简单的绘图,其中我想要 XY 在 y 轴上,M 在 x 轴上,每个网格如果 XY 的值为 1,则着色;如果 XY 的值为空,则为空0。我对 N 中的每个类别重复此操作(N 的类别是 1 到 567, 8), 然后将所有图堆叠在一起。现在,我正在使用以下代码执行此操作。

test <- test[order(test$N),]
test1 <- test[c(1:3),]
test2 <- test[c(4:5),]
test3 <- test[c(6:7),]
test4 <- test[c(8:10),] # I'm doing this to "separate" categories of `N` manually

p1 <- test1[,c(1,3:4)] %>%
gather(col_name, value, -M) %>%
ggplot(aes(factor(M), col_name, fill = value == 1))+
geom_tile(colour = 'black')+
scale_fill_manual(values = c('FALSE' = 'white', 'TRUE' = 'red'))
p2 <- test2[,c(1,3:4)] %>%
gather(col_name, value, -M) %>%
ggplot(aes(factor(M), col_name, fill = value == 1))+
geom_tile(colour = 'black')+
scale_fill_manual(values = c('FALSE' = 'white', 'TRUE' = 'yellow'))
p3 <- test3[,c(1,3:4)] %>%
gather(col_name, value, -M) %>%
ggplot(aes(factor(M), col_name, fill = value == 1))+
geom_tile(colour = 'black')+
scale_fill_manual(values = c('FALSE' = 'white', 'TRUE' = 'green'))
p4 <- test4[,c(1,3:4)] %>%
gather(col_name, value, -M) %>%
ggplot(aes(factor(M), col_name, fill = value == 1))+
geom_tile(colour = 'black')+
scale_fill_manual(values = c('FALSE' = 'white', 'TRUE' = 'blue'))

grid.arrange(p1, p2, p3, p4, ncol = 1)

the plot I have after running the code above

我附上了一张我现在拥有的图片。我想修复这些图,以便所有四个图都具有相同的 M 因子(现在,只有 p1p4 具有x 轴上的所有三个因子(abc),但我想将因子 c 添加到p2ap3 以便所有 x 轴彼此相同。任何人都可以就如何执行此操作给我建议吗?

(此外,我怀疑目前我正在策划事情的方式可能不是最快/最简单的方法,如果有人对如何改进事情有建议,那将非常有帮助!)

最佳答案

要继续使用 grid.arrange(),而不是 facet_wrap(),请执行以下操作:

使 M 成为一个因素:

test$M <- factor(test$M)

将以下内容添加到您的每个绘图中:

scale_x_discrete(limits = levels(test$M))

enter image description here

关于r - 使用两个离散变量绘制多个图 - 如何在两个轴中包含所有离散变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com