matplotlib ticks thickness

后端 未结 3 876
梦如初夏
梦如初夏 2020-12-03 02:44

Is there a way to increase the thickness and size of ticks in matplotlib without having to write a long piece of code like this:

for line in ax1.yaxis.get_ti         


        
相关标签:
3条回答
  • 2020-12-03 03:11

    A simpler way is to use the set_tick_params function of axis objects:

    ax.xaxis.set_tick_params(width=5)
    ax.yaxis.set_tick_params(width=5)
    

    Doing it this way means you can change this on a per-axis basis with out worrying about global state and with out making any assumptions about the internal structure of mpl objects.

    If you want to set this for all the ticks in your axes,

    ax = plt.gca()
    ax.tick_params(width=5,...)
    

    Take a look at set_tick_params doc and tick_params valid keywords

    0 讨论(0)
  • 2020-12-03 03:35

    You can change all matplotlib defaults using rcParams like in

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    # set tick width
    mpl.rcParams['xtick.major.size'] = 20
    mpl.rcParams['xtick.major.width'] = 4
    mpl.rcParams['xtick.minor.size'] = 10
    mpl.rcParams['xtick.minor.width'] = 2
    
    x = np.linspace(0., 10.)
    plt.plot(x, np.sin(x))
    
    plt.show()
    
    0 讨论(0)
  • 2020-12-03 03:37

    You can use matplotlib.pyplot.setp

    plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
    plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)
    

    You can also use list comprehension, although not having a return value probably does not make much sense, besides reducing the number of lines in the code see e.g. here

    [line.set_markersize(25) for line in ax1.yaxis.get_ticklines()]
    [line.set_markeredgewidth(3) for line in ax1.yaxis.get_ticklines()]
    
    0 讨论(0)
提交回复
热议问题