Matplotlib 3D绘图z轴标签不显示问题求助
3D绘图Z轴标签不显示的解决办法
问题描述
绘制3D曲面图时,Z轴标签无法正常显示;但将标题设置为较长文本时,Z轴标签又能正常显示。需要在不修改标题内容的前提下,让Z轴标签可见,或提供替代解决方案。
已知mask1、mask2、mask3均为(100,100)形状的数组,对应值分别为20、32、49,绘图代码如下:
import matplotlib.pyplot as plt import numpy as np fig = plt.figure(figsize=(12, 4)) ax = fig.add_subplot(projection='3d') x, y = np.meshgrid(np.arange(100)*20, np.arange(100)*20) s1 = ax.plot_surface(x, y, mask1*20, linewidth=0, label='Reflector 1') s1._facecolors2d = s1._facecolor3d s1._edgecolors2d = s1._edgecolor3d s2 = ax.plot_surface(x, y, mask2*20, linewidth=0, label='Reflector 2') s2._facecolors2d = s2._facecolor3d s2._edgecolors2d = s2._edgecolor3d s3 = ax.plot_surface(x, y, mask3*20, linewidth=0, label='Reflector 3') s3._facecolors2d = s3._facecolor3d s3._edgecolors2d = s3._edgecolor3d ax.set(xlim=[0, 2000], ylim=([0, 2000]), zlim=([1000, 0]), xlabel=(r' $x [m]$'), ylabel=(r'$y [m]$'), zlabel=(r'$z [m]$')) ax.legend() ax.set_title('a short title', fontsize=18) plt.show()
可行解决方案
- 调整Z轴标签间距:在设置Z轴标签时,通过
labelpad参数增加标签与轴的距离,避免被遮挡:ax.set_zlabel(r'$z [m]$', labelpad=25) - 调整子图布局边距:通过
plt.subplots_adjust()修改右侧边距,给Z轴标签留出显示空间:plt.subplots_adjust(right=0.9) # 可根据实际显示效果调整数值 - 修改3D视角:调整绘图的俯仰角和方位角,让Z轴标签处于可视区域:
ax.view_init(elev=25, azim=50) # 自定义视角参数,直到标签可见 - 强制提升标签层级:将Z轴标签的渲染层级调高,避免被曲面或其他元素遮挡:
ax.zaxis.label.set_zorder(15)
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

