title: Change frequency of x-axis tick label of datetime data in python bar chart using matplotlib
body: <p>I have a script that takes multiple .csv files and outputs multiple bar plots. The data are daily rainfall totals and so the x-axis is the date in daytime format <code>%d %m %Y</code>. As is, the code tries to include all 365 days in the label but the x-axis gets clogged. What code can I use to only include one label per month in the format "Jan 01", for example. </p>
  
  <pre><code>import pandas as pd
  import time
  import os
  import matplotlib.pyplot as plt
  
  files = ['w.pod.csv',
  't.pod.csv',
  'r.pod.csv',
  'n.pod.csv',
  'm.pod.csv',
  'k.pod.csv',
  'j.pod.csv',
  'h.pod.csv',
  'g.pod.csv',
  'c.pod.csv',
  'b.pod.csv']
  
  for f in files:
      fn = f.split('.')[0]
      dat = pd.read_csv(f)
      df0 = dat.loc[:, ['TimeStamp', 'RF']]
      # Change time format
      df0["time"] = pd.to_datetime(df0["TimeStamp"])
      df0["day"] = df0['time'].map(lambda x: x.day)
      df0["month"] = df0['time'].map(lambda x: x.month)
      df0["year"] = df0['time'].map(lambda x: x.year)
      df0.to_csv('{}_1.csv'.format(fn), na_rep="0")  # write to csv
  
      # Combine for daily rainfall
      df1 = pd.read_csv('{}_1.csv'.format(fn), encoding='latin-1',
                usecols=['day', 'month', 'year', 'RF', 'TimeStamp'])
      df2 = df1.groupby(['day', 'month', 'year'], as_index=False).sum()
      df2.to_csv('{}_2.csv'.format(fn), na_rep="0", header=None)  # write to csv
  
      # parse date
      df3 = pd.read_csv('{}_2.csv'.format(fn), header=None, index_col='datetime',
               parse_dates={'datetime': [1,2,3]},
               date_parser=lambda x: pd.datetime.strptime(x, '%d %m %Y'))
  
      def dt_parse(date_string):
          dt = pd.datetime.strptime(date_string, '%d %m %Y')
          return dt
  
      # sort datetime
      df4 = df3.sort()
      final = df4.reset_index()
  
      # rename columns
      final.columns = ['date', 'bleh', 'rf']
  
    [![enter image description here][1]][1]  final[['date','rf']].plot(kind='bar')
      plt.suptitle('{} Rainfall 2015-2016'.format(fn), fontsize=20)
      plt.xlabel('Date', fontsize=18)
      plt.ylabel('Rain / mm', fontsize=16)
      plt.savefig('{}.png'.format(fn))
  </code></pre>
  
  <p>This is an extension of my previous question: <a href="https://stackoverflow.com/questions/42430387/automate-making-multiple-plots-in-python-using-several-csv-files">Automate making multiple plots in python using several .csv files</a></p>
  
  <p><a href="https://i.stack.imgur.com/yEHo9.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/yEHo9.png" alt="enter image description here"></a></p>