如何从R中的ggplot翻转geom_raster?

时间:2019-10-22 18:08:37

标签: r ggplot2

一个简单的问题,我似乎找不到答案。我正在尝试从R中的ggplot旋转geom_raster图。这是我的意思的示例:

首先,我创建了一个像这样的矩阵:

set.seed(1701)
a <- sample(1:10,100, replace=TRUE)
s <- matrix(a, nrow = 5, ncol=5)
s[upper.tri(s)] = t(s)[upper.tri(s)]
colnames(s)<- paste0("x", 1:5)
rownames(s)<- paste0("x", 1:5)
diag(s) <- 0
s 

将生成此矩阵,其中对角线= 0从左上角开始:

   x1 x2 x3 x4 x5
x1  0  8  1  6 10
x2  8  0  7  1  7
x3  1  7  0  3  8
x4  6  1  3  0  9
x5 10  7  8  9  0

但是当我使用以下方式绘制它时:

ggplot(melt(s), aes(Var1,Var2, fill=value)) + geom_raster()

我明白了: geom_raster() plot

如何翻转绘图,使对角线与上面的数字矩阵匹配?我尝试了coord_flip()和scale_x_discrete(position =“ top”),但都没有解决问题。

有什么建议吗? 谢谢

1 个答案:

答案 0 :(得分:2)

有几种方法,但也许最简单的方法是反转Var2的因子水平,一种方法是使用forcats::fct_rev

ggplot(reshape2::melt(s), aes(Var1, forcats::fct_rev(Var2), fill=value)) + geom_raster()

请参阅重复的目标以获取其他一些选项。