gpt4 book ai didi

r - 根据另一个变量改变 R 中轴标签的颜色

转载 作者:行者123 更新时间:2023-12-03 23:34:01 25 4
gpt4 key购买 nike

我通常使用 ggplot2,但在这种情况下,我使用常规 image()绘制大型数据集的热图的函数。我可以将所有标签标记为红色,但我想根据我生成的颜色定义向量用不同颜色的文本标记 y 轴:

grid = structure(c(1:12),.Dim = c(4,3))
labs = c("A","B","C")
image(1:4,1:3,grid,axes=FALSE, xlab="", ylab = "")
#This works but isn't the colors I want
axis(2,at=1:length(labs),labels=labs,las=2, adj=1,cex.axis=0.6,col.axis="red")

这会生成以下图像:

Example plot

我希望标签 A 和 C 为黑色,B 为红色。这是我尝试过的,但它给出了“错误的长度”错误......
axiscolors = c("black","red","black")
axis(2,at=1:length(labs),labels=labs,las=2, adj=1, cex.axis=0.6, col.axis=axiscolors)

这是我使用一些“真实”数据所追求的效果......

actual heatmap

编辑:

作为备份,如果这在 ggplot2 中是可能的,我可能愿意重构我的代码。还有几个其他应用程序我也会使用它。

我想出了一种在旧标签顶部绘制一层红色符号的方法,但如果可能的话,我更喜欢使用颜色矢量的 native 方法......
sublabs = c("B")
axis(2,at=match(sublabs,labs),labels=sublabs,las=2, adj=1, cex.axis=0.6, col.axis="red")

另一种方法是使用 text()如果我可以将标签放在绘图空间之外...
text(c(1,1,1),c(1,2,3),labs,col=c("black","red","black"))

更新:请参阅下文了解适用于 ggplot2 的解决方案...

最佳答案

如果你忽略像 text 这样的矢量化可能性和 mtext ,您可以反复调用axis .时间上的开销将非常小,它将允许所有 axis像通常那样进行计算。例如。:

# original code
grid = structure(c(1:12),.Dim = c(4,3))
labs = c("A","B","C")
image(1:4,1:3,grid,axes=FALSE, xlab="", ylab = "")
axiscolors = c("black","red","black")

# new code
Map(axis, side=2, at=1:3, col.axis=axiscolors, labels=labs, lwd=0, las=1)
axis(2,at=1:3,labels=FALSE)

导致:

enter image description here

关于r - 根据另一个变量改变 R 中轴标签的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18839731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com