R - Контурная карта - PullRequest
       12

R - Контурная карта

4 голосов
/ 07 февраля 2012

Я составил контурную карту, но мне нужно внести некоторые улучшения.Это структура данных, которые используются:

str(lon_sst)
# num [1:360(1d)] -179.5 -178.5 -177.5 -176.5 -175.5 ...

str(lat_sst)
# num [1:180(1d)] -89.5 -88.5 -87.5 -86.5 -85.5 -84.5 -83.5 -82.5 -81.5 -80.5 ...

dim(cor_Houlgrave_SF_SST_JJA_try)
# [1] 360 180

require(maps)
maps::map(database="world", fill=TRUE, col="light blue")
maps::map.axes()
contour(x=lon_sst, y=lat_sst, z=cor_Houlgrave_SF_SST_JJA_try[c(181:360, 1:180),],
        zlim=c(-1,1), add=TRUE)
par(ask=TRUE)
filled.contour(x = lon_sst, y=lat_sst,
               z=cor_Houlgrave_SF_SST_JJA_try[c(181:360, 1:180),],
               zlim=c(-1,1), color.palette=heat.colors)

enter image description here enter image description here

Поскольку большинство корреляций близко к 0, очень трудно увидеть большиеединицы.

  1. Могу ли я упростить просмотр или изменить разрешение, чтобы увеличить его?В настоящий момент контуры слишком плотно разнесены, поэтому я не вижу, какими были уровни контуров.

  2. Где я могу увидеть приращение, я установил свой диапазон как (-1,1), я не знаю, как установить интервал вручную.

  3. Может кто-нибудь сказать мне, как построить конкретную область карты, например, долготу от 100 до 160 и широту от -От 50 до -80?Я попытался заменить lon_sst и lat_sst, но у него есть ошибка измерения.Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

Чтобы ответить на вопросы 1 и 3, которые выглядят одинаково, попробуйте:

maps::map(database="world", fill=TRUE, col="light blue", 
                            ylim=c(-80, -50), xlim=c(100,160) )

По адресу 2: у вас гораздо меньший диапазон, чем [-1,1]. Метки на этих линиях контура представляют собой числа, такие как .06, -.02 и .02. Функция contour принимает аргумент 'nlevels' или 'level'. После того, как у вас есть взорванный участок, вы можете использовать его для настройки z-разрешения контуров.

2 голосов
/ 08 февраля 2012

contourplot в пакете lattice также позволяет создавать контурные графики этих типов, что облегчает как контурные линии, так и заливку цветов.Это может или не может соответствовать вашим потребностям, но, заполнив интервалы между контурами, вы можете избавиться от текстовых меток, которые могут стать немного переполненными, если вы хотите иметь контуры с высоким разрешением.

У меня нет ваших данных о температуре поверхности моря, поэтому на следующем рисунке используются фиктивные данные, но вы должны получить нечто подобное.См. ?contourplot и ?panel.levelplot для возможных аргументов.

Для желаемого мелкомасштабного графика наложение карты мира, вероятно, неуместно, особенно с учетом того, что интересующая область находится в океане.

library(lattice)
contourplot(cor_Houlgrave_SF_SST_JJA_try, region=TRUE, at=seq(-1, 1, 0.25), 
  labels=FALSE, row.values=lon_sst, column.values=lat_sst,
  xlim=c(100, 160), ylim=c(-80, -50), xlab='longitude', ylab='latitude')

Здесь аргумент at контролирует положение значений, при которых будут рассчитываться и наноситься линии контура (и, следовательно, количество разрывов в цветовой шкале).В моем примере контурные линии представлены в -0,75, -0,5, -0,25, 0, 0,25, 0,5, 0,75 и 1 (с -1 в качестве фона).Например, изменение на at=seq(-1, 1, 0.5) приведет к получению контурных линий при -0,5, 0, 0,5 и 1.

example using contourplot with dummy data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...