R 如何修复超出边界的热图图例?

R 如何修复超出边界的热图图例?,r,pheatmap,R,Pheatmap,我想增加热图的字体大小,但我发现当lengend名称较长而图例组名称较短时,图例很容易超出页边空白。以下是一个例子: test = matrix(rnorm(200), 20, 10) test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3 test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2 test[15:20, seq(2, 10, 2)] = test[15:20

我想增加热图的字体大小,但我发现当lengend名称较长而图例组名称较短时,图例很容易超出页边空白。以下是一个例子:

test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")

annotation_col = data.frame(
  C = factor(rep(c("longCT1", "longCT2"), 5))
)
rownames(annotation_col) = paste("Test", 1:10, sep = "")
pheatmap::pheatmap(test, 
         annotation_col = annotation_col,
         cluster_cols = F,
         scale = "row", 
         fontsize = 20)
您可以看到图例名
C
较短,而长组名
longCTx
较长,当设置大字体时,它将超出边距:


因此,在这种情况下,当我想增加热图的字体大小时,如何修复它?

一个简单的解决方案是在组名的末尾添加一些空格。见下文:

# Add blanks to groups names
annotation_col = data.frame(
  C = factor(rep(c("longCT1    ", "longCT2    "), 5))
)
rownames(annotation_col) = paste("Test", 1:10, sep = "")
pheatmap::pheatmap(test, 
         annotation_col = annotation_col,
         cluster_cols = F,
         scale = "row", 
         fontsize = 20)

不错的尝试!但这听起来很棘手。为什么R会忽略超出边距的空间?这真是令人困惑。