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

时间:2018-11-25 18:42:31

标签: r lattice levelplot cellular-automata

大家下午好!

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

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

import numpy as np

In [335]: df
Out[335]: 
     VE  load_value
0  0.59        31.0
1  0.66        26.7
2  0.57        47.5
3  0.54        70.2
4  0.59        45.1
5  0.85        31.0
6  0.94        33.7
7  0.97        32.9
8  0.96        32.9

In [336]: df['label'] = np.where((df.VE <1.3) & (df.VE >= 0.9) & (df.load_value >=20) & (df.load_value <50), 1, -1)

In [337]: df
Out[337]: 
     VE  load_value  label
0  0.59        31.0     -1
1  0.66        26.7     -1
2  0.57        47.5     -1
3  0.54        70.2     -1
4  0.59        45.1     -1
5  0.85        31.0     -1
6  0.94        33.7      1
7  0.97        32.9      1
8  0.96        32.9      1

随着自动机逐步更改,可能会丢失1个或2个状态。这意味着矩阵可以从状态(0,1,2,3)转换为状态(0,1,2)或(1,2)。

我尝试将彩色矩阵的几个图像分别嵌入4个状态与3个状态,但是由于这是我第一次在此处发布问题,因此很可能它们会显示为图像(希望它能起作用! )。

具有4种状态的水平图:

levelplot with 4 states

具有3种状态的水平图:

levelplot with 3 states

当存在4种状态时,状态2显示为白色,但是当仅保留3种状态(第二张图片)时,状态2显示为蓝色。

我的问题是:如果一个或多个状态消失,如何防止颜色偏移?

我刚刚开始学习使用R进行编码,因此最近该页面非常有用。感谢所有使这个地方活着的人!

1 个答案:

答案 0 :(得分:0)

at自变量用于levelplot。例如:

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

enter image description here

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

enter image description here

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