【问题标题】:Converting a Number Matrix to a Color Matrix in R在 R 中将数字矩阵转换为颜色矩阵
【发布时间】:2015-08-18 11:49:58
【问题描述】:

我有以下包含数字 0-4 的 4x4 数字矩阵:

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

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

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

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

但我不知道从哪里开始把这些放在一起。我想我还必须指定颜色方块的尺寸。

我的目标是能够将具有多达 10 个数值的数据框导入 R,并为大至 20x20 的矩阵创建这些颜色图表。

【问题讨论】:

    标签: r matrix colors


    【解决方案1】:

    我会这样做:

    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)
    

    如果您希望方向不同,可以rotate the matrix

    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 您可以尝试将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)
    • 或者打开一个正方形尺寸的新窗口(例如windows(width=6,height=6)),然后将每边的边距设置为相同par(mar=c(1,1,1,1))
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2012-11-06
    • 2014-01-14
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多