一个简单的问题,我似乎找不到答案。我正在尝试从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()
如何翻转绘图,使对角线与上面的数字矩阵匹配?我尝试了coord_flip()和scale_x_discrete(position =“ top”),但都没有解决问题。
有什么建议吗? 谢谢
答案 0 :(得分:2)
有几种方法,但也许最简单的方法是反转Var2
的因子水平,一种方法是使用forcats::fct_rev
:
ggplot(reshape2::melt(s), aes(Var1, forcats::fct_rev(Var2), fill=value)) + geom_raster()
请参阅重复的目标以获取其他一些选项。