У меня есть данные температуры netcdf. Я хочу построить два изображения (первый максимальный темп и второй средний темп), используя полевой пакет в R с помощью функции image.plot. Я хочу, чтобы сетки в 1-м изображении имели значение больше, чем 300K, показывали знак креста/звезды на сетках второго изображения.Как добавить символы (крест, знак звезды, цифры 1/2 ..) на некоторых сетках изображения с использованием image.plot в R?
0
A
ответ
0
Если вы укажете x и y, то очень легко получить индексы, которые удовлетворяют критериям в первой матрице, чтобы затем поместить символ на второй. Ниже приводится тривиальный пример.
Во-первых, составляем данные.
library(fields)
test <- matrix(runif(100),ncol=10)
test2 <- matrix(1:100, ncol=10)
Затем мы можем настроить среду построения и визуализировать данные.
layout(matrix(c(1,2),ncol=2))
image.plot(x=1:10, y=1:10, z=unlist(test))
image.plot(x=1:10, y=1:10, z=unlist(test2))
Затем мы определяем, какие ячейки удовлетворяют критериям, превышающим 0,75 (это произвольно).
inds <- which(test > 0.75, arr.ind=TRUE)
Тогда мы можем использовать points
, чтобы добавить символ звезды в центре клетки в test2
, в которых наши критерии из матрицы test
удовлетворяется.
points(x=inds[,1], y=inds[,2], pch=8)
"точки (х = аким [1], у = аким [2], PCH = 8)" это не работает. Может быть из-за lat-long на месте значений x & y. –
Я бы порекомендовал не использовать image.plot для работы с пространственными данными. Вы можете использовать пакет «растр», чтобы сделать что-то похожее на image.plot, а затем наложить пространственные точки с помощью команды точек так же, как я сделал в своем ответе. Пакет 'raster' имеет собственную структуру данных, но он относительно интуитивно понятен. values (rasterObject) даст вам значения, а координаты (rasterObject) предоставят вам координаты (если у вас есть память для выполнения этих операций). –