【1】引言
前序已经学习了二维动态柱状图绘制教程,本次尝试探索三维动态柱状图绘制教程:
【2】项目设计
三维和二维的不同,要在一开始就定义。
二维的定义简单粗暴,只需要一行代码:
fig, ax = plt.subplots() # 定义要画图
到了三维则需要两行,一行说要画三维图,一行说这个图使用哪种画法:
fig=plt.figure() ax = fig.add_subplot(projection='3d')
另外在直方图输出的时候,调用的函数也是ax.bar3d():
def animate(i): # 自定义函数 ax.bar3d(x[i], np.sin(x[i]),np.cos(x[i]),0.1,0.1,abs(np.cos(x[i])))
这里的0.1,0.1,abs(np.cos(x[i]))代表的是方块的宽度、深度和高度,如需更深度的学习可通过点击下述链接直达官网:
https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.bar3d.html#mpl_toolkits.mplot3d.axes3d.Axes3D.bar3d
此时的完整代码为:
import matplotlib.pyplot as plt # 引入画图模块
import numpy as np # 引入计算模块
import matplotlib.animation as animation # 引入动画模块
from joblib import delayed
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x = np.linspace(0, 10, 100) # 定义自变量
def animate(i): # 自定义函数
ax.bar3d(x[i], np.sin(x[i]),np.cos(x[i]),0.1,0.1,abs(np.cos(x[i])))
ani = animation.FuncAnimation(fig, animate, interval=50
) # repeat=True, frames=len(x) - 1, interval=50 调用animation.FuncAnimation()函数画图
ani.save('ani-3d-bar-aixmls.gif') #保存动画
ax.set_title('ani-3d-bar-aixmls') #设置图名
plt.show() #输出图形
图1
import matplotlib.pyplot as plt # 引入画图模块
import numpy as np # 引入计算模块
import matplotlib.animation as animation # 引入动画模块
from joblib import delayed
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x = np.linspace(0, 10, 100) # 定义自变量
def animate(i): # 自定义函数
ax.bar3d(x[i], np.sin(x[i]),np.cos(x[i]),0.1,0.1,abs(np.cos(x[i])))
ani = animation.FuncAnimation(fig, animate, interval=50
) # repeat=True, frames=len(x) - 1, interval=50 调用animation.FuncAnimation()函数画图
ax.set_title('ani-3d-bar-aixmls') #设置图名
ani.save('ani-3d-bar-aixmls.gif') #保存动画
plt.show() #输出图形
【3】总结
经过自我探索,成功实现三维柱状图动图绘制。