Search code examples
rggplot2legendggmap

ggplot2 ggmap, R legend editing


Here is
code sample:

require(rgdal)
require(ggmap)
require(maptools)
library(RColorBrewer)



polska <- get_map(

  location=c(lon=20.9589934, lat=53.5149404), 
  zoom=7, 
  maptype="roadmap" 

)

mapa <- ggmap(polska)

nazwa <- c('LEKARZ - SPECJALISTA ONKOLOGII I HEMATOLOGII DZIECIĘCEJ',
           'LEKARZ - SPECJALISTA ONKOLOGII KLINICZNEJ',
           'LEKARZ - SPECJALISTA RADIOLOGII I DIAGNOSTYKI OBRAZOWEJ',
           'LEKARZ - SPECJALISTA RADIOTERAPII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA KARDIOCHIRURGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII DZIECIĘCEJ',
           'LEKARZ - RADIOLOGIA I DIAGNOSTYKA OBRAZOWA',
           'LEKARZ - SPECJALISTA CHIRURGII ONKOLOGICZNEJ',
           'LEKARZ - SPECJALISTA GINEKOLOGII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA ONKOLOGII I HEMATOLOGII DZIECIĘCEJ',
           'LEKARZ - SPECJALISTA ONKOLOGII KLINICZNEJ',
           'LEKARZ - SPECJALISTA RADIOLOGII I DIAGNOSTYKI OBRAZOWEJ',
           'LEKARZ - SPECJALISTA RADIOTERAPII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA KARDIOCHIRURGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII DZIECIĘCEJ',
           'LEKARZ - RADIOLOGIA I DIAGNOSTYKA OBRAZOWA',
           'LEKARZ - SPECJALISTA CHIRURGII ONKOLOGICZNEJ',
           'LEKARZ - SPECJALISTA GINEKOLOGII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA ONKOLOGII I HEMATOLOGII DZIECIĘCEJ',
           'LEKARZ - SPECJALISTA ONKOLOGII KLINICZNEJ',
           'LEKARZ - SPECJALISTA RADIOLOGII I DIAGNOSTYKI OBRAZOWEJ',
           'LEKARZ - SPECJALISTA RADIOTERAPII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA KARDIOCHIRURGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII DZIECIĘCEJ',
           'LEKARZ - RADIOLOGIA I DIAGNOSTYKA OBRAZOWA',
           'LEKARZ - SPECJALISTA CHIRURGII ONKOLOGICZNEJ',
           'LEKARZ - SPECJALISTA GINEKOLOGII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA ONKOLOGII I HEMATOLOGII DZIECIĘCEJ',
           'LEKARZ - SPECJALISTA ONKOLOGII KLINICZNEJ',
           'LEKARZ - SPECJALISTA RADIOLOGII I DIAGNOSTYKI OBRAZOWEJ',
           'LEKARZ - SPECJALISTA RADIOTERAPII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA KARDIOCHIRURGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII DZIECIĘCEJ',
           'LEKARZ - RADIOLOGIA I DIAGNOSTYKA OBRAZOWA',
           'LEKARZ - SPECJALISTA CHIRURGII ONKOLOGICZNEJ',
           'LEKARZ - SPECJALISTA GINEKOLOGII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA ONKOLOGII I HEMATOLOGII DZIECIĘCEJ',
           'LEKARZ - SPECJALISTA ONKOLOGII KLINICZNEJ',
           'LEKARZ - SPECJALISTA RADIOLOGII I DIAGNOSTYKI OBRAZOWEJ',
           'LEKARZ - SPECJALISTA RADIOTERAPII ONKOLOGICZNEJ','LEKARZ - SPECJALISTA KARDIOCHIRURGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII',
           'LEKARZ - SPECJALISTA KARDIOLOGII DZIECIĘCEJ',
           'LEKARZ - RADIOLOGIA I DIAGNOSTYKA OBRAZOWA',
           'LEKARZ - SPECJALISTA CHIRURGII ONKOLOGICZNEJ')

Lat <- c(53.772908,         54.179697,         53.77253,         53.769866,         53.824712,         53.770479,         54.155989,         53.77253,         53.900444,
         53.769866,         53.769866,         53.784476,         53.776881,         51.765548,         53.770238,         53.626192,         54.179697,         54.155989,         53.770238,         54.179697,       54.161008,         53.241782,
         53.693514,         54.497984,         54.179697,         53.770238,         54.179697,         54.12597,         53.793636,         53.769866,
         53.77253,         53.813859,         54.082334,         53.769866,         54.179697,         54.153899,        53.693514,
         53.769866,         54.179697,         51.765548,         53.820852,         53.144716,         53.586071,         53.144716,         53.793636,
         53.424625,         53.241782,         53.769866,         53.557383)


Lon <- c(20.484436,
         19.429063,         20.471922,         20.492113,         22.3542,         20.477155,         19.425851,         20.471922,         20.573356,         20.492113,         20.492113,         20.494275,
         20.505175,         19.455863,         20.479557,         21.798478,         19.429063,         19.425851,         20.479557,         19.429063,         19.418135,
         20.192547,         19.975791,         18.544899,         19.429063,         20.479557,         19.429063,
         20.591212,         22.33971,         20.492113,         20.471922,         22.384305,         21.377269,       20.492113,
         19.429063,         19.423336,         19.975791,         20.492113,         19.429063,         19.455863,         22.364016,         23.191729,         19.566362,         23.191729,         22.33971,         19.587424,         20.192547,
         20.492113,         20.986225
)
personel <- data.frame(nazwa,Lat,Lon)

moja.paleta <- brewer.pal(10, "Set3")
personel$kolor <- moja.paleta[personel$nazwa]

punkty <- mapa+ geom_point( aes(x=Lon, y=Lat,fill=personel$kolor)
                               ,data=subset(personel,nazwa=nazwa)#& dziedzina=='onkologia'))
                              ,size=6
                              , color= "gold"
                              , pch=21

                              ) 

plot(punkty)

My question:

How to change guide label titles from this color names from moja.paleta to personel$nazwa Also how to change size of the legend labels and make this legend vertical not horizontal?

IMAGE

enter image description here


Solution

  • I think this should work

    moja.paleta <- brewer.pal(10, "Set3")
    mapa + geom_point( aes(x=Lon, y=Lat,fill=nazwa),
       data=subset(personel,nazwa=nazwa)#& dziedzina=='onkologia')),
       size=6,
       color= "gold",
       pch=21) + 
       scale_fill_manual( values=setNames(moja.paleta,levels(personel$nazwa)) ) + 
       guides(fill  = guide_legend(ncol = 2)) + 
       theme(legend.position="bottom")
    

    We use scale_fill_manual to set the colors for each of the levels and use the fill= aesthetic to color the points (note there is no $ there -- you should avoid that when specifying aesthetics.

    Also i moved the guides to the bottom and changed the number of columns. And finally I had to choose a different color brewer pallet because the "Blues" did not have 10 values.

    enter image description here