32

My python plot data only show 2 points on x axis.

I would like to have more, but don't know how.

x = [ datetime.datetime(1900,1,1,0,1,2),
      datetime.datetime(1900,1,1,0,1,3),
      ...
      ]                                            # ( more than 1000 elements )
y = [ 34, 33, 23, ............ ]

plt.plot( x, y )

The X axis only shows 2 points of interval. I tried to use .xticks but didn't work for X axis. It gave the below error:

TypeError: object of type 'datetime.datetime' has no len()
Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
Kensg
  • 321
  • 1
  • 3
  • 3

1 Answers1

54

Whatever reason it is you are getting 2 ticks only by default, you can fix it (customise it) by changing the ticker locator using a date locator.

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

x = [ datetime.datetime(1900,1,1,0,1,2),
      datetime.datetime(1900,1,1,0,1,3),
      ...
      ]                                            # ( more than 1000 elements )
y = [ 34, 33, 23, ............ ]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)  
plt.plot( x, y )

ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=15))   #to get a tick every 15 minutes
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))     #optional formatting 

You have several locators (for example: DayLocator, WeekdayLocator, MonthLocator, etc.) read about it in the documentation:

http://matplotlib.org/api/dates_api.html

But maybe this example will help more:

http://matplotlib.org/examples/api/date_demo.html

Sebastian
  • 5,471
  • 5
  • 35
  • 53