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

2024-05-05

我的问题结合了之前在 Stackoverflow 上发布的两个单独的问题:向 ggplot 添加多个图例 https://stackoverflow.com/questions/26443371/adding-multiple-legends-to-ggplotii.将线图例添加到 geom_sf https://stackoverflow.com/questions/47996634/add-line-legend-to-geom-sf.

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

好像不需要调用aes(), but aes()或许,这是称呼传奇的唯一方式。

可重现的例子

我想做类似以下的事情(借用(i)),但是without the 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" )

我不确定我是否完全理解你想要什么。 在这里,我们将值“A”和“B”映射到颜色美学以获得图例,然后我们使用以下命令自定义颜色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 ?") 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用geom_sf时向ggplot2添加多个图例 的相关文章

  • 从 R 中的向量中选择所有可能的元组

    我正在尝试用 R 编写一个程序 当给定一个向量时 将返回所有可能的tuples http en wikipedia org wiki Tuples该向量中的元素 例如 元组 c a b c c a b c 出租车 c a c c b c c
  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • 基于另一个数据集获取数据集的子集

    假设我有一个数据集 即 dat1 ID block plot SPID TotHeight 1 1 1 4 44 5 2 1 1 4 51 3 1 1 4 28 7 4 1 1 4 24 5 5 1 1 4 27 3 6 1 1 4 20
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • 删除ggplot2中的负图区域[重复]

    这个问题在这里已经有答案了 如何删除 ggplot2 中 x 轴和 y 轴下方的绘图区域 请参见下面的示例 我尝试了几个主题元素 panel border panel margin plot margin 但没有任何运气 p lt ggpl
  • 重复测量引导统计数据,按多个因素分组

    我有一个看起来像这样的数据框 但显然还有更多行等 df lt data frame id c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 cond c A A B B A A B B A A B B A A B B co
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • 如何删除箱线图上的刻度线

    我试图从箱线图中删除 x 轴刻度线 但保留与刻度线关联的标签 这在基础 R 中可能吗 colors lt c lightskyblue3 gray78 gold1 wheat1 boxplot avgscore module data mi
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 在 R 中向散点图添加线条

    如何向图表添加线条 我做了以下 dat lt data frame xvar 1 20 rnorm 20 sd 10 yvar 1 20 rnorm 20 sd 10 zvar 1 20 rnorm 20 sd 10 plot dat 1
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得

随机推荐

  • 如何关闭 Oracle 密码过期功能?

    我正在使用 Oracle 进行开发 我经常用于重建数据库的引导帐户的密码已过期 如何永久关闭该用户 以及所有其他用户 的密码过期功能 我使用的是 Oracle 11g 默认情况下密码会过期 要更改 Oracle 中某个用户配置文件的密码过期
  • Nest_asyncio 的正确使用/使用限制?

    我正在努力将以前的同步网络服务器作为同步服务器 我的大多数函数都是同步的 我想简单地从现有代码进行异步调用以避免异步蔓延 Nest asyncio 似乎通过使 run until complete 可重入来允许这样做 然而 虽然这适用于 1
  • Phonegap:WebSql 还是 SqLite?

    我使用phonegap的时间很短 并且我对其中的存储概念遇到了一些麻烦 因此 文档指出您可以打开这个数据库 它是一个 SQLite 实现 window openDatabase 返回一个新的数据库对象 此方法将创建一个新的 SQL Lite
  • 一览 根本不工作

    我安装了MVC5 概览 https www nuget org packages Glimpse Mvc5 via Install Package Glimpse MVC5 我在 Glimpse 配置页面上打开了 Glimpse Glimp
  • Aptana Studio 与 Eclipse [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何仅在视口中显示数据

    我打算使用一个名为的 jQuery 插件图表 js http www chartjs org 用于图形和图表 然而 在较大的页面上 这些图表的动画甚至在用户看到它们之前就已经完成了 我的问题是 只有当特定 div 部分的内容在视口内可见时
  • 真=假==真[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 Python 不能按照我的预期处理真 假值 https stackoverflow com questions 2055029 why cant python handle true fals
  • Laravel 表单标签中内联“必需”星号

    我正在尝试为 Laravel 中的必填字段添加红色星号 但我不确定如何将它们添加到标签中 我目前正在做的是 Form label took act or sat Did you or will you take the SAT or ACT
  • 部署应用程序引擎后的暂存文件桶

    部署谷歌应用引擎后 谷歌云存储中至少创建了4个存储桶 项目 ID appspot com 登台 项目 ID appspot com 工件 project id appspot com vm containers 项目 ID appspot
  • ASP.NET MVC 4 会话超时

    我正在使用 VS 2012 IIS 7 5 开发一个带有 ASP NET MVC4 的互联网应用程序 我正在使用表单身份验证 我的网络配置中的设置如下
  • ASP.NET MVC 中的缩小操作筛选器属性

    我有一个返回大量动态 JavaScript 的控制器操作 一次向客户端提供服务 并且我已经启用了 GZip 压缩 我想做的一件事是读取执行的结果流并对其应用 JS 缩小 是否可以使用操作过滤器属性来做到这一点 我认为我的问题可以归结为 假设
  • PHP 中的 Rss 阅读器

    header Access Control Allow Origin tmpFile tmpFile txt val http rss news yahoo com rss topstories curlHandle curl init v
  • linq-to-sql:存储过程不能在查询中使用

    这在 VS2010 RC LINQ to SQL 上失败 并出现 InvalidOperationException 存储过程不能在查询内使用 var foo from a in aTable from b in this SomeStor
  • Maven 找不到 .git (dotGitDirectory)

    我有一个与所问问题类似的问题here https stackoverflow com questions 31159484 mavengit commit id plugin git directory could not be found
  • 将数据传递给视图时,node ejs 引用错误数据未在 eval 处定义

    我已经接近使用express和ejs的节点应用程序 但是当我尝试将数据从控制器传递到我的视图时 如下所示 var myData theData data res render path join dirname views index my
  • 在布局的右侧和底部添加阴影

    我想在布局的右侧和底部添加光阴影 我尝试使用android background android drawable dialog holo light frame 但它在布局的所有四个侧面添加了厚厚的阴影 我需要创建什么可绘制并将其设置为背
  • WPF TextBlock 元素和 Label 控件有什么区别? [复制]

    这个问题在这里已经有答案了 从视觉上看 以下两个片段都生成相同的 UI 那么为什么有2个控件 Snippet1
  • Radio r = Radio("PSR", 100.8) 和 Radio("PSR", 100.8) 有什么区别? [复制]

    这个问题在这里已经有答案了 我是 C 新手 正在尝试理解一些东西 我的 main cpp 中有这段代码 Radio r Radio PSR 100 8 或该代码 Radio r PSR 100 8 两者似乎都有效并且做同样的事情 那么有什么
  • 在 Javascript 中设置多个 cookie

    我正在尝试设置多个 cookiedocument cookie 但不幸的是只有一个被添加 我知道网上有多个设置此类 cookie 的示例 我遵循了其中之一 但我仍然无法解决这个问题 我跟着这个link http www elated com
  • 使用geom_sf时向ggplot2添加多个图例

    我的问题结合了之前在 Stackoverflow 上发布的两个单独的问题 向 ggplot 添加多个图例 https stackoverflow com questions 26443371 adding multiple legends