在R中将数字矩阵转换为颜色矩阵

11

我有一个包含数字0-4的4x4数字矩阵:

0  1  0  3
3  2  1  4
4  1  0  2
3  3  0  1

我想了解如何使用R将数字矩阵转换为颜色矩阵,使用选定的颜色和特定的方形尺寸(长度x宽度)。明确一下,我定义的颜色矩阵是使用彩色正方形代表矩阵方向中特定值的图形。下面是来自另一个程序的4x4示例:

enter image description here

我必须将数字分配给颜色代码,例如:

0 = FFFFFF
1 = 99FF66
2 = 66FF33
3 = 33CC00
4 = 009900

但是我不知道该从哪里开始组合这个。我想我也需要为颜色方块指定尺寸。

我的目标是能够将一个包含最多10个数值的数据框导入R,并为最大大小为20x20的矩阵创建这些颜色图表。

1个回答

11

以下是我的建议:

d<-read.table(text="
0  1  0  3
3  2  1  4
4  1  0  2
3  3  0  1")

cols <- c(
'0' = "#FFFFFF",
'1' = "#99FF66",
'2' = "#66FF33",
'3' = "#33CC00",
'4' = "#009900"
)
# the names aren't necessary here.

image(1:nrow(d), 1:ncol(d), as.matrix(d), col=cols)

在这里输入图片描述

如果您希望方向不同,您可以旋转矩阵

image(1:nrow(d), 1:ncol(d), t(apply(d, 2, rev)), col=cols)

为了消除所有的文本和边框,您可以尝试以下操作:
image(1:nrow(d), 1:ncol(d), as.matrix(d), col=cols, 
  xaxt="n", yaxt="n", bty="n", xlab="", ylab="")

我使用以下代码生成了一个没有文本和边框的颜色矩阵:image(1:nrow(d), 1:ncol(d), t(apply(d, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n')它的效果非常好!我现在唯一遇到的问题是,方块有点长方形。有没有办法锁定纵横比,使得颜色方块保持完美的正方形? - Cameron
3
你可以尝试将asp=1作为image函数的一个参数添加进去:image(1:nrow(d), 1:ncol(d), t(apply(d, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)。这样做能够使图像比例更为准确,并且保持原始意思不变。 - Jota
1
或者打开一个正方形尺寸的新窗口(例如 windows(width=6,height=6)),然后将边距设置为每个方向相同 par(mar=c(1,1,1,1)) - thelatemail

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