Сотовый автомат в R - исчезающие состояния меняют цвет на графике уровня - PullRequest
0 голосов
/ 25 ноября 2018

Добрый день всем!

В настоящее время работаю над клеточным автоматом в R (моделирование эпидемии применительно к инвазивным видам).Ячейки могут находиться в 4 различных состояниях: 0, 1, 2, 3. До сих пор я сделал график (используя график уровней) матрицы и наблюдаю за ее изменением в течение фиксированного числа шагов (в соответствии с установленным правилом иколичество соседей каждого типа).

Код выглядит следующим образом (весь скрипт не показан):

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 состояниями:

levelplot with 4 states

График уровней с 3 состояниями:

levelplot with 3 states

Когда присутствуют 4 состояния, состояние 2 отображается белым,но когда остаются только 3 состояния (второе изображение), состояние 2 отображается синим цветом.

Мой вопрос: как предотвратить смещение цветов в случае исчезновения одного или нескольких состояний?

Я только начинаю учиться кодировать, используя R, так что эта страница была очень полезна в последнее время.Спасибо всем, кто поддерживает это место!

1 Ответ

0 голосов
/ 25 ноября 2018

Используйте аргумент 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 Добро пожаловать в SO -- попробуйте предоставить минимальный рабочий пример (например, некоторые поддельные данные для matriu) с вашим вопросом.

...