matplotlib string to dates

前端 未结 3 1638
夕颜
夕颜 2020-12-06 08:56

Hi I am trying to convert a list of dates as strings to an x axis in matplotlib and I can\'t seem to get it to come out right.

dates =  [\'2014-05-06\', \'20         


        
相关标签:
3条回答
  • 2020-12-06 09:16

    Is this the goal? (Threw in rotation because it almost always comes up, with dates.)

    datelist =  ['2014-05-06', '2014-05-07', '2014-05-08', '2014-05-09', '2014-05-10',    '2014-05-11', '2014-05-12', '2014-05-13']
    
    import matplotlib
    from matplotlib import pyplot
    from matplotlib import dates
    import datetime
    
    converted_dates = list(map(datetime.datetime.strptime, datelist, len(datelist)*['%Y-%m-%d']))
    x_axis = converted_dates
    formatter = dates.DateFormatter('%Y-%m-%d')
    
    
    y_axis = range(0,8)
    pyplot.plot( x_axis, y_axis, '-' )
    ax = pyplot.gcf().axes[0] 
    ax.xaxis.set_major_formatter(formatter)
    pyplot.gcf().autofmt_xdate(rotation=25)
    pyplot.show()
    

    enter image description here

    0 讨论(0)
  • 2020-12-06 09:19

    The idea of using matplotlib.dates.datestr2num is in principle correct. You would then need to tell matplotlib to actually interprete the resulting numbers as dates. One easy option is to use plot_date instead of plot.

    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.dates
    
    dates =  ['2014-05-06', '2014-05-07', '2014-05-08', '2014-05-09', 
              '2014-05-10', '2014-05-11', '2014-05-12', '2014-05-13']
    
    converted_dates = matplotlib.dates.datestr2num(dates)
    x_axis = (converted_dates)
    
    y_axis = range(0,8)
    plt.plot_date( x_axis, y_axis, '-' )
    
    plt.show()
    
    0 讨论(0)
  • 2020-12-06 09:29

    Try using strptime. Documentation is here: https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

    For example:

    import datetime
    sDate = '2014-05-06'
    dtDate = datetime.datetime.strptime(sDate,"%m-%d-%Y")
    

    matplotlib can compare datetime objects.

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