matplotlib 3d axes ticks, labels, and LaTeX

后端 未结 2 1633
终归单人心
终归单人心 2021-02-01 14:21

I am running this sample script, with the following modifications:

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import mat         


        
2条回答
  •  别那么骄傲
    2021-02-01 15:23

    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.

    You have to change properties of 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?

    You have to disable autorotation for z axis labels. Look at the code below:

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

提交回复
热议问题