2012-02-09 6 views
1

Вот мой код и связанные с ним структуры переменных.R - Контурная карта с несколькими слоями (решетка)

Correlation_Plot = contourplot(cor_Warra_SF_SST_JJA, region=TRUE, at=seq(-0.8, 0.8, 0.2), 
labels=FALSE, row.values=(lon_sst), column.values=lat_sst, 
xlab='longitude', ylab='latitude') 

Correlation_Plot = Correlation_Plot + layer({ ok <- (cor_Warra_SF_SST_JJA>0.6); 
      panel.text(cor_Warra_SF_SST_JJA[ok]) }) 
Correlation_Plot 

    # this is the longitude (from -179.5 to 179.5) , 360 data in total 
    > str(lon_sst) 
    num [1:360(1d)] -180 -178 -178 -176 -176 ... 

    # this is the latitude (from -89.5 to 89.5), 180 data in total 
    > 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 ... 

    # This is data set corresponding to longitude and latitude 
    > dim(cor_Warra_SF_SST_JJA) 
     [1] 360 180 

enter image description here

Я пытался использовать layer() показать этикетку только для контура больше, чем 0,6, но он не работает.

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

  2. Самое важное, что я хочу нарисовать более толстую черную линию для заданного интервала контура (например, для +/- 0,2)? Я думаю, что ican сделать это с layer(), но я не уверен, что panel функция должна я использовать.

  3. Кроме того, я попытался заполнить континент сплошным цветом, но я не могу найти с ним ничего. Я пробовал использовать карту, но она не работает для решетки.

Благодарим за помощь.

ответ

5

?panel.levelplot дополнительные аргументы contourplot.

  1. Вы можете использовать col.regions аргумент, который будет принимать либо вектор цветов, которые вы хотели бы, чтобы соответствовать вашим интервалам, или функцию цветой рампы (например, ниже).

  2. Используйте специальную функцию панели, что-то вроде этого (используя пространственно автокоррелированный фиктивный набор данных, сгенерированный с использованием метода, указанного на Santiago Beguería's blog). Используйте lpolygon для построения объекта карты:

    Генерировать фиктивный набор данных:

    library(gstat) 
    
    # create structure 
    xy <- expand.grid(1:360, 1:180) 
    names(xy) <- c('x','y') 
    
    # define the gstat object (spatial model) 
    g.dummy <- gstat(formula=z~1, locations=~x+y, dummy=T, beta=1,  
        model=vgm(psill=0.025,model='Exp',range=5), nmax=20) 
    
    # make a simulations based on the gstat object 
    yy <- predict(g.dummy, newdata=xy, nsim=1) 
    gridded(yy) = ~x+y 
    
    # scale to range [-1, 1] 
    z <- matrix([email protected][, 1], ncol=180) 
    z.scalefac <- (max(z) - min(z))/2 
    z <- -1 + (z - min(z))/z.scalefac 
    
  3. Участок:

    library(lattice) 
    library(maps) 
    
    lon_sst <- seq(-179.5, 179.5, 1) 
    lat_sst <- seq(-89.5, 89.5, 1) 
    
    colramp <- colorRampPalette(c('red', 'yellow', 'white', 'green', 'blue')) 
    
    contourplot(z, xlim=c(100, 160), ylim=c(-80, -50), 
        at=seq(-1, 1, 0.2), region=TRUE, col.regions=colramp, 
        row.values=lon_sst, column.values=lat_sst, labels=FALSE, 
        xlab='longitude', ylab='latitude', 
        panel = function(at, region, ...) { 
        panel.contourplot(at=at, region=TRUE, ...) 
        panel.contourplot(at=c(-0.2, 0.2), lwd=2, region=FALSE, ...) 
        mp <- map("world", "antarctica", plot = FALSE, fill=TRUE) 
        lpolygon(mp$x, mp$y, fill=TRUE, col='gray') 
    }) 
    

example output

+0

В моем компьютере «col.regions = colramp» не работает, но я заменил «color.palette = colorRampPalette (c (« синий »,« зеленый »,« белый »,« желтый »,« красный »)). Это действительно полезно, но как я могу заполнить континент? –

+0

да, извините, я забыл вставить в рампу ... отредактировал ответ. – jbaums

+0

Обновлены, чтобы включить землю. – jbaums

1

Q1: Вы должны будете использовать llines или panel.lines с теми же данными, который вы использовали для континентальных очертаний в предыдущем вопросе, чтобы сделать это

Q2:

?panel.contour 

.... В чем это говорит, что «lwd» - доступный вариант, и я подозреваю, что вы сделаете седьмой элемент вектора = 2.

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

+0

К сожалению Абт любой incovalence, я просто начать использовать R за 2 недели, должен делать целую вещь с нуля. Страница справки для меня действительно запутанна.Все аргументы, которые работают для обеих функций, и когда-нибудь, я не знаю, что поставить в корне аргументы. –

+0

Аргументы вообще не стандартизированы в R-функциях. Плюс: у вас есть три разных парадигмы построения: базовая графика, решетка (которая является частью контура) и ggplot ... идеальный рецепт для путаницы. –

+0

Согласен, это немного сложно, когда у нас нет данных. Я отредактировал свое решение, чтобы включить генерацию набора фиктивных данных, которые я использовал. – jbaums

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