Z 标签方向在 3D 绘图中随更多字符而反转



>我在使用 matploblib 的 3D 绘图时遇到了一个非常奇怪的问题,如果我制作一个长度超过 4 个字符的 z 轴标签,它将反转标签的方向。我尝试过使用标签填充和字体大小,但似乎找不到这样做的原因。以下代码将使 z 标签正确向上:

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ax.patch.set_facecolor('black')
plt.setp([ax.get_xticklines(), ax.get_yticklines(), ax.get_xticklabels(), ax.get_yticklabels(),
ax.get_zticklabels(),ax.spines.values(), ax.set_xlabel('east',fontsize=14,labelpad=8),
ax.set_ylabel('north',fontsize=14, labelpad=5),ax.set_zlabel('al m', labelpad =0)],
color='#03fc14')
axes = fig.gca(projection='3d')
zLabel = axes.set_zlabel('al m',fontsize=14, color='#03fc14',rotation='vertical', labelpad =-5 )
ax.scatter(ku.east, ku.north, ku.alt, color = 'blue', alpha = 0.3,label = 'ku')
ax.scatter(*list(zip(*atm.coords[slice(0,len(atm.coords),50)])), atm.alt[slice(0,len(atm.coords),50)],
color = 'orange', alpha=0.3, label = 'atm')
plt.legend(loc='best')
ax.view_init(26, 40)
fig.tight_layout()

而此代码(除了 z 标签之外不更改任何其他内容(会反转 z 标签的方向:

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ax.patch.set_facecolor('black')
plt.setp([ax.get_xticklines(), ax.get_yticklines(), ax.get_xticklabels(), ax.get_yticklabels(),
ax.get_zticklabels(),ax.spines.values(), ax.set_xlabel('east',fontsize=14,labelpad=8),
ax.set_ylabel('north',fontsize=14, labelpad=5),ax.set_zlabel('alt m', labelpad =0)],
color='#03fc14')
axes = fig.gca(projection='3d')
zLabel = axes.set_zlabel('alt /m',fontsize=14, color='#03fc14',rotation='vertical', labelpad =-5 )
ax.scatter(ku.east, ku.north, ku.alt, color = 'blue', alpha = 0.3,label = 'ku')
ax.scatter(*list(zip(*atm.coords[slice(0,len(atm.coords),50)])), atm.alt[slice(0,len(atm.coords),50)],
color = 'orange', alpha=0.3, label = 'atm')
plt.legend(loc='best')
ax.view_init(26, 40)
fig.tight_layout()

以下是指向情节图像的链接:

使用"al m"作为 z 轴标签

使用"alt m"作为 z 轴标签

我正在使用 matplotlib 版本 3.1.1 和 python 版本 3.7.4。

任何解释或建议将不胜感激。

我设法克服了以下问题:

axes = fig.gca(projection='3d')
ax.zaxis.set_rotate_label(False)  # disable automatic rotation (so that I can actually subsequently change it)
zLabel = axes.set_zlabel('alt /m',fontsize=14, color='#03fc14',rotation=90, labelpad =0 )

相关内容

  • 没有找到相关文章

最新更新