如何将热力图的Y轴放在左侧?

10

如何制作一个左边带有 Y 轴标签的热力图?默认情况下,它似乎在右边。我需要使用 axis() 制作自定义轴吗?

1个回答

9
heatmap 函数中,轴的位置是硬编码的。但只需更改一个数字就可以将其定位在另一侧,非常容易。在控制台键入 "heatmap" 并将第一个参数从第二个 axis() 调用中的 4 更改为 2。
我所做的全部更改只有:
axis(2, iy, labels = labRow, las = 2, line = -0.5, tick = 0,  # the 2 used to be 4
         cex.axis = cexRow)

仍需要调整边距以适应切换。将当前值0更改为5似乎在我从帮助页面中玩耍的示例中创建了足够的空间:

...
par(mar = c(margins[1L], 5, 0, margins[2L]))

这是我的测试案例:
x  <- as.matrix(mtcars)
rc <- rainbow(nrow(x), start=0, end=.3)
cc <- rainbow(ncol(x), start=0, end=.3)
utils::str(hv) # the two re-ordering index vectors

## no  dendrogram (nor color strip)
heatmap.new(x, Colv = NA, Rowv=NA, col = cm.colors(256), scale="column",
        margins=c(5,2),
        xlab = "specification variables", ylab= "Car Models",
        main = "heatmap(<Mtcars data>, ..., scale = \"column\")")

注意:我注意到了side =参数并进行了更改。结果相同,没有轴标签。这可能是与margins有关的问题吗?热图似乎被挤在图像的左上角。我会继续尝试。我认为我们正在正确的轨道上。谢谢! - James
不确定为什么你使用了3。那将是顶部。你可能需要更完整地说明你做了什么。我的答案假设你知道如何从现有代码创建新函数。我确实得到了一个换边的开关,尽管你仍然需要使用par()调整边距。 - IRTFM
我在x轴上使用了3,在y轴上使用了2,因为我想让它们分别位于顶部和左侧。 - James
我猜我们需要看看你的代码。我得到了左标签。我会发布我改变的那一行。 - IRTFM
我必须拉伸图形窗口才能看到它,但它有效!谢谢。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接