Matplotlib 中极坐标图的插值差异

2024-01-08

我正在尝试在极坐标图上生成等值线图,并在 matlab 中编写一些快速脚本以获得一些结果。出于好奇,我也想使用 matplotlib 在 python 中尝试同样的事情,但不知何故,我看到相同输入数据的不同组等高线图。我试图弄清楚发生了什么,以及是否有什么可以在我的 python 代码中进行调整,以便在这两种情况下获得相似的结果。

A screenshot of the matlab results is here: enter image description here

在matlab代码中我使用了scatteredinterpolant函数来获取插值数据,我假设由于使用的插值函数而发生差异?

输入数据是 -

Angles = [-180, -90, 0 , 90, 180, -135, -45,45, 135, 180,-90, 0, 90, 180 ]

Radii = [0,0.33,0.33,0.33,0.33,0.5,0.5,0.5,0.5,0.5,0.6,0.6,0.6,0.6]

Values = [30.42,24.75, 32.23, 34.26, 26.31, 20.58, 23.38, 34.15,27.21, 22.609, 16.013, 22.75, 27.062, 18.27]

这是在spyder 上使用python 2.7 完成的。我都尝试过scipy.interpolate.griddatamatplotlib.mlab.griddata结果相似。我无法获得nn方法工作于mlab.griddata因为它一直给我屏蔽数据。

如果我遗漏了任何相关内容,请道歉 - 如果需要任何其他信息,请告诉我,我会更新我的帖子。

Edit:

The linear scipt griddata image looks like: enter image description here

And the cubic scipy image looks like enter image description here

至于代码,这里是代码 - 我将插值类型字符串传递到该代码所在的函数中。所以“线性”和“三次”是两个输入。

val = np.array(list(values[i]))
radius = np.array(list(gamma[i]))    
ang = [math.radians(np.array(list(theta[i]))[x]) for x in xrange(0,len(theta[i]))]
radiiGrid = np.linspace(min(radius),max(radius),100)
anglesGrid = np.linspace(min(ang),max(ang),100)
radiiGrid, anglesGrid = np.meshgrid(radiiGrid, anglesGrid)
zgrid = griddata((ang,radius),val,(anglesGrid,radiiGrid), method=interpType)

角度输入是从np.array(list(theta[i]))[x]- 这是因为角度信息存储在元组列表中(这是因为我正在读入数据并对数据进行排序)。我查看了代码以确保数据正确并且看起来一致。 gamma对应于半径,values是我提供的样本数据中的值。 希望这可以帮助!


极坐标图在matplotlib可能会变得棘手。发生这种情况时,一个快速解决方案是将半径和角度转换为 x,y,以法线投影进行绘制。然后制作一个空极轴叠加在其上:

from scipy.interpolate import griddata


Angles = [-180, -90, 0 , 90, 180, -135, 
          -45,45, 135, 180,-90, 0, 90, 180 ]

Radii = [0,0.33,0.33,0.33,0.33,0.5,0.5,
         0.5,0.5,0.5,0.6,0.6,0.6,0.6]

Angles = np.array(Angles)/180.*np.pi
x = np.array(Radii)*np.sin(Angles)
y = np.array(Radii)*np.cos(Angles)

Values = [30.42,24.75, 32.23, 34.26, 26.31, 20.58, 
          23.38, 34.15,27.21, 22.609, 16.013, 22.75, 27.062, 18.27]

Xi = np.linspace(-1,1,100)
Yi = np.linspace(-1,1,100)

#make the axes
f = plt.figure()
left, bottom, width, height= [0,0, 1, 0.7]
ax  = plt.axes([left, bottom, width, height])
pax = plt.axes([left, bottom, width, height], 
                projection='polar',
                axisbg='none')
cax = plt.axes([0.8, 0, 0.05, 1])
ax.set_aspect(1)
ax.axis('Off')


# grid the data.
Vi = griddata((x, y), Values, (Xi[None,:], Yi[:,None]), method='cubic')
cf = ax.contour(Xi,Yi,Vi, 15, cmap=plt.cm.jet)

#make a custom colorbar, because the default is ugly
gradient = np.linspace(1, 0, 256)
gradient = np.vstack((gradient, gradient))
cax.xaxis.set_major_locator(plt.NullLocator())
cax.yaxis.tick_right()
cax.imshow(gradient.T, aspect='auto', cmap=plt.cm.jet)
cax.set_yticks(np.linspace(0,256,len(cf1.get_array())))
cax.set_yticklabels(map(str, cf.get_array())[::-1])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 中极坐标图的插值差异 的相关文章

  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Android 中的 BLE 广告

    我正在开发一个应用程序来在 android 中发送 BLE 广告包 我使用 AdvertiseData 和 AdverstiseSettings 类来生成广告数据包 但是当我执行 StartAdvertising 时 它总是给我一个错误代码
  • 从 ant 通过 sshexec 将密码传递给“su”命令

    有什么方法可以将密码传递给linux su 命令吗 我正在尝试使用 sshexec 和 Ant 自动化部署 作为其中的一部分 我需要执行 su 命令 但我找不到为其提供密码的方法 su 命令没有像 sudo 那样的 S 开关 我尝试在 ss
  • 调整表单大小,同时保持纵横比

    我有一个窗口 在其中显示图片 我希望用户能够调整此窗口的大小 但是 保持其与图像的宽高比相同 这样窗口上就不会出现大的空白区域 我在 OnResize 事件中尝试的是这样的 DragWidth Width DragHeight Height
  • 在 Google 应用程序脚本、电子表格中添加前导零

    我有一个主表 我正在从那里复制值并将其放入新选项卡中 但是当我在新选项卡中显示数字时 它会去掉前导零 例如 在我的主表中 我有 00734 我将其复制到新选项卡 它显示为 734 这是我用来复制值的代码 var values active
  • 如何为 Objective-C 和 Swift 制作一个通用的 iOS 库?

    我需要为 iOS 创建一个库 框架或静态库 我还没有决定 它可以在 Objective C 和 Swift 项目中使用 这样做的最佳方法是什么 在我看来 我有三个选择 用 Objective C 编写库并添加对 Swift 的支持 桥接头文
  • 如何使用 Fakes Framework shims 模拟/隔离 VS 2012 中的内部类?

    所以 问题是我的程序集中有一堆内部类 由我想要测试的类使用 由于访问器已从 VS2012 中删除 我可以使用 InternalsVisibleTo 这非常有效 除了当我尝试 shimify 我的内部类时 它们对 Fakes 框架不可见 我还
  • 如何使用 CSS 调整图像大小以适合其容器

    我想制作具有恒定宽度和高度的 div 其中包含尺寸未知的子图像 像这样的东西 我最接近的是max height inherit max width inherit但它改变了纵横比 parent border 1px solid width
  • 数据封装...?

    谁能向我解释一下 Objective C 中的数据封装是什么 有人告诉我这是 Objective C 的一个重要概念 但我不明白为什么 向我解释一下 就像我 5 岁一样 然后又好像我 25 岁一样 谢谢你的时间 丹尼尔 From http
  • 将日期格式代码转换为日期

    用户应该以以下格式输入日期 m d Y 我需要做的是将日期转换为 11 11 2013 这是今天的日期 我没有太多处理日期的工作 有没有某种方法可以开箱即用地进行这种转换 我查看了 DateTime 选项 但找不到我需要的内容 Edit 从
  • 这个错误是由于编译器对 RefCell 的特殊了解造成的吗?

    fn works lt a gt foo Option lt a mut String gt s a mut String fn error lt a gt foo RefCell
  • 如何正确使用 nextjs 中间件功能和 getServerSideProps 功能?

    我正在尝试使用 nextjs 中间件功能 这里我创建中间件文件并添加此代码 import type NextRequest from next server import NextResponse from next server expo
  • Indy 在每个 72 个字符处添加 = 并使用多部分表单数据发布

    通过 Delphi XE 和 Indy 我得到了一些提交到 Web 表单的代码 idhttp TidHttp create postData TIdMultiPartFormDataStream Create try postData Ad
  • 点击 UIAlertController 外部时如何关闭 UIAlertController?

    如何解雇UIAlertController当点击外部时UIAlertController 我可以添加一个UIAlertAction风格的UIAlertActionStyleCancel驳回UIAlertController 但我想添加当用户
  • .net 中的 IE 插件开发

    我如何在 net 中为 ie 开发插件 我基本上希望开发一个像 IE7Pro 这样的内联拼写检查插件 看一下这个 开发 IE 插件 http www enhanceie com ie dev asp
  • 使 flex item 为其文本的宽度

    我想要一个有两列的布局 其中左列是某种侧边栏 现在我想在侧边栏中使用一些不应换行的文本 当我这样做时 它会导致某种溢出 然后使用overflow hidden隐藏了文本的很大一部分 如何修改左列以使用展开文本的宽度和右列以使用剩余空间而不丢
  • 构建 docker-compose 映像时无法连接到 MySQL

    我有 docker compose 的配置 在构建数据库步骤中 django 管理抛出错误 django db utils OperationalError 2002 无法连接到 127 0 0 1 115 上的MySQL服务器 我认为 码
  • numpy 将分类字符串数组转换为整数数组

    我正在尝试将分类变量的字符串数组转换为分类变量的整数数组 Ex import numpy as np a np array a b c a b c print a dtype gt gt gt S1 b np unique a print
  • Angular HTML5 URL - 服务器配置

    我读过 AngularJS 使用 hashbang URL 作为默认值 但这不是一个优势 因此应该使用 HTML5 URL 为了在客户端配置此行为 必须完成以下操作 locationProvider html5Mode true 在服务器端
  • INSTALL_NON_MARKET_APPS 替代方案?

    我需要检查 安装来自未知来源的应用程序 选项是否启用或禁用 然而 INSTALL NON MARKET APPS在 API 17 中已弃用 是否有新的替代方法来检查这一点 这是旧的检查方法 boolean canInstallFromOth
  • Matplotlib 中极坐标图的插值差异

    我正在尝试在极坐标图上生成等值线图 并在 matlab 中编写一些快速脚本以获得一些结果 出于好奇 我也想使用 matplotlib 在 python 中尝试同样的事情 但不知何故 我看到相同输入数据的不同组等高线图 我试图弄清楚发生了什么