为什么某些 xlims 和 ylims 在 ggplot 和 sf 中产生此错误?

2023-12-24

我正在学习使用 ggplot 和 sf 来处理空间数据。

当我尝试绘制以下图时,出现错误:

library(sf)
library(ggplot2)
library(rnaturalearth)
library(rnaturalearthdata)

world <- ne_countries(scale = "medium", returnclass = "sf")

ggplot(data = world) +
   geom_sf() +
   coord_sf(xlim = c(-102.15, -74.12), ylim = c(0, 33.97), expand = FALSE)

# Error in st_cast.POINT(x[[1]], to, ...) : 
#  cannot create MULTILINESTRING from POINT

然而,如果我只是在任一方向上稍微调整 ylims,它就会起作用!:

ggplot(data = world) +
   geom_sf() +
   coord_sf(xlim = c(-102.15, -74.12), ylim = c(0.01, 33.97), expand = FALSE)

or

ggplot(data = world) +
   geom_sf() +
   coord_sf(xlim = c(-102.15, -74.12), ylim = c(-0.01, 33.97), expand = FALSE)

所以这是一个很好的解决方案,但我想知道问题是什么?在最后的情节中,我注意到一些小岛屿悄悄进入了地图(加拉帕戈斯群岛?) 这个多边形的尖端看起来像一个点而不是一个多边形,是否以某种方式干扰了第一段代码?或者发生了其他事情,我怎样才能更优雅地解决呢?


我不相信你描述的问题是由加拉帕戈斯群岛引起的 - 因为它存在于scale = "small"其中省略了这些岛屿。

我尝试了世界国家数据集的另一个来源(来自自然地球的数据集不是球形有效的,所以我想排除这个问题)。错误仍然存​​在,现在我怀疑它与中的代码有关{ggplot2}- 特别是在默认情况下它如何处理赤道(即零)作为限制expand = TRUE被用户覆盖(可能值得在他们的 github 上提交问题)。

同时我建议两种可能的方法:

  • 在 ggplot 调用之外裁剪您感兴趣的区域(出于多种原因,这可能更可取 - 请参阅ggplot2 和 sf:geom_sf_text 在 coord_sf 设置的限制内 https://stackoverflow.com/questions/66031935/ggplot2-and-sf-geom-sf-text-within-limits-set-by-coord-sf/66032492#66032492)
  • 避免expand = FALSE在你的coord_sf() call

对于在数据级别(而不是在 ggplot 调用中的表示级别)裁剪世界对象,请考虑以下代码:

library(sf)
library(ggplot2)
library(rnaturalearth)
library(rnaturalearthdata)

world <- ne_countries(scale = "medium", returnclass = "sf") %>% 
  st_make_valid()

bounds <- matrix(c(-102.15, 0, 
                   -74.12, 0, 
                   -74.12, 33.97, 
                   -102.15, 33.97,
                   -102.15, 0), 
                 byrow = TRUE, ncol = 2) %>%
  list() %>% 
  st_polygon() %>% 
  st_sfc(crs = 4326) 

small_world <- st_intersection(world, bounds) 

ggplot(data = small_world) +
  geom_sf() 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么某些 xlims 和 ylims 在 ggplot 和 sf 中产生此错误? 的相关文章

  • ggplot2中的两列分组

    是否可以按两列分组 于是叉积就画出来了 经过geom point and geom smooth 例如 frame lt data frame series lt rep c a b 6 sample lt rep c glass wate
  • 如何使用ggplot2在轴标签上显示层次结构?

    I would like to create a plot like this with ggplot2 我在这里犯了一个小错误 导致并非所有标签都显示出来 显然我确实希望所有标签都显示 然而 我的谷歌搜索没有找到任何结果 我得到的最接近的
  • dplyr 中每组的 cumsum

    我开始享受dplyr但我陷入了一个用例 我希望能够申请cumsum数据框中的每个组与包 但我似乎无法正确处理 对于演示数据框 我生成了以下数据 set seed 123 len 10 dates as Date 2014 01 01 1 l
  • 如何更改 ggplot2 中轴标签上的小数位数?

    具体来说 这是在facet grid 中 在谷歌上广泛搜索了类似的问题 但不清楚语法或它的去向 我想要的是 y 轴上的每个数字在小数点后都有两位数 即使尾随一位是 0 这是scale y continuous 或 element text
  • 在ggplot2中添加边框或背景以缩放图例guide_colorbar

    我在 ggplot 图中有一个从白色到红色的颜色条 并且白色边框在白色背景上不太明显 有没有办法对图例中的刻度线进行不同的着色或在渐变比例周围添加边框 这是一个最小的例子 df lt data frame x lt rnorm 10 y l
  • 反转默认比例梯度ggplot2

    我是新手 我正在尝试设计热图 这是我的代码 ggplot gd aes Qcountry Q6 1 Q6d order TRUE geom tile aes fill prob colour white theme minimal labs
  • 如何用日语创建 ggplot2 标题?

    我正在准备日语演示文稿 并希望图像的标题和图例名称为日语 我可以让文本在 RStudio 中渲染得很好 但是当渲染图像时 日语字符仅显示为方框 x 10 10 y x x df data frame x y ggplot df aes x
  • 如何制作一连串的ggplots并在它们之间绘制箭头?

    对于一个项目 我需要绘制一些图并在它们之间放置箭头作为序列的指示 我想知道我是否可以用 ggplot 来做到这一点 是否可以使用 ggplot2 绘制一个干净的大箭头并将其添加到最终的多重图中 作为示例 我使用此代码来绘制绘图 librar
  • 闪亮的点击/画笔不适用于非笛卡尔坐标?

    我正在开发一个闪亮的应用程序 它应该让用户在由 ggplot2 生成的世界地图上选择地理数据点 如这个例子 http shiny rstudio com gallery plot interaction selecting points h
  • 将其他数据集的点添加到ggplot2

    关于这个主题已经有很多问题 但我找不到能回答我的具体问题的问题 我有一个barplot see testplot1 and testplot3如下 绘制数据集 bardata如下 并希望从另一个数据集向其添加点 pointdata 请参阅简
  • tidyverse 干扰 ggplot2 吗?无法访问map_data

    在控制台中运行这些命令 输出为 gt cty0 ggplot2 map data county gt library tidyverse Loading tidyverse ggplot2 Loading tidyverse tibble
  • ggsubplot 是否适用于 R 3.2.1+?

    CRAN 提供的 ggsubplot 版本与 R 的最新版本 例如 3 1 1 不兼容 运行 ggsubplot 示例会返回以下错误 Error in layout base data vars drop drop At least one
  • R ggplot2 分面保持比率但覆盖/定义输出图大小

    我目前正在使用 ggplot2 来比较不同组的统计数据 每个组属于不同的区域 这是通过运行 R 脚本的 Web 应用程序 tikiwiki CMS 插件 R 完成的 每个区域我可以有 2 到 30 个或更多组 相同的 R 脚本针对唯一网页中
  • ggplot2 中的中心图标题

    这个简单的代码 以及今天早上我的所有脚本 已经开始在 ggplot2 中给我一个偏离中心的标题 Ubuntu version 16 04 R studio version Version 0 99 896 R version 3 3 2 G
  • 如何使用 Facet R 添加线条[重复]

    这个问题在这里已经有答案了 所以我有一个多面图 我希望能够向其中添加随每个面而变化的线 这是代码 p lt ggplot mtcars aes x wt geom histogram bins 20 aes fill factor cyl
  • 如何在时间序列的中途更改ggplot2中的线属性?

    取以下两个时间序列的简单图 economics ggplot2 dataset require dplyr require ggplot2 require lubridate require tidyr economics gt gathe
  • ggplot2错误:美学必须是长度一,或者与数据长度相同问题:颜色、字母

    我收到此错误 错误 美学必须是长度一 或者与数据长度相同问题 颜色 字母 当我将 ggplot 与数据框一起使用时Z如图所示 Z lt data frame Name c A G C T T T AG AG GC GC CT CT AT A
  • 如何很好地注释 ggplot2(手册)

    Using ggplot2我通常使用geom text和类似的东西position jitter注释我的情节 然而 对于一个漂亮的情节 我经常发现手动注释是值得的 像下面这样 data2 lt structure list type str
  • 通过单击堆叠条形图打开选项卡

    我正在使用 R 构建一个包含转发的堆积条形图 ggplot and plotly 如果单击条形图的一部分 我希望打开一个新的浏览器选项卡并显示该特定日期的推文以及指定的转发量 但是 当我单击下面示例中的其中一个栏时 会打开一个不同的链接 表
  • 重叠并固定小平面中的 x 尺度(尺度=“自由”)以制作电影

    在另一篇文章中 Justin 的帮助下 我用以下方法绘制了模拟结果facet gridggplot2 中的选项 包含数据和答案的帖子在这里 使用facet grid选项通过ggplot2绘制数据框的列 https stackoverflow

随机推荐

  • R中有没有办法告诉某个纬度/经度坐标属于哪个大陆?

    我正在使用maps在 R 中打包 并希望在每个大陆上制作一个文本标签 说明我正在绘制的点有多少个在每个大陆上 虽然我可以制作粗略的方框来勾勒出每个大陆的轮廓 但它们并不那么准确 例如 有时包括欧洲 非洲的部分地区等 R 中是否有一些功能可以
  • Java 中的异常翻译与异常链接

    有什么区别Exception Translation and Exception Chaining在Java中 根据约书亚 布洛赫 in 有效的Java 异常翻译较高层应捕获较低级别的异常 并在其位置抛出可以用以下方式解释的异常 更高层次的
  • 在使用curses的Python程序中,Setupterm找不到终端

    我正在尝试使用Python 使用PyCharm 2 0 运行一个简单的curses脚本 这是我的脚本 import curses stdscr curses initscr curses noecho curses cbreak stdsc
  • 自定义 matplotlib 图:带有彩色单元格的棋盘式表格

    当我学习 python 和这个有趣的绘图库时 我开始使用 matplotlib 渲染绘图 我需要帮助解决我正在解决的问题的自定义绘图 可能已经有一个内置函数可以实现此目的 问题 我正在尝试绘制一个表格 矩形 作为包含 96 个单独单元格 8
  • WebGL 如何避免长时间着色器编译导致选项卡停顿

    我有一个巨大的着色器 需要一分多钟的时间来编译 在这个过程中完全停止了整个浏览器 据我所知 着色器编译不能异步 因此您可以在等待编译完成时运行其他 WebGL 命令 我已经尝试过以下操作 在一段时间内不要使用该特定着色器 这不起作用 因为大
  • 如何以编程方式将 css 类应用到 asp.net 控件?

    我想知道如何通过 C 后端将 CSS 类应用到 ASP NET 控件 本例中为 TextBox 例如
  • 如何将 int[] 连接到 .NET 中的字符分隔字符串?

    我有一个整数数组 int number new int 2 3 6 7 将它们转换为单个字符串的最简单方法是什么 其中数字由字符分隔 例如 2 3 6 7 我正在使用 C 和 NET 3 5 var ints new int 1 2 3 4
  • Angular:$http 请求给出 -1 状态

    Node js 服务器给出 这是一个字符串 写头 写 字符串 结束 当执行 http 请求时 我看到 Node js 服务器正在响应并发回信息 在 Angular 中我执行以下请求 angular module phoneList comp
  • JavaScript 查询选择器全部

    我正在编写的教程包含以下代码和以下注释 我不明白 i 评论 特别是为什么它说 所有第二个表格单元格 第二 是什么意思 这不是正确的英语 ii 当它说的时候 它到底在寻找什么td td 该程序是关于从表中获取数据 所以td td选择 html
  • JPA 多重联接

    我有这些课程 class Project ManyToOne Company owner ManyToMany Set
  • 光滑的滑块转到第一张幻灯片

    Slick 滑块设置为自动播放 播放时 幻灯片从左到右或从第一个到最后一个 当滑块到达最后一张幻灯片时 它将开始从最后一张幻灯片向后自动播放到第一张幻灯片 我希望当滑块到达最后一张幻灯片时 滑块从第一张幻灯片开始播放 而不是从最后一张幻灯片
  • 如何使用 sqlcmd 运行 sql 脚本文件并输出到 shell 和文件

    我正在尝试使用以下命令从文件运行 sql 脚本sqlcmd 使用以下命令 sqlcmd S
  • Ruby 中 $stdout 和 STDOUT 之间的区别

    在 Ruby 中 有什么区别 stdout 前面有美元符号 和STDOUT 全部大写 在进行输出重定向时 应该使用哪个以及为什么 同样适用于 stderr and STDERR Edit 刚刚找到一个相关问题 https stackover
  • 该结构的初始序列是什么?

    我遇到了最初的序列概念 通过标准搜索initial sequence短语只给出 3 个结果 并且没有给出定义 Section N3797 9 5 1 class union 如果标准布局联合包含多个标准布局结构 有着共同点的初始序列 9 2
  • Python CGI os.system 导致标头格式错误

    我正在运行 Apache 2 4 10 Raspbian 并且我正在使用 python 作为 CGI 但是当我尝试在简单代码中使用 os system 时 我收到此格式错误的标头错误 Wed Aug 31 17 10 05 715740 2
  • Visual Studio 2012 Ultimate 编辑 C# 代码时速度缓慢

    我检查了许多有关禁用图形加速 关闭 IntelliTrace 和使用 Sysinternals Process Monitor ProcMon 的文章 但我不知道如何找出导致我的编辑器速度慢得离谱的原因 ProcMon 显示 devenv
  • 最优算法是完整算法吗?

    我确实理解 完整的算法是一种如果有解决方案 该算法能够找到它的算法 而最佳算法是一种能够找到成本最低的解决方案的算法 但最优算法就是完整算法吗 可以简单解释一下吗 Thanks 是的 根据定义 寻找最优解需要证明最优性 这可以通过找到所有解
  • 插入符号位置不跟踪?

    我想做的是将关键代码放入一个数组中 以便稍后做一些有趣的事情 因此 我捕获击键 获取插入符位置并将关键代码放入数组中 在 MooTools 的帮助下 var keyArray form addEvent keyup function eve
  • 从html表单的下拉框中获取选定的值而不提交

    如何从html表单的下拉框元素中获取所选项目的文本 使用Python 当我使用鼠标从下拉框中选择一项时 如何将值存储到变量中 即不使用提交按钮 这是针对我在仅支持 Python 的应用程序引擎中执行的应用程序 你的问题表明对如何进行一些误解
  • 为什么某些 xlims 和 ylims 在 ggplot 和 sf 中产生此错误?

    我正在学习使用 ggplot 和 sf 来处理空间数据 当我尝试绘制以下图时 出现错误 library sf library ggplot2 library rnaturalearth library rnaturalearthdata w