{ "metadata": { "name": "", "signature": "sha256:d57b71f338db6215ec0cf4898b6f444d61704f0f322ae7ef63c7599098a5a617" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import datetime\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_hundred_microseconds(year, ax=None, num_ticks=5, micros=20):\n", " \"\"\"Plot a window of a hundred microseconds around January 1 midnight of year\"\"\"\n", " xs = [datetime.datetime(year, 1, 1, 0, 0, 0, i) for i in range(0, num_ticks * micros, micros)]\n", " ys = [i % 2 for i in range(num_ticks)]\n", " if ax is None:\n", " ax = plt.gca()\n", " ax.plot(xs, ys)\n", " ax.figure.autofmt_xdate()\n", " return ax" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "64-bit floating point python datetime objects have less microsecond precision the farther the date is from 0 AD (see for example [PEP 410](https://www.python.org/dev/peps/pep-0410/)):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_hundred_microseconds(2014, micros=20)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For better microsecond (but not nanosecond) precision without having to write custom datetime classes and matplotlib handlers on our own, we could just introduce the hack of shifting our year closer to 0 AD. (The tick formatters show %f due to [this issue](https://github.com/matplotlib/matplotlib/pull/3242))" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_hundred_microseconds(14, micros=20)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ngg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we import pandas, then microsecond-level resolution will not be displayed at all, since pandas attempts to overload the default date locator of the x-axis with one only capable of millisecond resolution. (And we aren't even using pandas featuers!) This is partially because the [change introducing the pandas millisecond locator](https://github.com/changhiskhan/pandas/commit/d0d15b0fa69a0d464a939b757a104d57fc7b4d58) occurred before the [change introducing the matplotlib microsecond locator](https://github.com/matplotlib/matplotlib/commit/24cf3754962a060ae6923baf5bd8d51ab8c9d228), and partially because of the strange decision by pandas to quietly register its own [default unit converters](https://github.com/pydata/pandas/issues/2579). These unit converters set the formatter/locators to the millisecond-resolution ones from pandas." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas\n", "ax = plot_hundred_microseconds(2014, micros=20)\n", "ax.xaxis.get_major_locator()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n7b5btw769cvNfUo6fPGLcMop3po+No2ERAqgf39vqzB/fu7uc/58GDlSCUiyd/31xb8upJFQljQS\nkqPZtAmuvtpHQx09UNpUkWH5cl9vEsnGwYNw8smwcSOcdlrcWDQSEimQ88+Hiy7yCtsdtXChz+0r\nAUl7dO4M11zjZ4aKlUZCWdJISNpizRq46SZfI2pv/a4DB3xH3E9+AkOH5jY+SY9ly+Dee+O1HGmi\nkZBIAQ0b5vW7qqvbfx/V1dCnjxKQdMyIEfDcc77NvxgpCYnkSUWFt1xobMz+Zxsb/WcrKnIfl6RL\nt26eiB5+OHYkLVMSEsmTESP8DWDZsux/dulS6N7dd9qJdFQx9xjSmlCWtCYk2Vi0yFsvrF/vpVTa\nIgS45BIfBV1/fX7jk3T4wx98erihAT7ykTgxaE1IJIKxY/3U+qpVbf+ZlSthzx4YMyZ/cUm6HHec\nry0+9ljsSA6nJCSSR2Vlflp99uy2/8zs2f4zZXp1Sg4V65ScpuOypOk4ydaBA15J4aGHjr7TrWlr\n94svQpcuhYlP0mHnTjjnHP9/166Ff3xNx4lE0qUL3HGH73Y7mjlz/FolIMm1k0+Gc8+Nf17oUEpC\nIgVw881eWn/z5tavqa2FZ5+FKVMKF5ekSzFOyWk6LkuajpP2uusuTzQPPtjy9ydOhAsugOnTCxuX\npEd9vU8J79gBnToV9rFbm45TEsqSkpC0V1NLhvXroW/fD35v2zYYMsTfJHr0iBOfpMMFF8C3vw1/\n9meFfVytCYlE1qMH3HorVFYe/r3KSpg2TQlI8q/Y2jtoJJQljYSkI1pq093QAAMG+I64nj3jxiel\nr7bWz6DV17f9AHUupH4kZGajzOwFM6szs6+1ck1V5vubzOzCQscopa9nT5g0Ce6++/2vzZsHkycr\nAUlhDBjgZ9A2bYodiUvFSMjMOgFbgeFAA/AMMCGEsMXMykMINWY2GrgthDDazD4J3BdCGNLCfWkk\nJB2yfbv3B6qr8xI9h46MRPLtjjvgwx+Gr3+9cI+Z9pHQJcC2EMIrIYQDQDXQVBSlPPP/64AfAIQQ\n1gPHmVmvQgcqpa93bxg3Dqqq/L/x45WApLCKaV2one22EudU4LVmt7cDn2zDNb2BN/IbmqTR9One\ncygEWLcudjSSNkOG+Prktm3Qr1/cWNIyEmrr/NmhQ0XNu0le9O/vbRpGjoz/JiDpU1bmxXWL4eBq\n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\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So even in a larger time range (tens of milliseconds), a limited number of ticks will be displayed, and they will be formatted with floating point rounding errors:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_hundred_microseconds(2014, micros=20000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get around this, we will set our own custom microsecond formatter class which\n", "(1) takes the default matplotlib automatic date formatter\n", "(2) rounds the microseconds to the nearest thousand microseconds, assuming that the current plot is zoomed out far enough (say > 1ms viewing range)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from dateutil.relativedelta import relativedelta\n", "import six\n", "import matplotlib.dates as dates\n", "\n", "def format_microseconds(dt, pos=None, locator=None): \n", " \"\"\"String formatting at microseconds resolution. \n", " Override first tick to display abbreviated date. \n", " Round microseconds to the nearest thousands to account for \n", " datetime 64-bit floating point precision issues, assuming \n", " that current axis is zoomed out sufficiently far (i.e. \n", " showing more than 1000 microseconds time range). \n", " \"\"\" \n", " microseconds_epsilon = 15\n", " should_round_microseconds = False\n", " if locator is not None: \n", " dmin, dmax = locator.viewlim_to_dt() \n", " if dmin > dmax: \n", " dmax, dmin = dmin, dmax \n", " delta = relativedelta(dmax, dmin) \n", " if any([delta.years, delta.months, delta.days, \n", " delta.hours, delta.minutes, delta.seconds]): \n", " # Date range is at least in seconds \n", " num_micros = 1e6 \n", " else: \n", " num_micros = delta.microseconds \n", " if num_micros > 1000: \n", " should_round_microseconds = True \n", " dt = dates.num2date(dt) \n", " if should_round_microseconds: \n", " # TODO: maybe snap to a smaller multiple of microseconds \n", " # than a thousand? With epsilon of 15, maybe even 100 would be okay. \n", " mus = dt.microsecond % 1000 \n", " if mus < microseconds_epsilon: \n", " dt -= datetime.timedelta(microseconds=mus) \n", " elif mus > 1000 - microseconds_epsilon: \n", " dt += datetime.timedelta(microseconds=(1000 - mus)) \n", " return dt.strftime('%H:%M:%S.%f') \n", "\n", "class AutoMicrosecondFormatter(dates.AutoDateFormatter): \n", " \"\"\" \n", " Refer to AutoDateFormatter documentation: \n", " https://github.com/matplotlib/matplotlib/blob/master/lib/mdates.py \n", " We adjust the default microsecond tick formatting by rounding. \n", " \"\"\" \n", " \n", " def __init__(self, locator=None, tz=None, defaultfmt='%Y-%m-%d'): \n", " self._auto_locator = dates.AutoDateLocator() if locator is None else locator\n", " super(AutoMicrosecondFormatter, self).__init__(self._auto_locator, tz, defaultfmt) \n", " \n", " self.scaled = {365.0: '%Y', \n", " 30.0: '%b %Y', \n", " 1.0: '%b %d %Y', \n", " 1. / 24.: '%H:%M:%S', \n", " 1. / (24. * 60 * 60 * 1000): format_microseconds} \n", " \n", " def __call__(self, x, pos=None): \n", " \"\"\"This callback does the same exact thing as the underlying \n", " matplotlib.dates.AutoDateFormatter class implementation, except \n", " it also passes the locator to the formatter which is called if \n", " the formatter is a function. The locator contains information \n", " such as the current viewing window limit range. \n", " \"\"\" \n", " locator_unit_scale = float(self._locator._get_unit())\n", " fmt = self.defaultfmt \n", " \n", " # Pick the first scale which is greater than the locator unit. \n", " for possible_scale in sorted(self.scaled): \n", " if possible_scale >= locator_unit_scale: \n", " fmt = self.scaled[possible_scale] \n", " break \n", " \n", " if isinstance(fmt, six.string_types): \n", " self._formatter = dates.DateFormatter(fmt, self._tz) \n", " result = self._formatter(x, pos) \n", " elif six.callable(fmt): \n", " result = fmt(x, pos, locator=self._locator) \n", " else: \n", " raise TypeError('Unexpected type passed to {!r}.'.formatter(self)) \n", " \n", " return result " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "ax = plot_hundred_microseconds(2014, micros=20000)\n", "locator = dates.AutoDateLocator()\n", "ax.xaxis.set_major_locator(locator)\n", "ax.xaxis.set_major_formatter(AutoMicrosecondFormatter(locator))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n8v4/AIit2knPjNEAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately this does not help us much at the tens of microsecond precision. Question: is there some way we can overload matplotlib's date to 64-bit floating precision conversion, in order to get evenly distributed ticks? For example if the date conversion changed the year to be 0 AD, if we are plotting an intraday time series?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ax = plot_hundred_microseconds(2014, micros=20)\n", "locator = dates.AutoDateLocator()\n", "ax.xaxis.set_major_locator(locator)\n", "ax.xaxis.set_major_formatter(AutoMicrosecondFormatter(locator))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }