R 如何在使用“打印时为矩阵中的一组单元格着色”;图.矩阵“;

R 如何在使用“打印时为矩阵中的一组单元格着色”;图.矩阵“;,r,matrix,plot,R,Matrix,Plot,有一个矩阵,其值如下 2 3 4 4 9 16 8 18 32 我正试图借助此软件包绘制此矩阵[https://cran.r-project.org/web/packages/plot.matrix/vignettes/plot.matrix.html#missing-值和超出范围的矩阵项] 我想使用一些测试用例为每个特定的单元格着色。例如: For each cell in the matrix, if ( number == prime ) then color

有一个矩阵,其值如下

2   3   4
4   9   16
8   18  32
我正试图借助此软件包绘制此矩阵[https://cran.r-project.org/web/packages/plot.matrix/vignettes/plot.matrix.html#missing-值和超出范围的矩阵项]

我想使用一些测试用例为每个特定的单元格着色。例如:

For each cell in the matrix,
 if ( number == prime )
  then color that particular cell as blue. 
但该库只提供了根据一组范围使用不同颜色的打断的选项

是否可以根据某些公式根据每个单元格内的值进行着色??有什么解决办法吗?或者,如果不是通过这个库,那么可以通过其他方式来实现

谢谢你的帮助
谢谢

就我个人而言,我会使用ggplot来实现这一点,特别是,
geom\u tile
。首先,为了满足您的需求,我们需要重新创建您的矩阵:

mat[,1][,2][,3]
#> [1,]    2    3    4
#> [2,]    4    9   16
#> [3,]    8   18   32
接下来,我们需要一个函数来测试每个条目是否为素数:

is.prime <- function(x) 
{
  sapply(x, function(n) {
    n == 2L || all(n %% 2L:ceiling(sqrt(n)) != 0)
  })
}
生成的数据帧如下所示,表示原始矩阵,其中一列分别表示原始行号、原始列号、该位置的单元格包含的值,以及指定该值是否为素数的新列:

is.prime <- function(x) 
{
  sapply(x, function(n) {
    n == 2L || all(n %% 2L:ceiling(sqrt(n)) != 0)
  })
}
头部(df)
#>Var1 Var2的值是_素数
#>1 2正确
#>2 1 4错误
#>3 3 1 8错误
#>4 1 2 3正确
#>5 2 9错误
#>6 3 2 18错误
现在,我们可以使用
ggplot2
的全部功能进行绘图:

ggplot(df,aes(Var1,Var2,fill=is_prime))+
geom_瓷砖(颜色=“黑色”)+
几何图形文字(aes(标签=值),尺寸=10)+
比例尺y反方向()+
coord_equal()+
主题_void()+
刻度填充手册(数值=c(“白色”、“深蓝”),导轨=导轨无()

谢谢,除了上述颜色,是否还可以为单元格添加另一种颜色,以便在单元格为整数时用红色突出显示?我尝试使用另一个geom_磁贴,但这会覆盖上一个磁贴…我是否必须以某种方式分割数据并将其分别提供给ggplot?@秘密在于填充值只有一列。这可以是一个字符或因子列,其中包含您喜欢的任何内容。例如,您可以使所有偶数包含字符串“is偶数”、带“is全数”的整数、带“is素数”的素数。只要你能定义一个数学函数来子集适当的行(就像我对“is_prime”所做的那样)