使用LaTeX标签时Matplotlib mplot3d标签和记号重叠

2nbm6dog  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(182)

在使用matplotlib 3d绘图时如何避免标签和记号的重叠?
下面的代码生成了一个matplotlib- figure。这个图显示了在标签中使用LaTeX时labelpadding和3D绘图的问题。(也许有足够权限的人可以发布相应的图)
如果在标签中不使用LaTeX,有一个解决方案:在matplotlib的Axes 3D中调整标签位置
如果使用LaTeX渲染标签,则忽略开头的\n(或产生错误)!我从\phantom和\vspace*,从\mbox到minipage尝试了很多,但都不起作用!有没有mplot 3d + x,y,zlabel + LaTeX的解决方案
在mplot 3d API docu(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)

wf82jlnq

wf82jlnq1#

我通过向下滚动找到了一个解决方案:在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

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

ev7lccsx

ev7lccsx2#

使用“\n”调整标签本身。
尝试

xLabel = ax.set_xlabel('\n\nXxxXxxX')  
yLabel = ax.set_ylabel('\n\nYyyYyyY')  
zLabel = ax.set_zlabel('\n\nZzzZzzZ')

相关问题