使用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添加多个图例 的相关文章

  • 将多个函数应用于一个向量

    我正在寻找一种将多个函数应用于一个向量的选项 我认为这对于逆应用函数来说是一种仁慈 其中一个函数应用于许多向量 或列 有没有办法指定两个或多个函数 例如 min 和 max 并将其应用于向量 与 CathG的评论类似 但没有get v lt
  • 正则表达式在 R 中同时多次包含字母/特殊字符时删除单词

    我想删除那些单词中字母 特殊字符的数量同时出现两次以上的单词 例如 输入就像 Google in theee lland of whhhat c c and e 输出应该是 Google in lland of c c and x lt G
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 闪亮的仪表板侧边栏中的可折叠菜单项

    我的侧边栏中有两个菜单项 目前 如果我单击任何菜单项 则会显示所有菜单项的选项卡项 我想让它可折叠 如果我单击多个名称菜单 单个分析应该折叠 如果我单击单个分析 多个分析应该折叠 目前的设计是 相同的可重现代码是 library shiny
  • 如何使用 Rcpp 将 C 结构从 C 库公开到 R

    我正在尝试将 C 结构从 C 库公开到 R 中 例如 struct A int flag 库提供 API 来构造和销毁是很常见的A A initA void freeA A a 感谢RCPP MODULE 很容易暴露它而不考虑析构函数 in
  • 如何在 R 中创建纯 ascii 表作为输出,类似于 MySQL 风格?

    我正在尝试为 R 找到一个输出的函数data frameMySQL 风格的 ascii 表中的对象如下 id var1 var2 1 asdf g 2 asdf h 3 asdf j 有这样的功能吗 至少有两个工具可以做到这一点 csvfi
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • do.call 的 envir 选项如何工作?

    的文档do call states If quote is FALSE 默认值 然后对参数进行求值 在调用环境中 而不是在envir 这句话向我暗示 当quote FALSE 指定envir没有什么区别 然而 事实并非如此 事实上我遇到过需
  • 当我添加形状时,分组哑铃图变得不稳定

    我有以下数据显示白人与黑人在各个领域的一致性百分比 我想创建一个分组哑铃图 其中国家值和州值彼此相邻 以便于比较 Domain c A B C D E F G A B C D E F G A B C D E F G A B C D E F
  • pandoc 文档转换失败,错误 67

    我使用的是 R 3 3 2 和 Rstudio 版本 1 0 44 这是我的 RMarkdown 文件的格式 title Sentiment Analysis output rmdformats material highlight kat
  • Xticks by pandas 情节,用字符串重命名

    我有这个df df pd DataFrame A 1 2 3 B 2 3 5 C name 1 name 2 name 3 A B C 0 1 2 name 1 1 2 3 name 2 2 3 5 name 3 绘制柱状图的正确方法是什么
  • 相对于时间求平均值

    我有以下带有日期时间和相应值的数据集 时间间隔为每10分钟一次 我需要以 15 分钟的间隔生成新行 例如 15 40 的值为 599 15 50 的值为 594 因此需要在两者之间生成一个新行 即 15 45 的平均值为 599 和 594
  • 可以使用部分名称访问列表成员吗?这是一个功能吗?

    考虑这个 R 代码 gt l list key 1 gt l k 1 1 gt l ke 1 1 gt l k NULL gt names l 1 key 这是否意味着您可以使用以下方式访问列表成员 及其部分名称 当我在一次令人沮丧的错误搜
  • 将值排列在特定组内

    我试图在嵌套数据帧的精确组内按降序排列值 我的输入数据如下所示 我有两个分组变量 group1 and group2 和三个值 即id value2 value3 library tidyverse set seed 1234 df lt
  • 从R中的序列中随机提取多个连续项

    Frag lt seq 1 30000 K lt 9 P lt sample 1 K 1 sys sample lt Frag seq P length Frag K 现在 sys sample 包含 3333 个数字 如何在R中随机提取1
  • R 语言 NaN + NA 行为

    我有一个关于 R 中算术行为的问题 看下面这段代码 gt NaN NA 1 NaN gt gt gt NaN as integer NA gt NA 所以 我很困惑这两个添加给出了不同的结果 有谁知道这是否是真正想要的行为还是只是某种错误
  • r - ggplot2 - 突出显示选定的点和奇怪的行为

    我想突出显示选定的点并遇到一些奇怪的行为 首先是一些虚拟数据 a lt 1 50 b lt rnorm 50 mydata lt data frame a a b b ggplot mydata aes x a y b geom point
  • R 连接到主机时出错

    我已经安装了 R 3 0 2 和包KEGGREST 在使用它的命令时 我收到以下错误 函数错误 类型 消息 asError TRUE 无法连接到 主持人 使用 internet2 选项后 我可以很好地从互联网安装软件包 该选项使用来自 In
  • 将数据帧单列中的值向上移动

    使用这样的示例数据 example data frame x c 1 2 3 4 5 6 7 8 y c 1 2 3 4 5 6 7 8 z c 1 2 3 4 5 6 7 8 看起来像这样 x y z 1 1 1 1 2 2 2 2 3
  • 如何从线性模型 (lm) 预测 x 值

    我有这个数据集 x lt c 0 40 80 120 160 200 y lt c 6 52 5 10 4 43 3 99 3 75 3 60 我使用计算了一个线性模型lm model lt lm y x 我想知道的预测值x如果我有新的y值

随机推荐

  • 如何关闭 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