3D坐标轴刻度、标签和LaTeX。

55

我正在运行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,并使用我想要的字体大小?我知道如何在二维中进行此操作,但不知道如何在三维中实现。

  2. 上面的脚本生成以下内容:

enter image description here

为什么x轴标签失真了?我想用这个脚本来解决,但是z轴标签(gamma)却没有失真。这没有道理。我需要用希腊字母标记这个轴。我该如何修复它?
2个回答

48
如何调整轴标记为我选择的内容?例如,如何使z轴仅标记2、0和-2,并使用我想要的字体大小?我知道如何在二维中实现这一点,但不知道如何在三维中实现。
您需要更改zticks的属性。
为什么x轴标签失真,而我希望使用此脚本,但z轴标签(gamma)没有失真?这毫无意义。我需要使用希腊字母标记此轴。我该怎么办?
您需要禁用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


5

不必使用for循环来改变刻度的大小,你可以使用以下方法:

    ax.zaxis.set_tick_params(labelsize=10)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接