一、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
微信扫一扫
支付宝扫一扫