2016-04-05 4 views
0

BestR: Заполнить/карта/участок шейп с ggplot2, на основе значений regoin

Я следующее шейпфайл что карта Фландрии (Бельгия), и я хотел бы построить это с ggplot по отношению кcheapEnergyPrices. (таким образом, используйте цвет градиента)

head([email protected], n = 1) 
    OBJECTID Cs012011  Nis_ ... Sec Commune  Prov_nl Reg_nl  cheapestEnergyPrices mostExpensiveEnergyprices 
    3   11001A00-  11001 ... A00- AARTSELAAR Antwerpen Vlaanderen 935.03     1254.74 


head([email protected], n=1) 
[[1]] 
An object of class "Polygons" 
Slot "Polygons": 
[[1]] 
An object of class "Polygon" 
Slot "labpt": 
[1] 4.387485 51.132957 

Slot "area": 
[1] 6.825956e-05 

Slot "hole": 
[1] FALSE 

Slot "ringDir": 
[1] 1 

Slot "coords": 
      [,1]  [,2] 
    [1,] 4.385794 51.13767 
    [2,] 4.386132 51.13745 
    ... ...  ... 
[147,] 4.385794 51.13767 



Slot "plotOrder": 
[1] 1 

Slot "labpt": 
[1] 4.387485 51.132957 

Slot "ID": 
[1] "0" 

Slot "area": 
[1] 6.825956e-05 

На данный момент я пробовал много вещей, например, следующий фрагмент кода:

> ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group,fill = flanders$cheapestEnergyPrices)) 

Но, к сожалению, это даст мне код следующей ошибки

Regions defined for each Polygons 
Error: Aesthetics must be either length 1 or the same as the data (1224957): x, y, group, fill 

Тем не менее, когда я заменяю Фландрию $ cheapestEnergyPrices по , как:

ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group,fill = 1)) 

тогда я получу этот нежелательный результат, потому что все содержит один и тот же цвет.

enter image description here

Таким образом ... Я хотел бы построить свой шейп с ggplot2, в результате чего полигоны окрашены в, по отношению к значению, например, cheapestEnergyPrices. Например гмины который cheapestEnergyPrice является самым низким будет иметь цвет темно-зеленый и коммуну Кто на cheapestEnergyPrice гораздо выше будет иметь светло-зеленый/белый, или даже красный цвет ...

+0

будет определение 'cheapestEnergyPrices' как' factor' изменить его? –

+0

Это кажется ошибкой: 'geom_polygon (data = flanders, aes (..., fill = flanders $ cheapEnergyPrices))'. Поскольку он находится внутри 'aes', вы должны просто передать' fill = cheapEnergyPrices' и отбросить префикс 'flanders $' – arvi1000

+0

... но трудно помочь дальше, так как сюжет не воспроизводится из того, что вы отправили, без шейп-файла – arvi1000

ответ

1

Возможно:

ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group, fill = cheapestEnergyPrices)) 

Я думаю, вы не NEET к flanders$ снова проходить, но это трудно сказать, без данных. Поскольку ваша колонка, по-видимому, является числовой, должна следовать цветовая гамма.

Я думаю, flanders является fortify-на лету на ggplot и превращен в data.frame. Более простой альтернативой было бы:

я) превратить flanders в data.frame с fortify или even betterbroom::tidy

II) использовать эту data.frame с ggplot2, и других данных манипуляций.

Что-то вроде:

flanders_df <- broom::tidy(flanders) 
ggplot() + geom_polygon(data = flanders_df, aes(x = long, y = lat, group = group, fill = cheapestEnergyPrices))