大家下午好!
目前正在研究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种状态的水平图:
具有3种状态的水平图:
当存在4种状态时,状态2显示为白色,但是当仅保留3种状态(第二张图片)时,状态2显示为蓝色。
我的问题是:如果一个或多个状态消失,如何防止颜色偏移?
我刚刚开始学习使用R进行编码,因此最近该页面非常有用。感谢所有使这个地方活着的人!
答案 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
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
的一些虚假数据)。