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 に答える