作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的数据集:
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))
我正在制作一个简单的绘图,其中我想要 X
和 Y
在 y 轴上,M
在 x 轴上,每个网格如果 X
或 Y
的值为 1
,则着色;如果 X
或 Y 的值为空,则为空
为 0
。我对 N
中的每个类别重复此操作(N
的类别是 1 到 5
、6
, 7
, 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)
我附上了一张我现在拥有的图片。我想修复这些图,以便所有四个图都具有相同的 M
因子(现在,只有 p1
和 p4
具有x 轴上的所有三个因子(a
、b
和 c
),但我想将因子 c
添加到p2
和 a
到 p3
以便所有 x 轴彼此相同。任何人都可以就如何执行此操作给我建议吗?
(此外,我怀疑目前我正在策划事情的方式可能不是最快/最简单的方法,如果有人对如何改进事情有建议,那将非常有帮助!)
最佳答案
要继续使用 grid.arrange()
,而不是 facet_wrap()
,请执行以下操作:
使 M
成为一个因素:
test$M <- factor(test$M)
将以下内容添加到您的每个绘图中:
scale_x_discrete(limits = levels(test$M))
关于r - 使用两个离散变量绘制多个图 - 如何在两个轴中包含所有离散变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251644/
我是一名优秀的程序员,十分优秀!