使用LaTeX标签时,Matplotlib mplot3d标签和刻度重叠

时间:2013-03-25 09:41:17

标签: 3d matplotlib latex label padding

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

下面的代码生成了一个matplotlib-数字。此图显示了在标签中使用LaTeX时标签打印和3D绘图的问题。 (也许拥有足够权利的人可以发布相应的数字)

如果标签中没有使用LaTeX,有一个解决方案: Adjust label positioning in Axes3D of matplotlib

如果使用LaTeX渲染标签,则忽略开头的\ n(或产生错误)! 我已经从\ phantom和\ vspace *尝试了很多,从\ mbox到minipage,但它不起作用!对于mplot3d + x,y,zlabel + LaTeX

有什么解决方案吗?

在mplot3d API中提到了文档(http://matplotlib.org/mpl_toolkits/mplot3d/api.html),参数labelpad不是jet实现的'目前,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)

1 个答案:

答案 0 :(得分:1)

我在那里向下滚动找到了一个解决方案:Adjust label positioning in Axes3D of matplotlib

只需添加:

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

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