当前位置: 首页 > 知识库问答 >
问题:

使用geom_sf时向ggplot2添加多个图例

侯兴为
2023-03-14

我的问题结合了之前在Stackoverflow上发布的两个独立问题:I .为ggplot添加多个图例;ii .将线条图例添加到geom_sf。

我想在ggplot2中添加多个图例(如第一篇文章中所述),但我使用了sf。这使得填充美学空间变得复杂。上面i.中建议的答案不适用于多种类型的几何图形——我们不能将点和线分配给单个类,然后使用因子。在我的例子中,我有几个线和点shapefile,只是想为添加的每个shapefile添加一个单独的图例条目。

似乎不需要调用aes(),但aes()可能是调用图例的唯一方法。

可重复的例子

我想做一些类似于以下内容的事情(借用 (i)),但没有 as.factor,以便我可以单独调用geom_sf

library(sf)
library(ggplot2)

# reproducible data
lon<-c(5.121420, 6.566502, 4.895168, 7.626135)
lat<-c(52.09074, 53.21938, 52.37022, 51.96066)
cities<-c('utrecht','groningen','amsterdam','munster')
size<-c(300,500,1000,50)

xy.cities<-data.frame(lon,lat,cities,size)

# line example
line1 <- st_linestring(as.matrix(xy.cities[1:2,1:2]))
line2 <- st_linestring(as.matrix(xy.cities[3:4,1:2]))

lines.sfc <- st_sfc(list(line1,line2))
simple.lines.sf <- st_sf(id=1:2,size=c(10,50),geometry=lines.sfc)

ggplot() + 
 geom_sf(data= simple.lines.sf, aes(colour = as.factor(id)), show.legend = "line")

也就是说,更像是:

ggplot() + 
 geom_sf(data= dataset1, color="red" ) +
 geom_sf(data= dataset2, color="blue" )

共有1个答案

赵佐
2023-03-14

我不确定我是否完全明白你想要什么。在这里,我们将值“A”和“B”映射到颜色aestetic以获得图例,然后使用scale_color_manual自定义颜色

dataset1 <- st_sf(st_sfc(list(line1)))
dataset2 <- st_sf(st_sfc(list(line2)))

ggplot() + 
    geom_sf(data= dataset1, aes(color="A"), show.legend = "line") +
    geom_sf(data= dataset2, aes(color="B"), show.legend = "line") +
    scale_color_manual(values = c("A" = "red", "B" = "blue"), 
                       labels = c("Line1", "Line2"),
                       name = "Which line ?") 
 类似资料:
  • 我正在 ggplot 中处理多个 sf 几何形状,并希望以点、线和正方形(用于多边形)的形式显示图例。但是,geom_sf图例结合了如下所示的几何特征(即组合线和点): 我想要三个单独的图例,一个黄色的正方形,一个粉色的点,和一条紫色的线。这只是我绘制单个几何图形时的情况,而不是三个几何图形的组合。 我查找了类似的主题,但没有一个涉及点几何,即 https://github.com/tidyver

  • 正在尝试向添加多个图像。我尝试了以下方法(为了简单起见修改了): 我还尝试使用将图像添加到中,并使用该索引使用设置

  • 我想在我的pandas条形图中添加百分比值-以及计数。然而,我不能这样做。我的代码如下所示,到目前为止,我可以得到要显示的计数值。有人能帮我在每个条显示的计数值旁边/下面添加相对%值吗? 我的代码的输出如下所示。如何在显示的每个计数值旁边添加%值?

  • 使用 ggplot/geom_sf 绘制地图时,映射到美学的任何图层都将在图例中表示。我还知道,使用 可用于强制图例表示和操作使用的符号系统(点、线、面)。但是,当绘制简单对象而无需进一步将它们映射到美学时,即使用颜色/填充来显示附加信息时,不会给出图例条目。使用 时似乎也是如此。我在GitHub上发现了这个问题:https://github.com/tidyverse/ggplot2/issue

  • 问题内容: 我有许多固定大小的图像(例如500 * 500)。我想编写一个python脚本,将其调整为固定大小(例如800 * 800),但将原始图像保持在中心,并用固定颜色(例如黑色)填充多余的区域。 我正在使用PIL。我现在可以使用该功能调整图像的大小,但这会改变纵横比。有什么办法吗? 问题答案: 您可以创建具有所需新尺寸的新图像,然后将旧图像粘贴到中间,然后保存。如果需要,可以覆盖原始图像(

  • 这个问题已经被问到了,但我想找到一个更清楚的解决办法。 给定X是100x2数据,标签是标签向量(从1到9),我绘制散点图如下: 如何添加图例来解释一行代码中的颜色?其他解决方案分别绘制每个标签: