Matplotlib绘制3D散点图时本地显示黑色窗口的问题求助
解决Matplotlib 3D散点图窗口显示黑色的问题
你的代码中所有点都落在x=y=z的直线上,再加上设置的视角参数elev=4, azim=-95,刚好让这条直线与当前视角下的平面投影重叠,导致视觉上窗口显示为黑色。可以通过以下几种方式修复:
方法1:调整数据,让点分散在三维空间
将ys和zs改为独立的数据,避免所有点集中在同一条直线上:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = Axes3D(fig, elev=4, azim=-95) xs = np.linspace(-2, 2, 60) ys = np.linspace(-2, 2, 60) zs = np.random.rand(60)*4 - 2 # 生成随机z值,让点在三维空间分散 ax.scatter(xs=xs, ys=ys, zs=zs) plt.show()
方法2:调整视角参数
修改elev(仰角)和azim(方位角)的值,换一个能清晰看到直线的视角:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = Axes3D(fig, elev=30, azim=45) # 调整为更常规的三维视角 xs, ys, zs = np.linspace(-2, 2, 60), np.linspace(-2, 2, 60), np.linspace(-2, 2, 60) ax.scatter(xs=xs, ys=xs, zs=xs) plt.show()
方法3:添加坐标轴标签与网格辅助显示
即使点集中在直线上,添加坐标轴标签和网格也能让窗口不再全黑,明确显示空间结构:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = Axes3D(fig, elev=4, azim=-95) xs, ys, zs = np.linspace(-2, 2, 60), np.linspace(-2, 2, 60), np.linspace(-2, 2, 60) ax.scatter(xs=xs, ys=xs, zs=xs) ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') ax.grid(True) plt.show()
内容的提问来源于stack exchange,提问作者IntegrateThis
相关产品推荐
相关产品推荐

