【问题标题】:matplotlib 3d axes ticks, labels, and LaTeXmatplotlib 3d 坐标轴刻度、标签和 LaTeX
【发布时间】:2016-10-09 06:07:32
【问题描述】:

我正在运行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. 上面的脚本产生以下内容:

为什么我想用这个脚本做的 x 轴标签扭曲,而不是 z 轴标签 (gamma)?这根本不符合逻辑。我需要用希腊字母标记的这个轴。我该如何解决这个问题?

【问题讨论】:

    标签: python matplotlib 3d latex mplot3d


    【解决方案1】:

    如何将轴刻度调整为我选择的刻度?即,如何 我将 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()
    

    【讨论】:

      【解决方案2】:

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

          ax.zaxis.set_tick_params(labelsize=10)
      

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 2012-03-14
        • 1970-01-01
        • 2012-12-19
        • 2012-01-21
        • 2015-10-14
        • 2019-05-21
        • 2013-03-09
        • 1970-01-01
        相关资源
        最近更新 更多