如何用np.arange()创建轴范围正确的3D散点图?
解决3D散点图轴范围问题
首先,你的代码存在两个关键问题:
- 用
np.arange(0,20,0.2)生成的x、y是线性递增序列,导致散点呈现直线分布,和参考图的随机散点形态不符 - y轴的生成范围与参考图不匹配,且未显式指定轴范围来锁定显示区间
以下是修正后的代码:
from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt fig = plt.figure(figsize=[15,15]) # 生成和参考图匹配的随机数据,确保三个维度长度一致 z = 520 * np.random.random(100) x = np.random.uniform(0, 20, size=100) # x轴范围0-20,随机分布 y = np.random.uniform(0, 100, size=100) # y轴范围0-100,匹配参考图 ax3 = fig.add_subplot(2,2,3, projection='3d') ax3.set_xlabel('x', c='r', size=14) ax3.set_ylabel('y', c='r', size=14) ax3.set_zlabel('z', c='r', size=14) # 显式设置各轴范围,精准控制显示区间 ax3.set_xlim(0, 20) ax3.set_ylim(0, 100) ax3.set_zlim(0, 520) ax3.scatter3D(x,y,z, c=z, cmap='jet') ax3.view_init(25,45);
关键说明:
- 用
np.random.uniform()生成随机分布的x、y数据,替代线性序列,还原参考图的散点分布形态 - 通过
set_xlim()/set_ylim()/set_zlim()强制指定轴范围,完全匹配参考图的轴区间 - 确保x、y、z三个数组的长度完全一致(均为100),避免绘图时出现维度不匹配的报错
内容的提问来源于stack exchange,提问作者MCly
相关产品推荐
相关产品推荐

