关于python:matplotlib 3d轴刻度,标签和LaTeX

matplotlib 3d axes ticks, labels, and LaTeX

我正在运行此示例脚本,并进行了以下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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()
  • 如何调整轴刻度以适应我的选择? 即,如何将z轴仅标记为2、0和-2以及所需的字体大小? 我知道如何以2D而非3D方式进行。

  • 上面的脚本产生以下内容:

  • enter image description here

    为什么我要对此脚本执行的x轴标签变形,而z轴标签(gamma)却不变形? 这根本不符合逻辑。 我需要用希腊字母标记的轴。 我该如何解决?


    How do I adjust the axis ticks to that of my choosing? I.e., how would
    I get the z-axis to only label 2, 0, and -2, and in the font size that
    I want? I know how to do this in 2D but not 3D.

    您必须更改zticks的属性。

    Why is the x-axis label distorted, which I wanted to do with this
    script, but not the z-axis label (gamma)? This does not make sense. I
    need this axis labeled in the Greek letter. How do I fix this?

    您必须禁用z轴标签的自动旋转。 看下面的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    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


    for循环不是必需的,要更改刻度的大小,可以使用:

    1
        ax.zaxis.set_tick_params(labelsize=10)