title: Matplotlib x-axis ticks, fixed location for dates
body: <p>In the timeline plot I’m making, I want date tickers to show only specified dates. (In my example I show tickers for events ‘A’, but it can be any list on tickers). I found how to do it when x-axis data is numeric (upper subplot in my example), but this won’t work with timestamp date type (bottom plot). </p>
  
  <pre><code>    import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      import matplotlib.dates as mdates
      import matplotlib.ticker as ticker
  
      myData = pd.DataFrame({'date':['2019-01-15','2019-02-10','2019-03-20','2019-04-17','2019-05-23','2019-06-11'],'cnt':range(6),'event':['a','b','a','b','a','b']})
      myData['date'] = [pd.Timestamp(j) for j in myData['date']]
  
  start = pd.Timestamp('2019-01-01')
  stop = pd.Timestamp('2019-07-01')
  inxa = myData.loc[myData['event'] == 'a'].index
  inxb = myData.loc[myData['event'] == 'b'].index
  # create two plots, one with 'cnt' as x-axis, the other 'dates' on x-axis.
  fig, ax = plt.subplots(2,1,figsize=(16,9))
  ax[0].plot((0,6),(0,0), 'k')
  ax[1].plot((start, stop),(0,0))
  
  
  for g in inxa:
      ax[0].plot((myData.loc[g,'cnt'],myData.loc[g,'cnt']),(0,1),c='r')
      ax[1].plot((myData.loc[g,'date'],myData.loc[g,'date']),(0,1),c='r')
  for g in inxb:
      ax[0].plot((myData.loc[g,'cnt'],myData.loc[g,'cnt']),(0,2),c='b')
      ax[1].plot((myData.loc[g,'date'],myData.loc[g,'date']),(0,2),c='b')
  xlist0 = myData.loc[myData['event']=='a','cnt']
  xlist1 = myData.loc[myData['event']=='a','date']
  
  ax[0].xaxis.set_major_locator(ticker.FixedLocator(xlist0))
  # ax[1].xaxis.set_major_locator(**???**)
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/Vs8z4.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Vs8z4.png" alt="enter image description here"></a></p>