自定义蜘蛛图 --> 在 matplotlib 中显示极坐标图上点之间的曲线而不是直线

2023-11-23

我测量了不同产品在不同角度位置的位置(在完整旋转过程中以 60 度为步长的 6 个值)。我想使用极坐标图,而不是在笛卡尔图上表示我的值(其中 0 和 360 是同一点)。

With matplotlib,我有一个蜘蛛图类型的图表,但我想避免点之间的直线并显示这些点之间的推断值。我有一个还不错的解决方案,但我希望有一个很好的“单线”,我可以用它来对某些点进行更真实的表示或更好的切线处理。

有人有改进我下面的代码的想法吗?

# Libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Some data to play with
df = pd.DataFrame({'measure':[10, -5, 15,20,20, 20,15,5,10], 'angle':[0,45,90,135,180, 225, 270, 315,360]})

# The few lines I would like to avoid...
angles = [y/180*np.pi for x in [np.arange(x, x+45,5) for x in df.angle[:-1]] for y in x]
values = [y for x in [np.linspace(x, df.measure[i+1], 10)[:-1] for i, x in enumerate(df.measure[:-1])] for y in x]
angles.append(360/180*np.pi)
values.append(values[0])

# Initialise the spider plot
ax = plt.subplot(polar=True)

# Plot data
ax.plot(df.angle/180*np.pi, df['measure'], linewidth=1, linestyle='solid', label="Spider chart")
ax.plot(angles, values, linewidth=1, linestyle='solid', label='what I want')
ax.legend()

# Fill area
ax.fill(angles, values, 'b', alpha=0.1)

plt.show()

结果如下,我想要类似于橙色线的东西,带有某种样条线,以避免我目前得到的尖角

looking for a smooth curb on a polar graph


我有一个解决方案,它是其他解决方案的拼凑而成。它需要清理和优化,但它已经完成了工作!

随时欢迎提出意见和改进,请参见下文

# https://stackoverflow.com/questions/33962717/interpolating-a-closed-curve-using-scipy

from scipy import interpolate

x=df.measure[:-1] * np.cos(df.angle[:-1]/180*np.pi)
y=df.measure[:-1] * np.sin(df.angle[:-1]/180*np.pi)
x = np.r_[x, x[0]]
y = np.r_[y, y[0]]

# fit splines to x=f(u) and y=g(u), treating both as periodic. also note that s=0
# is needed in order to force the spline fit to pass through all the input points.
tck, u = interpolate.splprep([x, y], s=0, per=True)

# evaluate the spline fits for 1000 evenly spaced distance values
xi, yi = interpolate.splev(np.linspace(0, 1, 1000), tck)

def cart2pol(x, y):
    rho = np.sqrt(x**2 + y**2)
    phi = np.arctan2(y, x)
    return(rho, phi)

# Initialise the spider plot
plt.figure(figsize=(12,8))
ax = plt.subplot(polar=True)

# Plot data
ax.plot(df.angle/180*np.pi, df['measure'], linewidth=1, linestyle='solid', label="Spider chart")
ax.plot(angles, values, linewidth=1, linestyle='solid', label='Interval linearisation')
ax.plot(cart2pol(xi, yi)[1], cart2pol(xi, yi)[0], linewidth=1, linestyle='solid', label='Smooth interpolation')
ax.legend()

# Fill area
ax.fill(angles, values, 'b', alpha=0.1)

plt.show()

Smooth solution

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

自定义蜘蛛图 --> 在 matplotlib 中显示极坐标图上点之间的曲线而不是直线 的相关文章

  • 切片稀疏(scipy)矩阵

    我将不胜感激任何帮助 以理解从 scipy sparse 包中切片 lil matrix A 时的以下行为 实际上 我想根据行和列的任意索引列表提取子矩阵 当我使用这两行代码时 x1 A list 1 x2 x1 list 2 一切都很好
  • Python 2.7 将比特币私钥转换为 WIF 私钥

    作为一名编码新手 我刚刚完成了教程 教程是这样的 https www youtube com watch v tX XokHf nI https www youtube com watch v tX XokHf nI 我想用 1 个易于阅读
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • 为什么我无法在 Mac OS X Terminal.app 上的 Python 解释器中显示 unicode 字符?

    如果我尝试粘贴 unicode 字符 例如中间的点 在我的 python 解释器中它什么也不做 我在 Mac OS X 上使用 Terminal app 当我只是在 bash 中时 我没有遇到任何问题 但在解释器中 python Pytho
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • Pandas style.bar 颜色基于条件?

    如何渲染其中一列的 Pandas dfstyle bar color属性是根据某些条件计算的 Example df style bar subset before after color ff781c vmin 0 0 vmax 1 0 而
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 将 matplotlib 绘图中的小数点更改为逗号

    我在 Debian 上使用 python 2 7 13 和 matplotlib 2 0 0 我想将 matplotlib 绘图中轴和注释上的小数点标记更改为逗号 然而解决方案发布here https stackoverflow com q
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • 带指针的 GNU C 内联 asm“m”约束:地址与指向的值?

    我试图了解有关 Linux 中内联汇编器的一些事情 我正在使用以下功能 void test func Word32 var asm addl 0 eax m var return 它生成以下汇编代码 globl test func type
  • getDrawable() 在尝试从 imageview 获取位图时给出 null 对象

    我正在使用 glide 进行 imageview 我想从该 imageview 获取位图 ImageView imageView ImageView findViewById R id dp Glide with this load htt
  • android eclipse插件找不到有效路径

    我刚刚安装了最新的 galileo eclipse 版本 我添加了 最新的 adt 插件并将其配置为使用我的 android sdk r4 不幸的是 eclipse 插件已经失效了 由于某种原因 它 找不到 执行 android 工具 我收
  • 重新编码/重新调整不同级别的 data.frame 因素

    每次当我必须重新编码一组变量时 我都会想到 SPSS 重新编码功能 我必须承认这非常简单 有一个类似的recode函数于car包 它确实有效 但我们假设我想用factor I have data frame有多个值范围从 1 到 7 的变量
  • 如何使用二分查找从排序的 TreeSet 中检索元素?

    我正在尝试将多个排序列表合并到一个 TreeSet 中 然后我正在考虑在该 TreeSet 上应用二分搜索算法以 O log n 时间复杂度检索元素 下面是我的代码 其中我在我的方法之一中传递列表列表并将它们组合成TreeSet避免重复 里
  • 如何将 Promise.all() 与 chrome.storage() 一起使用?

    我有几个异步函数正在运行 我想等他们全部完成后再采取下一步行动 这是我用来获取所有键 值的代码chrome storage和Promise all 执行 var promise1 Promise resolve 3 var promise2
  • 在 Android 上使用 EWS Java API 时出现问题

    我尝试在 Android 应用程序中使用 EWS Java API v1 1 5 http archive msdn microsoft com ewsjavaapi 但遇到了许多问题 我下载了源代码 并按照提供的说明在 Eclipse 中
  • Java比较器用于多列排序?

    有没有Java开源比较器可以通过多个字段比较bean以进行多列排序 每列都可以升序或降序排序 对于单列排序 可以通过使用来实现org apache commons beanutils BeanComparator和 一起org spring
  • 如何在 Python 中将 H:MM:SS 时间字符串转换为秒?

    基本上我有这个问题的反面 Python 时间秒转 h m s 我有一个格式为 H MM SS 的字符串 始终为 2 位数字表示分钟和秒 我需要它代表的整数秒数 我怎样才能在Python中做到这一点 例如 1 23 45 将产生 5025 的
  • 当在标准错误中看到特定字符串时,如何终止进程?

    我需要启动一个流程 比如说foo 我希望看到标准输出 标准错误正常 但是grep字符串的 stderrbar Once bar发现于 标准错误foo应该被杀 这可能吗 我最初编写了一种涉及流混合的方法来做到这一点 但它不是很好 一些评论与该
  • 如何使用 PHP 和 CURL 上传具有多维 POSTFIELDS 的文件(多部分/表单数据)?

    我在使用 PHP 和 CURL 发布带有文件上传的多维数组时遇到问题 多维数组例如 post question Are you human post answers array yes no maybe post file path to
  • Chrome:未捕获的语法错误:输入意外结束

    在 Google Chrome 中加载页面时 我在控制台中收到模糊错误 未捕获的语法错误 输入意外结束 我不知道是什么原因造成的 我将如何调试这个错误 这个特殊的错误是一个令人烦恼的事实v8 在大多数情况下 您的 JavaScript 会以
  • 默认 WordML 单位测量?像素或点或英寸

    请澄清我的疑问WordML DOCX 默认单位测量是像素或点或 EMU 或英寸 这就是所谓的 DXA 每英寸有 1440 DXA 1英寸为72点 1 DXA 是一个点的 1 20 20 DXA 是 1 点 还有一种叫做动车组的东西 9144
  • HTML/HTML5 的默认命名空间是什么? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 根据这个page由一些名为 w3c 的用户指定的 HTML 的默认命名空间是 http www w3 org 1999 xhtml 他显然错了 因为 xhtml 被用于失败的基于 XM
  • 集成(Selenium)测试后回滚数据库

    有人对回滚由 Selenium 等集成测试框架进行的数据库事务的最佳实践或首选方式有什么建议吗 这是我们当前的情况 我们有一个 net web 项目 其中包含许多单元测试 这些单元测试在我们的单元测试环境中运行良好 每个测试都继承一个父类
  • 删除 Unix 中的回车符

    删除所有回车符的最简单方法是什么 r来自 Unix 中的文件 I m going to assume you mean carriage returns CR r 0x0d at the ends of lines rather than
  • 用于 iPod 同步的优秀 Python 库

    我正在制作一个音乐应用程序 并且希望能够从我的应用程序与 iPod 同步 有没有人有使用 python 做这件事的经验 如果有的话你会推荐什么 我没用过 但是libgpod似乎确实有 python 绑定
  • Git 表示刚刚签出的文件“不在版本控制之下”

    我有一个明显的印象 我的 Git 存储库不知何故被破坏了 这是我正在执行的顺序 git clone 远程的克隆字符串 这将创建一个文件 App android AndroidManifest xml git mv 应用程序 android
  • 如何使用私有存储库中存在的复合操作?

    我们对第三方服务进行了大量的健康检查 我们希望它们定期运行 因为当它们出现故障时 它会像代码中的错误一样影响我们的应用程序 知道 是他们而不是我们 可以显着减少故障排除时间 我们已经通过 github 操作设置了此运行状况检查并计划运行 但
  • 自定义蜘蛛图 --> 在 matplotlib 中显示极坐标图上点之间的曲线而不是直线

    我测量了不同产品在不同角度位置的位置 在完整旋转过程中以 60 度为步长的 6 个值 我想使用极坐标图 而不是在笛卡尔图上表示我的值 其中 0 和 360 是同一点 With matplotlib 我有一个蜘蛛图类型的图表 但我想避免点之间