我通常使用 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")
这会生成以下图像:
我希望标签 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)
这是我使用一些“真实”数据所追求的效果......
编辑:
作为备份,如果这在 ggplot2 中是可能的,我可能愿意重构我的代码。还有几个其他应用程序我也会使用它。
我想出了一种在旧标签顶部绘制一层红色符号的方法,但如果可能的话,我更喜欢使用颜色矢量的本机方法......
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
有关适用于...的解决方案,请参见下文