From 6e1ab33443213f48cbc4bb7fbe5c2a1f6ce9d9f5 Mon Sep 17 00:00:00 2001 From: zbruick Date: Wed, 21 Aug 2019 11:24:41 -0600 Subject: [PATCH] Add test for pandas timeseries as valid `x` in StationPlot --- .travis.yml | 2 +- .../test_symbol_pandas_timeseries.png | Bin 0 -> 31227 bytes metpy/plots/tests/test_station_plot.py | 19 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 metpy/plots/tests/baseline/test_symbol_pandas_timeseries.png diff --git a/.travis.yml b/.travis.yml index 492c529cc1b..cc752f33152 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,7 +52,7 @@ matrix: include: - python: 2.7 env: - - VERSIONS="numpy==1.12.0 matplotlib==2.0.0 scipy==0.17.0 pint==0.8 xarray==0.10.7" + - VERSIONS="numpy==1.12.0 matplotlib==2.0.0 scipy==0.17.0 pint==0.8 xarray==0.10.7 pandas==0.20.0" - TASK="coverage" - TEST_OUTPUT_CONTROL="" - python: "3.7-dev" diff --git a/metpy/plots/tests/baseline/test_symbol_pandas_timeseries.png b/metpy/plots/tests/baseline/test_symbol_pandas_timeseries.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cba4a1c62035d20f0aa96083eb507de35462a1 GIT binary patch literal 31227 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
_ZVpzf^3DP^l<)kjHf5`lK)b>!# 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 b`NQ1WJMsH>IWBL|-D(`u{3Z2>#jpPh8tX$a literal 0 HcmV?d00001 diff --git a/metpy/plots/tests/test_station_plot.py b/metpy/plots/tests/test_station_plot.py index 7193935d104..9f94762a8a7 100644 --- a/metpy/plots/tests/test_station_plot.py +++ b/metpy/plots/tests/test_station_plot.py @@ -7,6 +7,7 @@ import matplotlib import matplotlib.pyplot as plt import numpy as np +import pandas as pd import pytest from metpy.plots import (current_weather, high_clouds, nws_layout, simple_layout, @@ -341,3 +342,21 @@ def test_barb_unit_conversion_exception(u, v): stnplot = StationPlot(ax, x_pos, y_pos) with pytest.raises(ValueError): stnplot.plot_barb(u, v, plot_units='knots') + + +@pytest.mark.mpl_image_compare(tolerance={'1.5': 0.0, '1.4': 0.0}.get(MPL_VERSION, 0.000), + savefig_kwargs={'dpi': 300}, remove_text=True) +def test_symbol_pandas_timeseries(): + """Test the usage of Pandas DatetimeIndex as a valid `x` input into StationPlot.""" + pd.plotting.register_matplotlib_converters() + rng = pd.date_range('12/1/2017', periods=5, freq='D') + sc = [1, 2, 3, 4, 5] + ts = pd.Series(sc, index=rng) + fig, ax = plt.subplots() + y = np.ones(len(ts.index)) + stationplot = StationPlot(ax, ts.index, y, fontsize=12) + stationplot.plot_symbol('C', ts, sky_cover) + ax.xaxis.set_major_locator(matplotlib.dates.DayLocator()) + ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%-d')) + + return fig