【问题标题】:ggplot2 ggmap, R legend editingggplot2 ggmap,R图例编辑
【发布时间】:2016-06-07 06:03:11
【问题描述】:

这里是
代码示例:

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)

我的问题:

如何将此颜色名称的指南标签标题从 moja.paleta 更改为 personel$nazwa 以及如何更改图例标签的大小并使此图例垂直而不是水平?

图片

【问题讨论】:

  • 当您一次只问一个问题时,此网站效果最佳,因为只能接受一个答案。您应该尝试在问题本身中包含示例数据,而不是要求从其他站点下载。见tips for creating a reproducible example。我们不是来为您编写代码的,我们是来提供帮助的。

标签: r ggplot2 legend ggmap


【解决方案1】:

我认为这应该可行

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")

我们使用scale_fill_manual 为每个级别设置颜色,并使用fill= 美学来为点着色(注意那里没有$ - 在指定美学时应该避免这种情况。

我还将指南移到底部并更改了列数。最后我不得不选择不同颜色的啤酒托盘,因为“Blues”没有 10 个值。

【讨论】:

  • 非常感谢您的帮助,如果可能的话,再问一个问题,如果我添加另一个带有其他变量的列,是否可以为点添加不同的形状(使用该变量?)
  • 是的。有一种形状美学(aes(shape=)
  • 是否可以只使用 pch =21:25 中的形状?我相信这些是唯一可以着色的形状。 mapa + geom_point( aes(x=Lon, y=Lat,fill=nazwa, SHAPE= DZIEDZINA), data=subset(personel,nazwa=nazwa), size=6, color= "gold", #pch=21 ) 类似的东西会起作用吗?以及在哪里添加我想要使用的点形状?
  • 这有点跑题了。如果您有关于 ggplot2 如何处理形状的单独问题,我建议您搜索其他解决方案或提出新问题。
【解决方案2】:

所有在 ggplot 中工作的东西都适用于 ggmap。因此,例如这个网页应该回答你的大部分问题: http://www.cookbook-r.com/Graphs/Legends_%28ggplot2%29/

由于您没有提供任何示例数据,我无法验证这是否有效:

更改每个图例项的名称:

+ scale_fill_manual(labels=c("a", "b", "c")) 

更改大小图例标签,更改位置图例

+ theme(legend.text = element_text(size = 16),
        legend.position="bottom")   #or top or so

【讨论】:

  • 我编辑了我的帖子,现在它带有示例数据。 ;) 试试你的代码,谢谢 - 我没有尝试使用手动标签...我尝试用我的个人名称列出一个列表,然后以某种方式将其放入图例中
  • 你可以做 labels=unlist(your.list) 或者你可以改变数据框中的名字,所以你不必费心在情节中改变它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2015-08-11
  • 2023-04-06
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多