首页 > 解决方案 > 为什么我无法更改此 sf 对象绘图的图例标题?

问题描述

我在一个名为“yield_annual_offshore_advantages”的向量中有一组基于点的数据,它对应于以瓦特*小时表示的能量值,并且可以映射到我从名为“网站总数”。使用下面的文本,我能够很好地显示要点和一切,但是图例有一个我想更改的标题。假设我想将其更改为“你好”。

我在下面的代码中做错了什么?如果我没记错的话,其他网站上也有类似的东西。

library(rnaturalearthdata)
library(rnaturalearth)
library(sf)
library(ggplot2)
world_map <- ne_coastline(scale = "medium", returnclass = "sf")
#ggplot2::ggplot(data = world_map) 
ggplot2::ggplot(data = world_map) + geom_sf() + geom_point(data = totalityofsites[1:20,], 
mapping = aes(x = lon, y = lat, color = (yield_annual_offshore_advantages/1000)), size = 3) 
  + coord_sf(xlim = c(min(totalityofsites$lon)-10, max(totalityofsites$lon) + 10), ylim = 
          c(min(totalityofsites$lat)-10, max(totalityofsites$lat)+10), expand = F) 
  + title(main = "Annual energy yield differences", legend(legend = "Hello")) + ggtitle("Annual values, in kWh") 

感谢任何帮助。

FWIW 我将把上面的输出放在这里。

上面的代码产生了什么,以及为什么我需要更改图例标题

标签: rggplot2gis

解决方案


您可以添加scale_colour_continuous(name = "hello")到您的情节。这是包含一些虚构数据的完整代表:

library(rnaturalearthdata)
library(rnaturalearth)
library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(ggplot2)

world_map <- ne_coastline(scale = "medium", returnclass = "sf")

set.seed(69)

totalityofsites <- 
  data.frame(lon = runif(20, -100, 100), lat = runif(20, -90, 90),
             yield_annual_offshore_advantages = runif(20, -2000, 2000))

ggplot2::ggplot(data = world_map) + 
  geom_sf() +
  geom_point(data = totalityofsites[1:20,], 
             mapping = aes(x = lon, y = lat, 
                           color = (yield_annual_offshore_advantages/1000)), 
             size = 3) + 
  coord_sf(xlim = c(min(totalityofsites$lon)-10, 
                    max(totalityofsites$lon) + 10), 
           ylim = c(min(totalityofsites$lat)-10, 
                    max(totalityofsites$lat)+10), expand = F) +
  scale_colour_continuous(name = "hello") +
  ggtitle("Annual values, in kWh") 

reprex 包(v0.3.0)于 2020 年 8 月 16 日创建


推荐阅读