R 中的元胞自动机 - 消失状态在水平图中改变颜色

Cellular Automaton in R - disappearing states change color in levelplot

大家下午好!

目前正在研究 R 中的元胞自动机(适用于入侵物种的流行病建模)。单元格可以处于 4 种不同的状态:0、1、2、3。到目前为止,我已经绘制了矩阵图(使用 levelplot),并观察它以固定的步数变化(根据设定的规则和每种邻居的数量)。

代码如下(未显示整个脚本):

matriu # matrix with cells in either state (0,1,2,3)
colors  <- colorRampPalette(c("green", "red", "white", "blue"))
graph   <- levelplot(matriu, col.regions = colors, cuts = 3)
print(graph)

随着自动机一步步变化,有可能失去1或2个状态。这意味着矩阵可以从状态 (0,1,2,3) 转变为状态 (0,1,2) 或 (1,2)。

我尝试嵌入一些彩色矩阵的图像,其中有 4 个状态与 3 个状态,但由于这是我第一次在这里发布问题,显然它们会显示为图像(希望它有效!)。

具有 4 个状态的水平图:

具有 3 个状态的水平图:

当存在4个状态时,状态2显示为白色,但当只剩下3个状态时(第二张图),状态2显示为蓝色。

我的问题是:如果一种或多种状态消失,如何防止颜色发生变化?

我刚开始学习使用 R 编写代码,因此此页面最近非常有用。感谢所有让这个地方保持活力的人!

levelplot 使用 at 参数。例如:

library(lattice)
set.seed(123)
matriu <- matrix(sample(0:3, 100, replace = TRUE), nc = 10)
colors  <- colorRampPalette(c("green", "red", "white", "blue"))
graph   <- levelplot(matriu, col.regions = colors, at = c(-.1, .5:2.5, 3.1))
graph

matriu <- matrix(sample(1:2, 100, replace = TRUE), nc = 10)
graph   <- levelplot(matriu, col.regions = colors, at = c(-.1, .5:2.5, 3.1))
graph

P.s。欢迎来到 SO——请尝试为您的问题提供一个最小的工作示例(例如 matriu 的一些虚假数据)。