matplotlib ejes 3d garrapatas, tags y LaTeX

Estoy ejecutando este script de ejemplo, con las siguientes modificaciones:

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. ¿Cómo ajusto las marcas de los ejes a mi elección? Es decir, ¿cómo obtendría el eje z solo para las tags 2, 0 y -2, y en el tamaño de fuente que deseo? Sé cómo hacerlo en 2D pero no en 3D.

  2. El script anterior produce lo siguiente:

introduzca la descripción de la imagen aquí

¿Por qué la etiqueta del eje x está distorsionada, lo que quería hacer con este script, pero no la etiqueta del eje z (gamma)? Esto no tiene sentido. Necesito este eje etiquetado en la letra griega. ¿Cómo puedo solucionar esto?

¿Cómo ajusto las marcas de los ejes a mi elección? Es decir, ¿cómo obtendría el eje z solo para las tags 2, 0 y -2, y en el tamaño de fuente que deseo? Sé cómo hacerlo en 2D pero no en 3D.

Tienes que cambiar las propiedades de zticks .

¿Por qué la etiqueta del eje x está distorsionada, lo que quería hacer con este script, pero no la etiqueta del eje z (gamma)? Esto no tiene sentido. Necesito este eje etiquetado en la letra griega. ¿Cómo puedo solucionar esto?

Tienes que deshabilitar la autorotación para las tags del eje z. Mira el código de abajo:

 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() 

introduzca la descripción de la imagen aquí