matplotlib: draw major tick labels under minor labels

后端 未结 1 1694
情歌与酒
情歌与酒 2021-02-03 12:40

This seems like it should be easy - but I can\'t see how to do it:

I have a plot with time on the X-axis. I want to set two sets of ticks, minor ticks showing the hour o

1条回答
  •  清酒与你
    2021-02-03 12:40

    You can use axis method set_tick_params() with the keyword pad. Compare following example.

    import datetime
    import random
    import matplotlib.pyplot as plt
    import matplotlib.dates as dates
    
    # make up some data
    x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(100)]
    y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
    
    # plot
    plt.plot(x,y)
    # beautify the x-labels
    plt.gcf().autofmt_xdate()
    
    ax = plt.gca()
    # set date ticks to something sensible:
    xax = ax.get_xaxis()
    xax.set_major_locator(dates.DayLocator())
    xax.set_major_formatter(dates.DateFormatter('%d/%b'))
    
    xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
    xax.set_minor_formatter(dates.DateFormatter('%H'))
    xax.set_tick_params(which='major', pad=15)
    
    plt.show()
    

    PS: This example is borrowed from moooeeeep


    Here's how the above snippet would render:

    0 讨论(0)
提交回复
热议问题