def _make_plot(self): from pandas.tseries.plotting import _decorate_axes, format_dateaxis plotf = self._get_plot_function() ax = self._get_ax(0) data = self.data data.index.name = 'Date' data = data.to_period(freq=self.freq) data = data.reset_index(level=0) if self._is_ts_plot(): data['Date'] = data['Date'].apply(lambda x: x.ordinal) _decorate_axes(ax, self.freq, self.kwds) candles = plotf(data, ax, **self.kwds) format_dateaxis(ax, self.freq) else: from matplotlib.dates import date2num, AutoDateFormatter, AutoDateLocator data['Date'] = data['Date'].apply(lambda x: date2num(x.to_timestamp())) candles = plotf(data, ax, **self.kwds) locator = AutoDateLocator() ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(AutoDateFormatter(locator))
def _ts_plot(cls, ax, x, data, style=None, **kwds): from pandas.tseries.plotting import (_maybe_resample, _decorate_axes, format_dateaxis) # accept x to be consistent with normal plot func, # x is not passed to tsplot as it uses data.index as x coordinate # column_num must be in kwds for stacking purpose freq, data = _maybe_resample(data, ax, kwds) # Set ax with freq info _decorate_axes(ax, freq, kwds) # digging deeper if hasattr(ax, 'left_ax'): _decorate_axes(ax.left_ax, freq, kwds) if hasattr(ax, 'right_ax'): _decorate_axes(ax.right_ax, freq, kwds) ax._plot_data.append((data, cls._kind, kwds)) lines = cls._plot(ax, data.index, data.values, style=style, **kwds) # set date formatter, locators and rescale limits format_dateaxis(ax, ax.freq, data.index) return lines