In case I have a date-based x-axis, how can I add ticks at desired positions using the ticker API? Using a FixedLocator doesn't work and results in an exception:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker
dates = pd.date_range('20130101',periods=6)
series = pd.Series([1,3,5,8,6,8], index=dates)
p = plt.figure()
series.plot(ax=p.gca())
p.gca().xaxis.set_major_locator(matplotlib.ticker.FixedLocator(dates))
results in:
Traceback (most recent call last):
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/backends/backend
_qt5agg.py", line 176, in __draw_idle_agg
FigureCanvasAgg.draw(self)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/backends/backend
_agg.py", line 474, in draw
self.figure.draw(self.renderer)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/artist.py", line
61, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/figure.py", line
1159, in draw
func(*args)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/artist.py", line
61, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/axes/_base.py",
line 2324, in draw
a.draw(renderer)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/artist.py", line
61, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/axis.py", line 1
106, in draw
ticks_to_draw = self._update_ticks(renderer)
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/axis.py", line 1
038, in _update_ticks
if not mtransforms.interval_contains(interval_expanded, loc):
File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/transforms.py",
line 2780, in interval_contains
((a < b) and (a <= val and b >= val))
TypeError: invalid type promotion
Ok, when converting the dates with matplotlib.dates.date2num before passing them to the locator things work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With