R 中的 Pheatmap:设置热图图例的固定限制

问题描述 投票:0回答:1

我正在 R 中使用 pheatmap 库。我正在为同一人群的不同时间点创建热图,因此我希望每个热图的图例比例是固定的(从 -2 到 2),以便可以轻松比较它们。然后,超出该范围的值将设置为 -2 或 2 的颜色。

Heatmap output

我尝试使用 legend_break 和 Legend_labels 函数设置固定范围,但它只更改图例上的标签,而不更改实际的比例限制本身。

# Set Legend Limits
legend_breaks <- seq(-2, 2, length.out = 21)  
legend_labels <- c("-2", rep("", 4), "-1", rep("", 4), "0",rep("", 4),"1",rep("", 4),"2")  

# Plot Heat Map
pheatmap(temp_m[,8:ncol(temp_m)],
    scale="column",
    annotation_colors = ann_colors,
    color=colorRampPalette(c("navy", "white", "red"))(20),
    main="Temp",
    cluster_rows = FALSE,
    cluster_cols = FALSE,
    show_rownames = FALSE,
    gaps_row = gaps,
    angle_col = 90,
    border_color = "grey",
    legend_breaks = legend_breaks,
    legend_labels = legend_labels,
    annotation_row = rows,
    # annotation_legend = TRUE,
    # annotation_names_row = TRUE,
    fontsize=11, cellwidth=10, cellheight=10)
r legend heatmap pheatmap
1个回答
2
投票

我刚刚有了一个关于如何在 R 中的 pheatmap 包制作的不同热图中获得相同比例的图例的解决方案。

根据您的情况,您可以尝试添加:

color = colorRampPalette(c("navy", "white", "red"))(20)

breaks = c( -2, -1.8, -1.6, -1.4, -1.2, -1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2)

如果将图例从 -10 缩放到 10,并且颜色数量从 20 增加到 50,则中断中的数字序列的间隔可能为 0.4 (20/50 = 0.4)。重点是,breaks中的序号的个数与颜色的个数相同。

pheatmap(temp_m[,8:ncol(temp_m)],
    scale="column",
    annotation_colors = ann_colors,
    color=color, breaks = breaks
    main="Temp",
    cluster_rows = FALSE,
    cluster_cols = FALSE,
    show_rownames = FALSE,
    gaps_row = gaps,
    angle_col = 90,
    border_color = "grey",
    legend_breaks = legend_breaks,
    legend_labels = legend_labels,
    annotation_row = rows,
    # annotation_legend = TRUE,
    # annotation_names_row = TRUE,
    fontsize=11, cellwidth=10, cellheight=10)
© www.soinside.com 2019 - 2024. All rights reserved.