2015-03-19 15 views
9

Używam ggplot do mapowania wartości danych do (wzmocnionej) SpatialPolygonsDataFrame, ale wiele wielokątów ma wartości NA, ponieważ nie ma dostępnych danych.Dodaj wartość NA do legendy ggplot dla ciągłej mapy danych

Użyłem na.value = "white", aby poprawnie wyświetlić brakujące dane, ale chciałbym dodać pole z białym wypełnieniem legendy (lub oddzielnej legendy) z etykietą "brak danych".

library(ggplot2) 

india.df <- read.csv('india.df.csv') 
# (I don't know how to provide this file to make the code reproducible) 

ggplot() + 
geom_polygon(data=india.df, aes(x = long, y = lat, group = group, fill=Area_pct)) + 
scale_fill_gradient(low="orange2", high="darkblue", na.value = "white") + 
geom_path(data=india.df, aes_string(x = x, y = y, group = group), color = "gray", size = 0.25) + 
theme_bw() + 
coord_map() + 
labs(title = "Rice Under Irrigation in Gujarat - 2001", 
    fill = "Area (%)") 

(mam wielki obraz, aby zilustrować to, ale nie mają wystarczająco dużo punktów reputacji, aby opublikować go)

Czytałem this, ale moje dane w sposób ciągły (nie dyskretne) i this , ale nie mogę wymyślić, jak dostosować zmianę "linii" do "wypełnienia".

Dzięki za pomoc !!

+2

Znalezione https://github.com/hadley/ggplot2/issues/410 wydaje się, że utknęliśmy z obejścia ... – animalito

+0

Jest bardziej prawdopodobne, że będziemy w stanie Ci pomóc, jeśli zrób minimalny powtarzalny przykład pasujący do twojego pytania. Coś, z czego możemy pracować i użyć, aby pokazać, jak to możliwe, aby rozwiązać twój problem. Możesz spojrzeć na [to SO post] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) na temat tworzenia doskonałego odtwarzalnego przykładu w R –

Odpowiedz

1

można zastąpić NAS z 0 użyciem

data[is.na(data)] <- 0 

tamtędy wasze NAS zostanie zastąpiony przez zero i yout legendy pokaże „0s”

i pokazać nam obraz można mieć blog i można wkleić link tutaj

+0

Nie dotyczy to sytuacji opisywanej w OP, w której "brak danych" to nie to samo, co "dane zebrano dla tego obszaru na mapie, ale wystąpiły 0 przypadków" - nie powinno to być żądanie funkcji aby ggplot2 miał opcję pokazywania NA, wybierz sposób ich etykietowania, pokoloruj je i umieść w legendzie? –

Powiązane problemy