Change xlim by date in Matplotlib

I am trying to make a visually appealing graph in Python. I used the Randal Olson example http://www.randalolson.com/2014/06/28/how-to-make-beautiful-data-visualizations-in-python-with-matplotlib/ here and tried to make some adjustments.

My data is simple

dispute_percentage Out[34]: 2015-08-11 0.017647 2015-08-12 0.004525 2015-08-13 0.006024 2015-08-14 0.000000 2015-08-15 0.000000 2015-08-17 0.000000 

The problem is that the data starts to load in February 2015, and I want to start showing in April 2015.

Here is my code

 from __future__ import division from collections import OrderedDict import pandas as pd from collections import Counter from pylab import * import datetime as datetime dispute_percentage.plot(kind = 'line') plt.xlabel('Date') plt.ylabel('Percent') plt.title('Percent Disputes In FY2015') # Remove the plot frame lines. They are unnecessary chartjunk. ax = plt.subplot(111) ax.spines["top"].set_visible(False) ax.spines["bottom"].set_visible(False) ax.spines["right"].set_visible(False) ax.spines["left"].set_visible(False) # Ensure that the axis ticks only show up on the bottom and left of the plot. # Ticks on the right and top of the plot are generally unnecessary chartjunk. ax.get_xaxis().tick_bottom() #ax.get_yaxis().tick_left() # Limit the range of the plot to only where the data is. # Avoid unnecessary whitespace. datenow = datetime.datetime.now dstart = datetime(2015,4,1) print datenow plt.ylim(0, .14) plt.xlim(dstart, datenow) 

xlim is what I struggle with. I get an error

 File "C:/Mypath/name.py", line 52, in <module> dstart = datetime(2015,4,1) TypeError: 'module' object is not callable 

If someone can help with this, it will be great. Any contribution to trying to make it more beautiful will also be appreciated.

+6
source share
1 answer

You need to call datetime.datetime.now() with parentheses at the end, and for dstart you need to use the datetime method of the datetime module: datetime.datetime(2015,4,1)

 import datetime datenow = datetime.datetime.now() dstart = datetime.datetime(2015,4,1) 

EDIT: To install xticks in the first month (thanks @AndyKubiak):

 firsts=[] for i in range(dstart.month, datenow.month+1): firsts.append(datetime.datetime(2015,i,1)) plt.xticks(firsts) 
+5
source

All Articles