Cartopy:无法绘制具有不确定性的向量场(以及相关问题)

2024-04-19

我已经尝试在 Cartopy 中绘制带有不确定性椭圆的矢量场有一段时间了。这个想法是,如果我有一个位置(纬度/经度)和一个向量(例如风速),但该向量具有不确定性(例如以标准差测量),那么我想绘制一个椭圆周围的箭头表示不确定性。在格林尼治标准时间,psvelo成功了,我的目标是像这样的东西 https://www.researchgate.net/figure/GPS-velocities-and-their-95-confidence-ellipses-in-a-Eurasia-fixed-reference-frame_fig1_331309175.

这与之前被问过的问题相同here https://stackoverflow.com/questions/37418479/how-to-plot-a-vector-field-with-error-ellipse-using-cartopy- 我重新打开它是因为我认为如果有人可以帮助我更好地理解变换并且我可以找到箭头尖端的位置,我可以自己绘制误差椭圆。另外,一些 Matplotlib/Cartopy 功能在过去 4 年中可能发生了变化。

所以,这是我到目前为止所尝试的:

  1. 制作地图,使用 quiver 绘制矢量,然后尝试访问返回的某种比例参数Quiver目的。我找不到任何有用的东西,尽管scale属性看起来像是正确的事情,但事实证明它永远不会被设置,除非我自己设置它。

  2. 如果我自己设置缩放比例,如果我的位置和矢量具有不同的单位,并且两者显然与轴宽度无关,我不知道如何执行此操作。例如,如果我决定在 10°E、40°N 处有一个 50 m/s 长的矢量,作为轴宽度的某个分数,我会怎样scale参数是?我尝试随机组合变换没有得到任何结果。 (这里的想法是,如果我能弄清楚这种关系,那么我就离知道将椭圆放在哪里更近了一步。)

  3. 我试图弄清楚quiver的自动缩放,看看我如何“预测”它将在内部做什么,然后用它来知道箭头的尖端在哪里。可悲的是,这是不像 Matlab 变体那么简单 https://stackoverflow.com/questions/32436528/plotting-just-the-endpoint-of-quiver,所以我也失败了。

  4. 最后我也不明白为什么我不能使用cartopy.crs.Geodetic()作为我的源坐标系。我得到的错误是invalid transform: Spherical quiver is not supported - consider using PlateCarree/RotatedPole.通过阅读 Cartopy 文档,如果我的矢量位置以纬度、经度和高度来测量,这不是合适的吗?

这是一个 MWE:

# imports
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
# data
lon, lat = np.array([10, 10.5]), np.array([40, 40])
east, north = np.array([0, 50]), np.array([50, 0])
# map
fig, ax = plt.subplots(subplot_kw={"projection": ccrs.Mercator()})
ax.set_extent([7, 13, 38, 42], ccrs.Geodetic())
ax.coastlines("50m")
q = ax.quiver(lon, lat, east, north, transform=ccrs.PlateCarree())
plt.show()

我确实认为这是 Cartopy 应该具备的功能,因为这是我迄今为止在使用 Python 进行地球科学应用时遇到的最大障碍之一。目前,我知道的唯一方法是从 Python 程序中编写 GMT 脚本文件,并使用 Python 系统调用运行 GMT,这确实很痛苦。

我知道GMT正在开发自己的Python界面 https://github.com/GenericMappingTools/pygmt,但他们甚至还没有整合所有的基本功能,所以任何人都猜测他们什么时候会达到psvelo...

感谢您的所有帮助和提示,

PBB


嗯,最困难的部分是 matplotlib 部分。如果我试图做到这一点,我会在让它在 Cartopy 中工作之前集中精力。从技术上讲,您需要的点位于由quiver命令(位于q._paths在您的 MWE 中)。一个更简单的解决方案是使用pivot='tip'使得箭头的点始终位于(x,y) point.

当您尝试使用 Cartopy 时出现的错误Geodetic是因为在球体上工作时正确执行每件事涉及更复杂的数学 - 因此并非所有事情都适用Geodetic。如果你使用PlateCarree,它将把 lon/lat 视为平面上的笛卡尔坐标。

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

Cartopy:无法绘制具有不确定性的向量场(以及相关问题) 的相关文章

  • Python GTK + webkit - 在 gtk.main() 之后插入 JavaScript

    我在终端中尝试了这个 一切正常 但是如果我在脚本内运行这个 我无法在 gtk main 之后插入 JavaScript import gtk import webkit w gtk Window b webkit WebView w add
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • 用于多个窗口的 Tkinter 示例代码,为什么按钮无法正确加载?

    我正在编写一个程序 应该 按一下按钮即可打开一个窗口 按另一个按钮关闭新打开的窗口 我使用类 以便稍后可以将代码插入到更大的程序中 但是 我无法正确加载按钮 import tkinter as tk class Demo1 tk Frame
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)

    我想使用 Selenium WebDriver 和 Python 在不同的选项卡中打开相当多的 URL 我不确定出了什么问题 driver webdriver Chrome driver get url1 time sleep 5 driv
  • 如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL?

    我是 Django 新手 目前正在尝试使用另一个数据库来保存我的模型 即MS SQL 我的数据库部署在docker容器中 903876e64b67 microsoft mssql server linux bin sh c opt mssq
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 如何更改matplotlib中双头注释的头大小?

    Below figure shows the plot of which arrow head is very small 我尝试了下面的代码 但它不起作用 它说 引发 AttributeError 未知属性 s k 属性错误 未知属性头宽
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器

随机推荐