以下代码用于在ggplot2
中生成相关矩阵热图 set.seed(1)
n <- 10
p <- 100
X <- matrix(rnorm(n*p), ncol=p)
R <- cor(X)
library("reshape2")
x <- melt(R)
colnames(x) <- c('row', 'col', 'cor')
library("ggplot2")
HM <- ggplot(x, aes(x=row, y=col, fill = cor)) + geom_tile()
HM <- HM + scale_fill_gradient2(low='red', mid ='white', high ='blue', midpoint=0, guide = "colourbar")
HM <- HM + scale_x_discrete(expand = c(0, 0))
HM <- HM + scale_y_discrete(expand = c(0, 0))
HM <- HM + coord_equal()
HM <- HM + labs(title = "Correlation Matrix") [![enter image description here][1]][1]
HM <- HM + theme(plot.title = element_text(hjust = 0.5),
axis.text=element_blank(),
axis.ticks=element_blank(),
axis.title=element_blank(),
plot.margin = unit(c(0,0,0,0), "cm"))
print(HM)
代码生成以下图片
很好,但我有两个问题
当我打印pdf时,白边的边缘是浪费空间,特别是当我把图形连成一行时。我尝试在mar
中使用oma
和par()
参数,但这不会产生任何差异。
右侧的图例不包括范围[-1,1],这是因为矩阵中的最小相关性大于-1。但是我仍然想要使用传奇来编码整个范围[-1,1]
如果可能的话,我想让传说框在顶部而不是在垂直轴的中心对齐,我的意思是我喜欢它从东北角开始向下。< / p>
有什么想法吗?
干杯 皮埃尔