2017-02-08 5 views
0

У меня есть данные температуры netcdf. Я хочу построить два изображения (первый максимальный темп и второй средний темп), используя полевой пакет в R с помощью функции image.plot. Я хочу, чтобы сетки в 1-м изображении имели значение больше, чем 300K, показывали знак креста/звезды на сетках второго изображения.Как добавить символы (крест, знак звезды, цифры 1/2 ..) на некоторых сетках изображения с использованием image.plot в R?

ответ

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) 

enter image description here

+0

"точки (х = аким [1], у = аким [2], PCH = 8)" это не работает. Может быть из-за lat-long на месте значений x & y. –

+0

Я бы порекомендовал не использовать image.plot для работы с пространственными данными. Вы можете использовать пакет «растр», чтобы сделать что-то похожее на image.plot, а затем наложить пространственные точки с помощью команды точек так же, как я сделал в своем ответе. Пакет 'raster' имеет собственную структуру данных, но он относительно интуитивно понятен. values ​​(rasterObject) даст вам значения, а координаты (rasterObject) предоставят вам координаты (если у вас есть память для выполнения этих операций). –

 Смежные вопросы

  • Нет связанных вопросов^_^