11

3D matplotlib プロットの目盛りラベルの位置を設定/修正する方法を考え出そうとしています。目盛りラベルが目盛りと一致しません。この問題は、多くの目盛りラベルが必要な場合に特に顕著になるようです。

私の質問を説明するために、matplotlib ドキュメントの例 ( http://matplotlib.org/examples/mplot3d/polys3d_demo.html ) を変更しました。

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(10,10))
ax = fig.gca(projection='3d')

cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)

xs = np.arange(0, 10, 0.4)
verts = []
zs = np.arange(50)
for z in zs:
    ys = np.ones(len(xs))*z
    ys[0], ys[-1] = 0, 0
    verts.append(list(zip(xs, ys)))

poly = PolyCollection(verts,facecolor='c')
poly.set_alpha(0.7)
ax.add_collection3d(poly, zs=zs, zdir='y')

ax.set_xlabel('X')
ax.set_xlim3d(0, 10)
ax.set_ylabel('Y')
ax.set_ylim3d(-1, len(zs))
ax.set_yticks(np.arange(len(zs)))
labels = {}
for l_c in zs:
    labels[l_c] = 'This Looks Bad'
ax.set_yticklabels(labels,rotation=-15)
ax.set_zlabel('Z')
ax.set_zlim3d(0, ys.max())

plt.show()

ここに画像の説明を入力

問題は、目盛りラベルを目盛り位置に合わせるにはどうすればよいかということです。

4

3 に答える 3

16

これらの配置を使用することで、より良い配置が得られます。

ax.set_yticklabels(labels,rotation=-15,
                   verticalalignment='baseline',
                   horizontalalignment='left')

配置を確認できるように、目盛りマーカーを減らして例を変更しました。

ここに画像の説明を入力

于 2013-04-17T14:07:40.370 に答える