如何调整R语言中矩阵的绘图顺序以匹配预期布局?
解决矩阵图像绘制的行列顺序问题
Base R 的调整方法
image()函数默认会转置矩阵,且y轴方向从下到上,要实现矩阵第一行在顶部、从左到右排列的效果,需做两步调整:
- 转置原矩阵抵消函数自带的转置行为
- 通过
ylim参数反转y轴显示顺序,让矩阵第一行对应图像顶部
示例代码:
A <- matrix(c(1,2,2,2,3,4), byrow=T, nrow=2) A # 调整后的绘图代码 image(t(A), ylim = c(nrow(A), 1))
ggplot2 的调整方法
geom_raster()默认将矩阵第一行绘制在图像底部,核心是y轴顺序问题,两种调整方式:
方法1:反转y轴刻度
用scale_y_reverse()反转y轴,使矩阵行号从大到小显示,第一行自然出现在顶部:
library(ggplot2) library(reshape2) A <- matrix(c(1,2,2,2,3,4), byrow=T, nrow=2) longData <- reshape2::melt(A) ggplot(longData, aes(x=Var2, y=Var1)) + geom_raster(aes(fill=as.factor(value))) + scale_y_reverse()
方法2:颠倒行号映射
在aes()中直接将y轴映射为rev(Var1),颠倒行的顺序:
ggplot(longData, aes(x=Var2, y=rev(Var1))) + geom_raster(aes(fill=as.factor(value)))
内容的提问来源于stack exchange,提问作者user214476
相关产品推荐
相关产品推荐

