2

使用 matplotlib 3d 绘图时如何避免标签和刻度的重叠?

下面的代码生成一个 matplotlib-figure。此图显示了在标签中使用 LaTeX 时标签填充和 3D 绘图的问题。(或许有足够权限的人可以发个对应的图)

如果在标签中不使用 LaTeX 有一个解决方案: 在 matplotlib 的 Axes3D 中调整标签定位

如果您使用 LaTeX 来呈现标签,那么开头的 \n 将被忽略(或产生错误)!从 \phantom 和 \vspace*,从 \mbox 到 minipage,我已经尝试了很多,但它不起作用!mplot3d + x,y,zlabel + LaTeX 有什么解决方案吗

在 mplot3d API 文档(http://matplotlib.org/mpl_toolkits/mplot3d/api.html)中提到,参数 labelpad 没有被喷射实现“目前,labelpad 对标签没有影响。”。

例子:

import matplotlib.pyplot as pyplot  
import mpl_toolkits.mplot3d

from matplotlib.pyplot import rc  
rc('text', usetex = True)  
rc('font', size=9, family='serif', serif='Times')

fig = pyplot.figure(figsize=(8/2.5, 5/2.5))  
ax = fig.gca(projection='3d')

plot = ax.plot([.1,.2,.3],[.1,.2,.3])

xLabel = ax.set_xlabel('XxxXxxX')  
yLabel = ax.set_ylabel('YyyYyyY')  
zLabel = ax.set_zlabel('ZzzZzzZ')  # \n in here produces an error or is ignored see below   

pyplot.show()   

...我尝试过的事情:
ax.set_ylabel(r"\phantom{x}" "\n" r'ABC', linespacing=-0.5)

4

1 回答 1

2

我通过向下滚动找到了一个解决方案:在 matplotlib 的 Axes3D 中调整标签定位

只需添加:

ax.xaxis._axinfo['label']['space_factor'] = 2.0
ax.yaxis._axinfo['label']['space_factor'] = 2.0
ax.zaxis._axinfo['label']['space_factor'] = 2.0

这是唯一对我有用的解决方案。

于 2015-09-01T14:05:24.093 回答