一、matplotlib3D图
matplotlib3D是matplotlib中的一种图形绘制工具,可以用来制作三维图形,特别适合用于数据可视化。使用matplotlib3D可以绘制曲面图、散点图、线框图等多种类型的图形。
下面是一个绘制曲面图的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成X和Y的数据 X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) # 生成Z的数据 R = np.sqrt(X ** 2 + Y ** 2) Z = np.sin(R) # 绘制曲面图 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot) # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
二、matplotlib3D盒图
matplotlib3D还可以用来绘制盒图,盒图可以显示数据的分布情况,主要用于观察数据的离散程度和异常点。
下面是一个绘制盒图的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 生成数据 np.random.seed(100) data = np.random.normal(size=(100, 3)) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制盒图 ax.boxplot(data) # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
三、matplotlib3D截面
matplotlib3D还可以用来展示截面效果,将三维图形在某一维度上截面呈现,可以更好地观察数据的分布情况。
下面是一个绘制截面的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成X、Y和Z的数据 X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X ** 2 + Y ** 2) Z = np.sin(R) # 绘制曲面图 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot) # 绘制z=0处的截面 cset = ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=plt.cm.hot) # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
四、matplotlib3D圆柱图
matplotlib3D可以绘制圆柱图,用于比较不同数据之间的柱状图。
下面是一个绘制圆柱图的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成数据 x = np.random.sample(10) y = np.random.sample(10) z = np.zeros(10) # 绘制圆柱图 ax.bar3d(x, y, z, 0.1, 0.1, z+1) # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
五、matplotlib3D柱状图
matplotlib3D也可以用来绘制三维柱状图,可以更好地显示三元数据的关系。
下面是一个绘制柱状图的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成数据 x = np.arange(4) y = np.arange(4) z = np.random.randint(0, 10, size=4) # 绘制柱状图 ax.bar(x, y, z, zdir='y', color=['r', 'g', 'b', 'y']) # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
六、matplotlib3D柱形图
matplotlib3D还可以用来绘制柱形图,与柱状图不同的是,柱形图的每一个柱子是由线条组成的,更适合用来展示某些数据的变化趋势。
下面是一个绘制柱形图的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成数据 x = np.arange(4) y = np.arange(4) z = np.random.randint(0, 10, size=4) # 绘制柱形图 ax.plot(x, y, z, 'bo-', zdir='y') # 设置轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
七、matplotlib3D图旋转
matplotlib3D提供了旋转图形的方法,可以更好地展示不同角度下的数据分布情况。
下面是一个旋转图形的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成数据 x = np.arange(4) y = np.arange(4) z = np.random.randint(0, 10, size=4) # 绘制柱形图 ax.plot(x, y, z, 'bo-', zdir='y') # 旋转图像 for angle in range(0, 360): ax.view_init(30, angle) plt.draw() plt.pause(0.001) plt.show()
八、matplotlib3D坐标轴美化
matplotlib3D可以美化坐标轴,包括更改标题、标签、范围等。
下面是一个美化坐标轴的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成X、Y和Z的数据 X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X ** 2 + Y ** 2) Z = np.sin(R) # 绘制曲面图 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot) # 美化坐标轴 ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') ax.set_xlim(-6, 6) ax.set_ylim(-6, 6) ax.set_zlim(-1, 1) plt.show()
九、matplotlib3D坐标系绘制文字
matplotlib3D还可以用来在图形中添加文字标注,方便观察者更好地理解数据分布情况。
下面是一个在坐标系中添加文字标注的代码示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制三维坐标系 ax.text(2, 0, 0, 'x') ax.text(0, 2, 0, 'y') ax.text(0, 0, 2, 'z') plt.show()
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/242035.html