From a99f698b1e72f96211497a3406fe69f49763697c Mon Sep 17 00:00:00 2001 From: samchan2022 Date: Tue, 14 Nov 2023 22:48:35 +0000 Subject: [PATCH] add test_axlines --- lib/matplotlib/tests/test_datetime.py | 34 ++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/tests/test_datetime.py b/lib/matplotlib/tests/test_datetime.py index b19124a1b764..f57a07348749 100644 --- a/lib/matplotlib/tests/test_datetime.py +++ b/lib/matplotlib/tests/test_datetime.py @@ -5,6 +5,7 @@ import matplotlib.pyplot as plt import matplotlib as mpl +from matplotlib.dates import date2num, DateFormatter class TestDatetimePlotting: @@ -77,11 +78,38 @@ def test_axhspan(self): ax3.set_xlabel('Date') ax3.set_ylabel('Date') - @pytest.mark.xfail(reason="Test for axline not written yet") @mpl.style.context("default") def test_axline(self): - fig, ax = plt.subplots() - ax.axline(...) + mpl.rcParams["date.converter"] = 'concise' + fig, (ax1, ax2, ax3) = plt.subplots(3, 1, + constrained_layout=True, + figsize=(10, 12)) + + start_date = datetime.datetime(2023, 1, 1) + dates = [start_date + datetime.timedelta(days=i) for i in range(31)] + values = list(range(1, 32)) + + ax1.plot(dates, values, 'ro') + ax1.axline((date2num(dates[0]), values[0]), (date2num(dates[-1]), values[-1]), + color='blue', linewidth=2) + ax1.set_title('Datetime vs. Number') + date_format = DateFormatter('%b%d') + ax1.xaxis.set_major_formatter(date_format) + + ax2.plot(values, dates, 'ro') + ax2.axline((values[0], date2num(dates[0])), (values[-1], date2num(dates[-1])), + color='blue', linewidth=2) + ax2.set_title('Number vs. Datetime') + ax2.yaxis.set_major_formatter(date_format) + + dates2 = [start_date + datetime.timedelta(days=2*i) for i in range(31)] + ax3.plot(dates, dates2, 'ro') + ax3.axline((date2num(dates[0]), date2num(dates2[0])), + (date2num(dates[-1]), date2num(dates2[-1])), + color='blue', linewidth=2) + ax3.set_title('Datetime vs. Datetime') + ax3.xaxis.set_major_formatter(date_format) + ax3.yaxis.set_major_formatter(date_format) @mpl.style.context("default") def test_axvline(self):