污染玫瑰图网格

2023-12-12

我正在尝试创建一个污染玫瑰图,如链接中所述绘制 Windrose:制作浓度设置为颜色的污染玫瑰

回复中的示例有效,但是当我使用我的数据时,它给出了一个奇怪的图。有什么建议我哪里出错了吗?谢谢。

import matplotlib.pyplot as plt
import numpy as np

wd = [90.,297.,309.,336.,20.,2.,334.,327.,117.,125.,122.,97.,95.,97.,103.,106.,125.,148.,147.,140.,141.,145.,144.,151.,161.]
ws = [15,1.6,1.8,1.7,2.1,1.6,2.1,1.4,3,6.5,7.1,8.2,10.2,10.2,10.8,10.2,11.4,9.7,8.6,7.1,6.4,5.5,5,5,6]
oz = [10.,20.,30.,40.,50.,60.,70.,80.,90.,100.,110.,120.,90.,140.,100.,106.,125.,148.,147.,140.,141.,145.,144.,151.,161.]

pi_fac = 22/(7*180.)
wd_rad = [w * pi_fac for w in wd]
ws_r = np.linspace(min(ws),max(ws),16)

WD,WS = np.meshgrid(wd_rad,ws_r) 
C = oz + np.zeros((len(ws_r),len(wd)),dtype=float)
C = np.ma.masked_less_equal(C,10)

fig, ax = plt.subplots(subplot_kw={"projection":"polar"})
ax.pcolormesh(WD,WS,C,vmin=10, vmax=170) # I tried different vmin and vmax too

plt.show()

Pic with error


链接的帖子假设您有一个规则的方向和速度网格,但您的输入似乎是相当无序的组合。

根据颜色区域创建绘图oz值,你可以尝试tricontourf. tricontourf接收不需要位于网格上的 X、Y 和 Z 值并创建等值线图。尽管它适用于矩形布局,但它也可能适用于您的情况。不过,当从 360° 跨越到 0° 时,它会出现不连续性。

此示例的绘图还绘制了一个颜色条来显示哪个范围oz值对应于哪种颜色。vmin and vmax可以更改颜色的映射。

import matplotlib.pyplot as plt
import numpy as np

wd = [90, 297, 309, 336, 20, 2, 334, 327, 117, 125, 122, 97, 95, 97, 103, 106, 125, 148, 147, 140, 141, 145, 144, 151, 161]
ws = [15, 1.6, 1.8, 1.7, 2.1, 1.6, 2.1, 1.4, 3, 6.5, 7.1, 8.2, 10.2, 10.2, 10.8, 10.2, 11.4, 9.7, 8.6, 7.1, 6.4, 5.5, 5, 5, 6]
oz = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 90, 140, 100, 106, 125, 148, 147, 140, 141, 145, 144, 151, 161]

fig, ax = plt.subplots(subplot_kw={"projection": "polar"})

cont = ax.tricontourf(np.radians(np.array(wd)), ws, oz, cmap='hot')
plt.colorbar(cont)
plt.show()

demo plot

With ax.scatter(np.radians(np.array(wd)), ws, c=oz, cmap='hot', vmax=250)您可以创建一个散点图来了解输入在着色时的样子。

您可能想要合并 Python风玫瑰图书馆使极地图类似于风玫瑰图。

另一种方法可能更接近链接问题的目的,是使用 scipy 的interpolate.griddata将数据映射到网格。要消除没有数据的区域,可以使用“无”的“下”颜色,前提是vmin高于零。

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

wd = [90, 297, 309, 336, 20, 2, 334, 327, 117, 125, 122, 97, 95, 97, 103, 106, 125, 148, 147, 140, 141, 145, 144, 151, 161]
ws = [15, 1.6, 1.8, 1.7, 2.1, 1.6, 2.1, 1.4, 3, 6.5, 7.1, 8.2, 10.2, 10.2, 10.8, 10.2, 11.4, 9.7, 8.6, 7.1, 6.4, 5.5, 5, 5, 6]
oz = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 90, 140, 100, 106, 125, 148, 147, 140, 141, 145, 144, 151, 161]
wd_rad = np.radians(np.array(wd))
oz = np.array(oz, dtype=np.float)


WD, WS = np.meshgrid(np.linspace(0, 2*np.pi, 36), np.linspace(min(ws), max(ws), 16 ))
Z = interpolate.griddata((wd_rad, ws), oz, (WD, WS), method='linear')

fig, ax = plt.subplots(subplot_kw={"projection": "polar"})
cmap = plt.get_cmap('hot')
cmap.set_under('none')
img = ax.pcolormesh(WD, WS, Z, cmap=cmap, vmin=20)
plt.colorbar(img)
plt.show()

gridded plot

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

污染玫瑰图网格 的相关文章

随机推荐

  • 如何解决 Newtonsoft.JSON 依赖性问题?

    我们的服务器上有 NET Framework 4 6 2 我们的项目使用最新版本的Newtonsoft Json 当我尝试运行我们的项目时 它失败并出现以下错误 Could not load file or assembly System
  • Rails multi_db 与事务

    我最近在我的 Rails 2 3 10 应用程序上安装了 multi db gem 以便使用 MySql 主 从复制 自从安装 gem 以来 每次我在代码中使用事务时 例如 MyModel connection transaction do
  • 在 DatePicker 中设置时区 (Android)

    我在 Android 应用程序中使用 DatePicker 来显示用户可以选择的可用日期 我想显示 GMT 时区的日期 以便所有用户看到相同的日期 我还没有找到任何修改 DatePicker 的时区的方法 我看到 DatePicker 使用
  • 如何发出多个请求并等待数据来自Retrofit 2.0中的所有请求 - android

    当前代码 Retrofit retrofit new Retrofit Builder baseUrl Constant BASEURL addConverterFactory GsonConverterFactory create bui
  • 在 JavaScript 中获取工作日的下一个日期

    如何才能返回下一个date给定工作日的日期 可以是数字 0 6 或名称 Sunday Saturday 例如 如果今天 在2009 年 10 月 16 日星期五我通过了 Friday 它将返回今天的日期2009 年 10 月 16 日 Sa
  • 删除 Mongo 集合不会清理磁盘空间

    我有一个包含 750 000 个文档的集合 它占用了大约 7Gb 的磁盘空间 我已经删除了该集合 但是文件 test 0 test 11 仍然在磁盘上 如果我删除它们 那么我会丢失所有集合 而不仅仅是我删除的集合 Mongo 不应该删除它们
  • 为什么Java 6重写SortedMap中的keySet()、entrySet()和values()接口

    Java 5 http docs oracle com javase 1 5 0 docs api java util SortedMap html Java 6 https docs oracle com javase 6 docs ap
  • iOS 如何检测用户是否使用 home+power 进行了截图?

    我正在尝试检测用户是否截取屏幕截图 以警告他们这是一个受版权保护的视频 我尝试过达尔文通知 但它不起作用 NSMetadataQuery 可能是一个解决方案 但我们希望该应用程序也能在 iOS4 上运行 有人可以帮助我吗 谢谢 p 无法检测
  • SignalR 连接无法启动到 IIS 托管的应用程序

    我制作了一个应用程序 并尝试通过 SignalR 连接到后端 ASP NET Core 3 1 后端托管在 IIS 中 以便于开发 在客户端上调用 StartAsync 方法成功协商 但随后在 GET 上永远挂起 GET http loca
  • 使用 Jackson 忽略字段而不修改 POJO 类

    我的 POJO 类有 JsonIgnore在字段的声明上 而不是在 getter 和 setter 方法上 这是一个生成的文件 我无法对其进行太多更改 如何在使用时忽略该字段JsonGenerator Setting Using JsonI
  • 所有 tkinter 函数在程序启动时运行

    我在使用 tkinter 时遇到了一个以前从未遇到过的非常奇怪的问题 在任何地方为小部件 例如按钮或菜单项 设置命令时 该命令都会在应用程序启动时运行 基本上 该命令不会等到单击小部件才运行 在我的代码中 我知道我没有打包按钮 这是为了表明
  • 有没有更好的方法来迭代行(30000)的嵌套循环?

    我想在下表中找到包含重复电子邮件地址的行 当电子邮件地址重复时 我在以下代码的数据框中创建一个额外的列 其值为 ja 这对于少量行 150 来说很好 对于大量行 30000 脚本会挂起 有更好的方法来循环行吗 import pandas a
  • Scrapy:是否可以暂停Scrapy并在x分钟后恢复?

    我正在尝试抓取一个大型网站 他们有一个速率限制系统 scrapy是否可以在遇到403页面时暂停10分钟 我知道我可以设置一个 DOWNLOAD DELAY 但我注意到我可以通过设置一个小的 DOWNLOAD DELAY 来更快地抓取 然后在
  • Swift,从字符串中获取变量名称

    我有个问题 我知道这可以在 Ruby 中完成 不确定 Swift 是否可以 但从未做过类似的事情 我正在开发的程序的工作原理与此类似 如果用户在 TextView 中写入 a b 我的代码应该详细说明变量 a 和 b 之间的总和值 我的意思
  • 如何在postgres中根据IF条件删除表?

    我试图根据条件在启动时删除表 IF NOT EXISTS select from pg class where relname mytable and relpersistence u DROP TABLE IF EXISTS mytabl
  • 什么时候使用嵌套 Java 类真正有用?

    你能给我一个嵌套java类有用的具体例子吗 我正在研究它 我了解它是如何工作的 但我无法想象真正需要使用它的真实情况 太感谢了 Marco 关于何时使用嵌套类的最简洁的总结是 当该类在逻辑上是外部类 API 的一部分时 或者当它封装特定于外
  • 如何选择 ID 中包含特殊字符的元素?

    我有一个带有网格的页面 其中包含很多如果使用 奇怪的名称 输入来模拟数组
  • 如何知道 Flutter 中的 Nested Widget 内部发生了 pop 事件

    我目前正在构建应用程序 我需要使用嵌套路由来保持一个屏幕相同并在不同的屏幕上进行路由 我想当第二条路线弹出时 以便我可以更改扩展的值以填充整个屏幕 Github 中的要点 这是代码示例 import package flutter mate
  • R:如何从数据框中提取列表?

    考虑这个简单的例子 gt weird df lt data frame col1 c hello world again col weird list list 12 23 list 23 24 NA gt gt weird df A ti
  • 污染玫瑰图网格

    我正在尝试创建一个污染玫瑰图 如链接中所述绘制 Windrose 制作浓度设置为颜色的污染玫瑰 回复中的示例有效 但是当我使用我的数据时 它给出了一个奇怪的图 有什么建议我哪里出错了吗 谢谢 import matplotlib pyplot