【发布时间】:2021-06-25 16:50:36
【问题描述】:
我想在 R 中创建一个热图,类似于 SAS 的 proc sgplot 的输出,如下所示。
我能做的最好的就是
set.seed(1)
testdat <- data.frame(reader= c(rep(c("reader1","reader2","reader3"),each=6)),
case= c(rep(c("Case1","Case1","Case2","Case2","Case3","Case3"),3)),
q=c(rep(c("Q3","Q4"),18)),
value=ordered(sample(1:5,18,replace=T)))
> head(testdat,7)
reader case q value
1 reader1 Case1 Q3 1
2 reader1 Case1 Q4 4
3 reader1 Case2 Q3 1
4 reader1 Case2 Q4 2
5 reader1 Case3 Q3 5
6 reader1 Case3 Q4 3
7 reader2 Case1 Q3 2
用ggplot
library(ggplot)
testheat <- ggplot(testdat, aes(q,reader,fill=value,label=q)) +
geom_tile() +
facet_wrap(~case,scales="fixed") +
scale_fill_manual(values=c("white","lightgreen","green","indianred1","red")) +
scale_y_discrete(limits=rev) +
scale_x_discrete(position = "top")
创造
这...看起来并不令人印象深刻。如何使热图看起来像 sgplot 输出?
【问题讨论】:
-
你在问如何让这个情节看起来“令人印象深刻”?这到底是什么意思呢?您具体要更改哪些内容以使其看起来更像
sgplot? -
我应该更具体如你所说。我观察到的最明显的区别是标题和分隔图块的边界。瓷砖尺寸似乎更大,但在 geom_tile() 中改变尺寸似乎并没有“折叠”轴。但大多数情况下,我希望有一种比单独修改 ggplot 更简单的方法(可能是一个主题?另一个包?)。