web-dev-qa-db-ja.com

matplotlib 3D軸の目盛り、ラベル、およびLaTeX

私は this サンプルスクリプトを実行していますが、次の変更を加えています。

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

ax.set_xlabel('$X$', fontsize=20, rotation=150)
ax.set_ylabel('$Y$')
ax.set_zlabel(r'$\gamma$', fontsize=30, rotation=60)
ax.yaxis._axinfo['label']['space_factor'] = 3.0

plt.show()
  1. 軸の目盛りを自分の選択に合わせて調整するにはどうすればよいですか?つまり、z軸にラベル2、0、および-2だけを取得し、必要なフォントサイズで取得するにはどうすればよいですか?これを2Dで行う方法は知っていますが、3Dではできません。

  2. 上記のスクリプトは以下を生成します。

enter image description here

X軸のラベルが歪んでいるのはなぜですか。これはこのスクリプトで行いたいのですが、z軸のラベル(ガンマ)ではありませんか?これは意味がありません。ギリシャ文字でラベル付けされたこの軸が必要です。どうすれば修正できますか?

12
Forklift17

軸の目盛りを自分の選択に合わせて調整するにはどうすればよいですか?つまり、z軸にラベル2、0、および-2だけを取得し、必要なフォントサイズで取得するにはどうすればよいですか?これを2Dで行う方法は知っていますが、3Dではできません。

zticksのプロパティを変更する必要があります。

X軸のラベルが歪んでいるのはなぜですか。これはこのスクリプトで行いたいのですが、z軸のラベル(ガンマ)ではありませんか?これは意味がありません。ギリシャ文字でラベル付けされたこの軸が必要です。どうすれば修正できますか?

Z軸ラベルの自動回転を無効にする必要があります。以下のコードを見てください:

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

ax.set_xlabel('$X$', fontsize=20)
ax.set_ylabel('$Y$')
ax.yaxis._axinfo['label']['space_factor'] = 3.0
# set z ticks and labels
ax.set_zticks([-2, 0, 2])
# change fontsize
for t in ax.zaxis.get_major_ticks(): t.label.set_fontsize(10)
# disable auto rotation
ax.zaxis.set_rotate_label(False) 
ax.set_zlabel('$\gamma$', fontsize=30, rotation = 0)
plt.show()

enter image description here

17
Serenity

Forループは必要ありません。使用できるティックのサイズを変更するには、次のようにします。

    ax.zaxis.set_tick_params(labelsize=10)
0
Paul Snijder