Matplotlib Scatter3D
Scatter3D是Matplotlib中的一个3D散点图函数,可以用于绘制向量和带有XYZ轴的数据点,尤其适用于探索空间数据。Scatter3D可以通过设置xlim,ylim和zlim来限制数据范围。其中对于zlim参数未设置,可以使用caxis函数来获取z轴限制范围。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 创建画布和3D坐标系
fig = plt.figure(figsize=(10, 6))
ax = Axes3D(fig)
# 数据点
x = np.random.uniform(-5, 5, size=100)
y = np.random.uniform(-5, 5, size=100)
z = np.random.uniform(-5, 5, size=100)
# 绘制散点图
scatter = ax.scatter3D(x, y, z, s=50, alpha=0.6, depthshade=True)
# 设置坐标轴标签和标题
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.title('Matplotlib 3D Scatter Plot')
# 设置x、y、z轴的范围
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)
ax.set_zlim(-5, 5)
# 显示图像
plt.show()
阅读更多:Matplotlib 教程
Matplotlib Scatter3D中设置zlim
对于某些特殊的数据分析,需要在散点图的z方向上设置极限值,这时我们可以使用set_zlim()函数设置z轴限制范围。例如,我们绘制一个高斯分布的三维散点图,且限制z轴在 -2 到 2 的范围内。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 高斯分布点
mean = [0, 0, 0]
cov = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
x, y, z = np.random.multivariate_normal(mean, cov, 5000).T
fig = plt.figure(figsize=(10, 6))
ax = Axes3D(fig)
# 绘制散点图
scatter = ax.scatter3D(x, y, z, s=50, alpha=0.6, depthshade=True)
# 设置坐标轴标签和标题
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.title('Gaussian Distribution Scatter Plot')
# 将z轴限制在[-2, 2]之间
ax.set_zlim(-2, 2)
# 显示图像
plt.show()
设置zlim范围后,使用caxis函数获取范围
当在Scatter3D中设置了zlim范围后,那么我们可以通过caxis()函数获取z轴的限制范围。例如,下面的代码绘制了一个 x 和 y 轴满足高斯分布的 3D scatter3D,但是通过set_zlim方法将z轴的范围设置为3到5之间。我们可以用caxis()函数获取所设置的z轴范围。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 样本点
mean = [0, 0]
cov = [[1, 0], [0, 1]]
x, y = np.random.multivariate_normal(mean, cov, 5000).T
z = np.random.uniform(3, 5, size=5000)
fig = plt.figure(figsize=(10, 6))
ax = Axes3D(fig)
# 绘制散点图
scatter = ax.scatter3D(x, y, z, s=50, alpha=0.6, depthshade=True)
# 设置坐标轴标签和标题
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.title('Gaussian Distribution Scatter Plot')
# 将z轴限制在[3, 5]之间
ax.set_zlim(3, 5)
# 使用caxis函数获取所设置的z轴范围
zmin, zmax = scatter.axes.caxis._min, scatter.axes.caxis._max
print("z轴限制范围:[{}, {}]".format(zmin, zmax))
# 显示图像
plt.show()
总结
Scatter3D函数是Matplotlib中的一个非常重要的函数,它可以用于绘制3D散点图。同时,通过设置set_zlim()函数可以限制z轴的范围。在设置z轴范围后,我们可以使用caxis()函数获取设置的z轴限制范围。
极客笔记