【1】引言
前序已经学习过散点图输出和极坐标图输出,文章链接包括但不限于下述部分:
python画散点图|scatter()函数小试牛刀(入门级教程)_python ax.scatter-CSDN博客
python画图|极坐标中画散点图_极坐标上的散点图-CSDN博客
【2】自主探索
在此基础上,我自主探索了极坐标下的散点图输出。
相关代码见:
python
import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块
import matplotlib.animation as animation #引入动画模块
fig = plt.figure() #定义要画图
ax = fig.add_subplot(projection='polar') #定义要画极坐标图
#ax.set_xlim([0, 10])
scatters = ax.scatter(0, 2,5) #定义初始散点
x = np.linspace(0, 10,100) #定义自变量
def animate(i): #自定义动画函数
ax.scatter(x[i], x[i]**2, 12*x[i]) #极坐标中的散点的坐标点(x[i], x[i]**2),散点大小12*x[i]
return scatters,
ani = animation.FuncAnimation(fig, animate) #输出动画
# To save the animation using Pillow as a gif
# writer = animation.PillowWriter(fps=15,
# metadata=dict(artist='Me'),
# bitrate=1800)
ani.save('polar-scatter.gif') #保存动画
plt.show() #输出图形
++图1++
【3】代码解读
具体的代码书写步骤为:
首先引入画图、计算和动画模块:
import matplotlib.pyplot as plt #引入画图模块 import numpy as np #引入计算模块 import matplotlib.animation as animation #引入动画模块
然后定义画图,确认画极坐标图:
fig = plt.figure() #定义要画图 ax = fig.add_subplot(projection='polar') #定义要画极坐标图
之后给出初始散点和自变量:
scatters = ax.scatter(0, 2,5) #定义初始散点 x = np.linspace(0, 10,60) #定义自变量
然后定义一个动画函数:
def animate(i): #自定义动画函数 ax.scatter(x[i], x[i]**2, 120*x[i],cmap='blues_r') #极坐标中的散点的坐标点(x[i], x[i]**2),散点大小12*x[i] return scatters,
最后调用动画模块输出图形:
ani = animation.FuncAnimation(fig, animate) #输出动画 # To save the animation using Pillow as a gif # writer = animation.PillowWriter(fps=15, # metadata=dict(artist='Me'), # bitrate=1800) ani.save('polar-scatter.gif') #保存动画 plt.show() #输出图形
【4】代码优化
由于极坐标下,一个完整的圆周对应角度是360度即2π,因此将自变量的值设置为[0,6.28]即可:
x = np.linspace(0, 6.28,100) #定义自变量
然后为了多输出几个图形,定义动画函数为:
def animate(i): #自定义动画函数 ax.scatter(x[i],np.cos(x[i])) #弦长输出余弦 ax.scatter(x[i], np.sin(x[i])) #弦长输出正弦 ax.scatter(x[i],-np.cos(x[i])) #弦长输出余弦取负值 return scatters,
此时运行代码的输出图像为:
图2
【5】代码完善
给极坐标的动图增加一个图名:
ax.set_title('polar-scatter-aixmls')
++图3++
【6】总结
自主探索了极坐标散点动图绘制技巧。