2013-12-11 1 views
1

Благодаря помощи этого веб-сайта мне удалось написать мой код для интерполяции данных о погоде метеостанции на сетку 1 км и построить его с помощью R. Последний бит кода исключает нежелательные данные, а затем выводится с использованием quilt.plot. Данные, которые будут отображаться (mydf.final), представляют собой список значений со следующими заголовками: индекс, восток, север, осадки и среднее количество осадков. Образец данных, которые будут построены, выглядит так, если я исполню dput:Как создать участок одеяла в R с бинными данными?

dput(mydf.final(head, 10)) 

structure(list(easting = c(101000, 101000, 101000, 101000, 101000, 
101000, 101000, 101000, 101000, 101000), northing = c(740000, 
741000, 742000, 743000, 744000, 745000, 746000, 747000, 748000, 
749000), rainfall = c(40.0997151135538, 40.3344163486536, 40.5681562532368, 
40.8009001543464, 41.0326137107226, 41.2632629265481, 41.4928141651644, 
41.721234162219, 41.9484900390941, 42.1745493154662), saar = c(1081.62, 
1081.62, 1081.62, 1081.62, 1081.62, 1078.68, 1078.68, 1078.68, 
1078.68, 1078.68)), .Names = c("easting", "northing", "rainfall", 
"saar"), row.names = 4717:4726, class = "data.frame") 

Я могу построить эти данные с помощью:

quilt.plot(cbind(mydf.final$easting,mydf.final$northing),mydf.final$rainfall, add.legend=TRUE,nx=599,ny=1209,xlim=c(0,700000),ylim=c(0,1250000)) 

Это дает мне изображение, которое я не могу опубликовать, как я не хватает очков репутации. Амивей, сюжет - это карта Великобритании, показывающая количество осадков разных цветов, с максимальным количеством осадков, красным и минимальным синим.

Хотя это хорошо, я хотел бы сделать две вещи:

  1. Убедитесь, что все данные осадков должны быть построены в 0 или больше. Некоторые данные о осадках - это отрицательное значение (например, -1), так как я могу изменить все отрицательные значения до 0 до построения графика?

  2. Вместо того, чтобы использовать диапазон цветов между минимальным и максимальным (от синего до красного), я хочу выровнять значения, например, синий - от 0 до 5 мм, светло-голубой - от 5 мм до 10 мм, желтый - от 10 мм до 20 мм , красный - больше 30 мм и т. д. Любые идеи, как я это достигаю?

+2

'х [х $ осадки <0, "осадки"] <- 0 'и исследовать' cut'?. –

ответ

0

Кража от идеи Романа, но с использованием вместо findInterval:

y<- mydf.final$rainfall # simplify typing 
ycuts <- findInterval(y,c(0,5,10,20,30,max(y))) 
quilt.plot(yourxdata, y , col=c('blue','lightblue','yellow','purple','red')[ycuts], {the rest of your arguments}) 

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

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