简体   繁体   English

更改图例标题会中断ggplot2中的图例颜色

[英]Changing the legend title breaks the legend color in ggplot2

I'm trying to change the legend title on my ggplot. 我正在尝试更改ggplot上的图例标题。 Here are two examples (partly from here ); 这是两个示例(部分来自此处 ); the first one is with the sf package, which is what I'm really using. 第一个是sf软件包,这是我真正使用的软件包。 The second one is without that package which seems to have the same problem. 第二个是没有那个似乎有相同问题的软件包。

With sf , what I want: 使用sf ,我想要什么:

cities <- tibble::tribble(
  ~ lon,    ~ lat,    ~ name,      ~ pop,
  5.121420, 52.09074, "Utrecht",   311367,
  6.566502, 53.21938, "Groningen", 189991,
  4.895168, 52.37022, "Amsterdam", 779808 
) %>% sf::st_as_sf(coords = c("lon", "lat"), crs = 4326)

lines_sfc <- sf::st_sfc(list(
  sf::st_linestring(rbind(cities$geometry[[1]], cities$geometry[[2]])),
  sf::st_linestring(rbind(cities$geometry[[2]], cities$geometry[[3]]))
))

lines <- sf::st_sf(
  id = 1:2,
  size = c(10,50),
  geometry = lines_sfc,
  crs = 4326
)

ggplot() + 
  geom_sf(aes(colour = pop, size=pop), data = cities)

which gives a nice legend with bad title: 这给出了一个带有错误标题的漂亮图例: 在此处输入图片说明

Using this , I modified my script to change the legend: 使用此命令 ,我修改了脚本以更改图例:

ggplot() + 
  geom_sf(aes(colour = pop), data = cities) + 
  guides(colour=guide_legend(title="New color"))

which gives: 这使:

在此处输入图片说明

The legend isn't a gradient anymore, why? 传说不再是渐变了,为什么?

If you don't have sf , the same happens with a geom_bar : 如果您没有sf ,则geom_bar发生同样的情况:

ggplot() + 
  geom_bar(aes(x=name, y=pop, colour = pop), stat="identity", data = cities)

gives: 得到:

在此处输入图片说明

while this : 而这:

ggplot() + 
  geom_bar(aes(x=name, y=pop, colour = pop), stat="identity", data = cities) + 
  guides(colour=guide_legend(title="New color"))

gives: 得到:

在此处输入图片说明

Is there a way to change only the title of the legend and not the whole thing? 有没有办法只更改图例的标题而不是整个内容?

my sessionInfo: 我的sessionInfo:

R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server >= 2012 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] sp_1.2-6           rgeos_0.3-26       ggplot2_2.2.1.9000 dplyr_0.7.4        sf_0.6-1          

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.14           pillar_1.0.1           compiler_3.4.3         git2r_0.19.0           plyr_1.8.4            
 [6] bindr_0.1              viridis_0.4.0          class_7.3-14           tools_3.4.3            digest_0.6.13         
[11] viridisLite_0.2.0      memoise_1.1.0          tibble_1.4.1           gtable_0.2.0           lattice_0.20-35       
[16] pkgconfig_2.0.1        rlang_0.1.6.9002       cli_1.0.0              DBI_0.7                rstudioapi_0.6        
[21] rgdal_1.2-16           curl_2.8.1             bindrcpp_0.2           gridExtra_2.3          e1071_1.6-8           
[26] withr_2.1.1.9000       httr_1.3.1             knitr_1.18             devtools_1.13.3        classInt_0.1-24       
[31] grid_3.4.3             glue_1.1.1             R6_2.2.2               udunits2_0.13          magrittr_1.5          
[36] scales_0.5.0.9000      RStudioShortKeys_0.1.0 units_0.5-1            assertthat_0.2.0       colorspace_1.3-2      
[41] labeling_0.3           utf8_1.1.3             lazyeval_0.2.1         munsell_0.4.3          crayon_1.3.4    
ggplot() + 
  geom_sf(aes(colour = pop, size=pop), data = cities) +
  scale_color_continuous(name = 'newname')

You can call the color scale and just specify the name 您可以调用色标,只需指定名称

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM