python中28种极坐标绘图函数总结

 更新时间:2023年09月10日 10:22:41   作者:微小冷  
这篇文章主要为大家详细介绍了python中28种极坐标绘图函数的用法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解一下

参考

python35种绘图函数总结,3D、统计、流场,实用性拉满

matplotlib中的画图函数,大部分情况下只要声明坐标映射是polar,就都可以画出对应的极坐标图。但极坐标和直角坐标的坐标区间不同,所以有些数据和函数关系适合在直角坐标系中展示,而有些则适合在及坐标中展示。

基础图

函数坐标参数图形类别
plotx,y曲线图
stackplotx,y散点图
stemx,y茎叶图
scatterx,y散点图
polarx,y极坐标图
stepx,y步阶图
barx,y条形图
barhx,y横向条形图

bar和barh的对偶关系稍微有些抽象,可以理解为前者是以角度方向为x轴;而barh则是以半径方向为x轴。

代码如下

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(20)/2
y = x
fDct = {"plot" : plt.plot,  "stackplot": plt.stackplot,
        "stem" : plt.stem,  "scatter"  : plt.scatter,         
        "polar": plt.polar, "step"     : plt.step, 
        "bar"  : plt.bar,   "barh"     : plt.barh, }
fig = plt.figure(figsize=(14,6))
for i,key in enumerate(fDct, 1):
    ax = fig.add_subplot(2,4,i, projection="polar")
    fDct[key](x, y)
    plt.title(key)
plt.tight_layout()
plt.show()

误差线

函数坐标图形类别
errorbarx,y,xerr,yerr误差线
fill_betweenx,y1,y2纵向区间图
fill_betweenxy, x1, x2横向区间图

代码如下

x = np.arange(20)/2
y = x
y1, y2 = 0.9*y, 1.1*y
x1, x2 = 0.9*x, 1.1*x
xerr = np.abs([x1, x2])/10
yerr = np.abs([y1, y2])/10
fig = plt.figure(figsize=(12,4))
ax = fig.add_subplot(141, projection='polar')
ax.errorbar(x, y, yerr=yerr)
plt.title("errorbar with yerr")
ax = fig.add_subplot(142, projection='polar')
ax.errorbar(x, y, xerr=xerr)
plt.title("errorbar with xerr")
ax = fig.add_subplot(143, projection='polar')
ax.fill_between(x, y1, y2)
plt.title("fill_between")
ax = fig.add_subplot(144, projection='polar')
ax.fill_betweenx(y, x1, x2)
plt.title("fill_betweenx")
plt.tight_layout()
plt.show()

等高线polar

绘图函数坐标说明
contour[x,y,]z等高线
contourf[x,y,]z填充等高线
pcolormesh[x,y,]z伪彩图

由于imshow默认其绘图坐标是标准的1x1网格,而在极坐标种,这种网格的尺寸会随着r的增大而增大,从而变得极其不实用,所以下面对极坐标图的演示,就不包含imshow了。

代码如下

X, Y = np.indices([100,100])
X = X/100*np.pi*2
Y = Y/25 - 2
Z = (1 - np.sin(X) + np.cos(X)**5 + Y**3) * np.exp(-Y**2)
fDct = {"contour": plt.contour, "contourf":plt.contourf, 
    "pcolormesh" : plt.pcolormesh}
fig = plt.figure(figsize=(9,3))
for i,key in enumerate(fDct, 1):
    ax = fig.add_subplot(1,3,i, projection='polar')
    fDct[key](X,Y,Z)
    plt.title(key)
plt.tight_layout()
plt.show()

场图polar

绘图函数坐标说明
quiverx,y,u,v向量场图
streamplotx,y,u,v流场图
barbsx,y,u,v风场图

代码如下

Y, X = np.indices([10,10])
X = X/10*np.pi*2.5
Y = Y
#Y, X = np.indices([6,6])/0.75 - 4
U = 6*np.sin(X) + Y
V = Y - 6*np.sin(X)
dct = {"quiver":plt.quiver, "streamplot":plt.streamplot, 
       "barbs" :plt.barbs}
fig = plt.figure(figsize=(12,4))
for i,key in enumerate(dct, 1):
    ax = fig.add_subplot(1,3,i,projection='polar')
    dct[key](X,Y,U,V)
    plt.title(key)
plt.tight_layout()
plt.show()

统计图

绘图函数坐标说明
histx数据直方图
boxplotx箱线图
violinplotx小提琴图
enventplotx平行线疏密图
hist2dx,y二维直方图
hexbinx,y钻石图
piex饼图

极坐标在绘制直方图的时候,需要注意其横坐标是以2π为周期的,也就是说随机变量的最大值和最小值不得相差2π,否则会导致重叠。

由于极坐标绘图本质上是一种坐标映射,所以并不会把0和360°真正地等同起来,所以在hist2d中,整个图像并没有闭合。而最有意思的是饼图,直接给压扁了,让人很难一下子看出不同组分的比例关系。

代码如下

x = np.random.standard_normal(size=1000)
dct = {"hist"  : plt.hist, "violinplot" : plt.violinplot,
      "boxplot": plt.boxplot}
fig = plt.figure(figsize=(10,6))
for i,key in enumerate(dct, 1):
    ax = fig.add_subplot(2,3,i, projection='polar')
    dct[key](x)
    plt.title(key)
ax = fig.add_subplot(234, projection='polar')
ax.eventplot(x)
plt.title("eventplot")
x = np.random.randn(5000)
y = 1.2 * x + np.random.randn(5000) / 3
ax = fig.add_subplot(235, projection='polar')
ax.hist2d(x, y, bins=[np.arange(-3,3,0.1)] * 2)
plt.title("hist2d")
ax = fig.add_subplot(236, projection='polar')
ax.pie([1,2,3,4,5])
plt.title("pie")
plt.tight_layout()
plt.show()

非结构坐标图

绘图函数坐标说明
tricontourx,y,z非结构等高线
tricontourfx,y,z非结构化填充等高线
tricolorx,y,z非结构化伪彩图
triplotx,y三角连线图

代码如下

x = np.random.uniform(0, np.pi*2, 256)
y = np.random.uniform(-2, 2, 256)
z = (1 - np.sin(x) + np.cos(x)**5 + y**3) * np.exp(-y**2)
levels = np.linspace(z.min(), z.max(), 7)
fig = plt.figure(figsize=(12,4))
ax = fig.add_subplot(141, projection='polar')
ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5)
ax.tricontour(x, y, z, levels=levels)
plt.title("tricontour")
ax = fig.add_subplot(142, projection='polar')
ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5)
ax.tricontourf(x, y, z, levels=levels)
plt.title("tricontourf")
ax = fig.add_subplot(143, projection='polar')
ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5)
ax.tripcolor(x, y, z)
plt.title("tripcolor")
ax = fig.add_subplot(144, projection='polar')
ax.triplot(x,y)
plt.title("triplot")
plt.tight_layout()
plt.show()

以上就是python中28种极坐标绘图函数总结的详细内容,更多关于python极坐标的资料请关注脚本之家其它相关文章!

相关文章

  • python系列 文件操作的代码

    python系列 文件操作的代码

    这篇文章主要介绍了python系列 文件操作的代码,主要是使用了python的open、read、write是些打开、读取、写入,导入numpy主要是用到数组操作,需要的朋友可以参考下
    2019-10-10
  • Python实现读取json文件到excel表

    Python实现读取json文件到excel表

    这篇文章主要介绍了Python实现读取json文件到excel表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 对python调用RPC接口的实例详解

    对python调用RPC接口的实例详解

    今天小编就为大家分享一篇对python调用RPC接口的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 对python 读取线的shp文件实例详解

    对python 读取线的shp文件实例详解

    今天小编就为大家分享一篇对python 读取线的shp文件实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python定时检查某个进程是否已经关闭的方法

    python定时检查某个进程是否已经关闭的方法

    这篇文章主要介绍了python定时检查某个进程是否已经关闭的方法,涉及Python进程与时间的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • Python基于pywinauto实现的自动化采集任务

    Python基于pywinauto实现的自动化采集任务

    这篇文章主要介绍了Python基于pywinauto实现的自动化采集任务,模拟了输入单词, 复制例句, 获取例句, 清空剪切板, 然后重复这个操作,需要的朋友可以参考下
    2023-04-04
  • Python通过tkinter实现百度搜索的示例代码

    Python通过tkinter实现百度搜索的示例代码

    这篇文章主要介绍了Python通过tkinter实现百度搜索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 一文教你用python编写Dijkstra算法进行机器人路径规划

    一文教你用python编写Dijkstra算法进行机器人路径规划

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径,这篇文章主要给大家介绍了关于利用python编写Dijkstra算法进行机器人路径规划的相关资料,需要的朋友可以参考下
    2021-08-08
  • python函数enumerate,operator和Counter使用技巧实例小结

    python函数enumerate,operator和Counter使用技巧实例小结

    这篇文章主要介绍了python函数enumerate,operator和Counter使用技巧,结合实例形式总结分析了python内置函数enumerate,operator和Counter基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Python趣味挑战之给幼儿园弟弟生成1000道算术题

    Python趣味挑战之给幼儿园弟弟生成1000道算术题

    为了让弟弟以后好好学习,我特地用Python给他生成了1000道算术题让他做,他以后一定会感谢我的!文中有非常详细的代码示例,需要的朋友可以参考下
    2021-05-05

最新评论