From 3819d1b690dcdd631343b1ddeca84cb00ca0cc19 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sun, 22 Dec 2024 11:52:43 +0530 Subject: [PATCH 01/24] Introducing astro_support for quantity and time objects --- astropy/visualization/units.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/astropy/visualization/units.py b/astropy/visualization/units.py index 4f843bebef6e..9386043ce456 100644 --- a/astropy/visualization/units.py +++ b/astropy/visualization/units.py @@ -1,6 +1,6 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst -from contextlib import ContextDecorator +from contextlib import contextmanager, ExitStack, ContextDecorator import numpy as np @@ -100,3 +100,12 @@ def __exit__(self, type, value, tb): units.registry[u.Quantity] = self._original_converter[u.Quantity] return MplQuantityConverter() + +from astropy.visualization.time import time_support + +@contextmanager +def astro_support(): + with ExitStack() as stack: + stack.enter_context(quantity_support()) + stack.enter_context(time_support()) + yield \ No newline at end of file From c18fd55404ecb9f79fcd4dedf1f5097f8760b066 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sun, 22 Dec 2024 11:57:18 +0530 Subject: [PATCH 02/24] Updated Docstring --- astropy/visualization/units.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/astropy/visualization/units.py b/astropy/visualization/units.py index 9386043ce456..d1aed805235c 100644 --- a/astropy/visualization/units.py +++ b/astropy/visualization/units.py @@ -101,10 +101,36 @@ def __exit__(self, type, value, tb): return MplQuantityConverter() + from astropy.visualization.time import time_support + @contextmanager def astro_support(): + """ + Enable support for plotting `astropy.units.Quantity` and `astropy.time.Time` instances in + matplotlib. + + It can be used as a decorator or with a ``with`` statement. + + >>> from astropy.visualization.units import astro_support + >>> with astro_support(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + + >>> @astro_support() + ... def plot_example(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + ... plt.show() + + >>> plot_example() + + """ with ExitStack() as stack: stack.enter_context(quantity_support()) stack.enter_context(time_support()) From 98437d363ac2364d61b199e8466c974b81d5cf27 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sun, 22 Dec 2024 11:58:30 +0530 Subject: [PATCH 03/24] Formatting --- astropy/visualization/units.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astropy/visualization/units.py b/astropy/visualization/units.py index d1aed805235c..2d3f6c7f3571 100644 --- a/astropy/visualization/units.py +++ b/astropy/visualization/units.py @@ -134,4 +134,4 @@ def astro_support(): with ExitStack() as stack: stack.enter_context(quantity_support()) stack.enter_context(time_support()) - yield \ No newline at end of file + yield From c98b2369333d7cab2e2b695830fe25d8f415d8c0 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Mon, 23 Dec 2024 22:00:54 +0530 Subject: [PATCH 04/24] New module for astropy_support --- astropy/visualization/astropy_support.py | 38 ++++++++++++++++++++++++ astropy/visualization/units.py | 37 +---------------------- 2 files changed, 39 insertions(+), 36 deletions(-) create mode 100644 astropy/visualization/astropy_support.py diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py new file mode 100644 index 000000000000..f221c3ce53a5 --- /dev/null +++ b/astropy/visualization/astropy_support.py @@ -0,0 +1,38 @@ +from astropy.visualization.time import time_support +from astropy.visualization.units import quantity_support +from contextlib import contextmanager, ExitStack + + +@contextmanager +def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): + """ + Enable support for plotting `astropy.units.Quantity` and `astropy.time.Time` instances in + matplotlib. + + It can be used as a decorator or with a ``with`` statement. + + Examples + ---------- + + >>> from astropy.visualization.units import astro_support + >>> with astro_support(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + + >>> @astro_support() + ... def plot_example(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + ... plt.show() + + >>> plot_example() + + """ + with ExitStack() as stack: + stack.enter_context(quantity_support(**(quantity_support_kwargs or {}))) + stack.enter_context(time_support(**(time_support_kwargs or {}))) + yield diff --git a/astropy/visualization/units.py b/astropy/visualization/units.py index 2d3f6c7f3571..4f843bebef6e 100644 --- a/astropy/visualization/units.py +++ b/astropy/visualization/units.py @@ -1,6 +1,6 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst -from contextlib import contextmanager, ExitStack, ContextDecorator +from contextlib import ContextDecorator import numpy as np @@ -100,38 +100,3 @@ def __exit__(self, type, value, tb): units.registry[u.Quantity] = self._original_converter[u.Quantity] return MplQuantityConverter() - - -from astropy.visualization.time import time_support - - -@contextmanager -def astro_support(): - """ - Enable support for plotting `astropy.units.Quantity` and `astropy.time.Time` instances in - matplotlib. - - It can be used as a decorator or with a ``with`` statement. - - >>> from astropy.visualization.units import astro_support - >>> with astro_support(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() - - >>> @astro_support() - ... def plot_example(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() - ... plt.show() - - >>> plot_example() - - """ - with ExitStack() as stack: - stack.enter_context(quantity_support()) - stack.enter_context(time_support()) - yield From 5d730bfc0bd21818404203ab4473081f51296a92 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Mon, 23 Dec 2024 22:33:50 +0530 Subject: [PATCH 05/24] Adding test for astropy_support --- .../wcsaxes/tests/test_images.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index 26a109559569..9233f213824d 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -25,6 +25,8 @@ from astropy.visualization.wcsaxes import WCSAxes, add_beam, add_scalebar from astropy.visualization.wcsaxes.frame import EllipticalFrame from astropy.visualization.wcsaxes.patches import Quadrangle, SphericalCircle +from astropy.time import Time, TimeDelta +from astropy.visualization.astropy_support import astropy_support from astropy.wcs import WCS @@ -1398,3 +1400,27 @@ def fruit_format(value, **kwargs): ax.coords[0].set_major_formatter(double_format) ax.coords[1].set_major_formatter(fruit_format) return fig + +@figure_test(tolerance=1) +def test_astropy_support(): + x_meters = np.linspace(1, 10, 50) * u.m # Distances in meters + x_kilometers = np.linspace(0.001, 0.01, 50) * u.km # Distances in kilometers + + y_seconds = Time('2000-01-01T00:10:00', scale='utc') + TimeDelta(np.linspace(0, 3600, 50), format='sec') + + start_time = Time('2000-01-01T00:00:00', scale='utc') + end_time = start_time + TimeDelta(2/24, format='jd') + + with astropy_support(): + fig, ax = plt.subplots() + + ax.plot(x_meters, y_seconds, label='Meters vs. Seconds') + ax.plot(x_kilometers, y_seconds, label='Kilometers vs. Seconds') + + ax.set_ylim(start_time, Time((end_time), format='jd')) + + ax.set_xlabel('Distance (m)') + ax.set_ylabel('Time') + ax.legend() + + return fig \ No newline at end of file From ae1d1ff21c38dac24e676b7b83a3ffc9fbdabd01 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Mon, 23 Dec 2024 22:54:04 +0530 Subject: [PATCH 06/24] Changelog entry --- docs/changes/visualization/17575.feature.rst | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/changes/visualization/17575.feature.rst diff --git a/docs/changes/visualization/17575.feature.rst b/docs/changes/visualization/17575.feature.rst new file mode 100644 index 000000000000..6a149b122552 --- /dev/null +++ b/docs/changes/visualization/17575.feature.rst @@ -0,0 +1,3 @@ +Added a new `astropy_support` context manager in `astropy.visualization`. +This enables `time_support` and `quantity_support` for plotting `astropy.units.Quantity` and `astropy.time.Time` instances in matplotlib. + From 07ada0106e27cf6f3151971d461148924b18c5ca Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Tue, 24 Dec 2024 10:34:51 +0530 Subject: [PATCH 07/24] Formatting --- astropy/visualization/astropy_support.py | 38 +++++++++---------- .../wcsaxes/tests/test_images.py | 3 +- docs/changes/visualization/17575.feature.rst | 4 +- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index f221c3ce53a5..8649bd3baf37 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -11,25 +11,25 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): It can be used as a decorator or with a ``with`` statement. - Examples - ---------- - - >>> from astropy.visualization.units import astro_support - >>> with astro_support(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() - - >>> @astro_support() - ... def plot_example(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() - ... plt.show() - - >>> plot_example() + Examples + ---------- + + >>> from astropy.visualization.units import astro_support + >>> with astro_support(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + + >>> @astro_support() + ... def plot_example(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + ... plt.show() + + >>> plot_example() """ with ExitStack() as stack: diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index 9233f213824d..41e3b8ae314e 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -1401,10 +1401,11 @@ def fruit_format(value, **kwargs): ax.coords[1].set_major_formatter(fruit_format) return fig + @figure_test(tolerance=1) def test_astropy_support(): x_meters = np.linspace(1, 10, 50) * u.m # Distances in meters - x_kilometers = np.linspace(0.001, 0.01, 50) * u.km # Distances in kilometers + x_kilometers = np.linspace(0.002, 0.011, 50) * u.km # Distances in kilometers y_seconds = Time('2000-01-01T00:10:00', scale='utc') + TimeDelta(np.linspace(0, 3600, 50), format='sec') diff --git a/docs/changes/visualization/17575.feature.rst b/docs/changes/visualization/17575.feature.rst index 6a149b122552..1852d6cb6a9c 100644 --- a/docs/changes/visualization/17575.feature.rst +++ b/docs/changes/visualization/17575.feature.rst @@ -1,3 +1,3 @@ -Added a new `astropy_support` context manager in `astropy.visualization`. -This enables `time_support` and `quantity_support` for plotting `astropy.units.Quantity` and `astropy.time.Time` instances in matplotlib. +Added a new ``astropy_support`` context manager in ``astropy.visualization``. +This enables ``time_support`` and ``quantity_support`` for plotting ``astropy.units.Quantity`` and ``astropy.time.Time`` instances in matplotlib. From 9a100e550855f29f9f14ee69811d904548225333 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Tue, 24 Dec 2024 16:57:38 +0530 Subject: [PATCH 08/24] Docstring edit --- astropy/visualization/astropy_support.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 8649bd3baf37..e72d4fa4c173 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -14,12 +14,7 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): Examples ---------- - >>> from astropy.visualization.units import astro_support - >>> with astro_support(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() + >>> from astropy.visualization.astropy_support import astropy_support >>> @astro_support() ... def plot_example(): @@ -28,9 +23,15 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) ... plt.draw() ... plt.show() - + >>> plot_example() + >>> with astro_support(): + ... plt.figure() + ... plt.plot([1, 2, 3] * u.m) + ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + ... plt.draw() + """ with ExitStack() as stack: stack.enter_context(quantity_support(**(quantity_support_kwargs or {}))) From 520529e142ee777d80982a9e33bc4c8e600ad630 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Tue, 24 Dec 2024 16:58:24 +0530 Subject: [PATCH 09/24] Docstring edit 2.0 --- astropy/visualization/astropy_support.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index e72d4fa4c173..924338fcfaa3 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -16,7 +16,7 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): >>> from astropy.visualization.astropy_support import astropy_support - >>> @astro_support() + >>> @astropy_support() ... def plot_example(): ... plt.figure() ... plt.plot([1, 2, 3] * u.m) @@ -26,7 +26,7 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): >>> plot_example() - >>> with astro_support(): + >>> with astropy_support(): ... plt.figure() ... plt.plot([1, 2, 3] * u.m) ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) From 60208c29a8a55a3e20f503a34c59ad07dea47938 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 25 Dec 2024 12:04:48 +0530 Subject: [PATCH 10/24] doc test correction updated json with new hash --- astropy/tests/figures/py311-test-image-mpl360-cov.json | 3 ++- astropy/visualization/astropy_support.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/astropy/tests/figures/py311-test-image-mpl360-cov.json b/astropy/tests/figures/py311-test-image-mpl360-cov.json index 38fbc9f68f66..bd01f088796c 100644 --- a/astropy/tests/figures/py311-test-image-mpl360-cov.json +++ b/astropy/tests/figures/py311-test-image-mpl360-cov.json @@ -55,5 +55,6 @@ "astropy.visualization.wcsaxes.tests.test_transform_coord_meta.TestTransformCoordMeta.test_coords_overlay_auto_coord_meta": "2f737bb70fb1a5452cb0efa79010376614dc559e9aff607f638f044ac6b04448", "astropy.visualization.wcsaxes.tests.test_transform_coord_meta.TestTransformCoordMeta.test_direct_init": "1f24c5243bfdf0f30e88afc4f2f5d66db85954cea50a2910af94975ff8765b45", "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_5d_with_names": "c90ae6f3b0f9f407ca7a866fa648dc3ef4bea78369315292bc82f16104ed5736", - "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_2d_celestial_arcsec": "4b743d645a85d7516decbcf4a831c127af5a1800072597c2a1299d17fb186adb" + "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_2d_celestial_arcsec": "4b743d645a85d7516decbcf4a831c127af5a1800072597c2a1299d17fb186adb", + "astropy.visualization.wcsaxes.tests.test_astropy_support": "aee3dd8cfc0998ec2d904549c6527fa55f3b16cbe9a30c222a2c0ac6a6db155e" } diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 924338fcfaa3..730682a8ea1f 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -14,6 +14,9 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): Examples ---------- + >>> import matplotlib.pyplot as plt + >>> import astropy.units as u + >>> from astropy.time import Time >>> from astropy.visualization.astropy_support import astropy_support >>> @astropy_support() From a1d03c8765b72e50fc4a8cdf3034fd65c6a8497e Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 25 Dec 2024 13:49:38 +0530 Subject: [PATCH 11/24] Doc string changes 2.0 --- astropy/visualization/astropy_support.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 730682a8ea1f..ae11ac25c044 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -28,11 +28,14 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): ... plt.show() >>> plot_example() + [...] >>> with astropy_support(): ... plt.figure() ... plt.plot([1, 2, 3] * u.m) + [...] ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + [...] ... plt.draw() """ From 4d82d365a733f682414a367df9c0541818cef6e7 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 25 Dec 2024 14:03:57 +0530 Subject: [PATCH 12/24] doc string 3.0 --- astropy/visualization/astropy_support.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index ae11ac25c044..809809dd26f6 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -26,16 +26,11 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) ... plt.draw() ... plt.show() - - >>> plot_example() - [...] >>> with astropy_support(): ... plt.figure() ... plt.plot([1, 2, 3] * u.m) - [...] ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - [...] ... plt.draw() """ From b8b402c0d4ad9aa5831c86294c3950134f51c52b Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 25 Dec 2024 14:18:43 +0530 Subject: [PATCH 13/24] doc test 4.0 --- astropy/visualization/astropy_support.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 809809dd26f6..4eebead8ff5d 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -27,7 +27,7 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): ... plt.draw() ... plt.show() - >>> with astropy_support(): + >>> with astropy_support(): # doctest: +IGNORE_OUTPUT ... plt.figure() ... plt.plot([1, 2, 3] * u.m) ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) From 4f860cc50d81eb23e9a203ee2aa769c3282298ac Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Thu, 26 Dec 2024 19:01:10 +0530 Subject: [PATCH 14/24] testing ..plot:: --- astropy/visualization/astropy_support.py | 3 +++ astropy/visualization/time.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 4eebead8ff5d..779e9c4a655d 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -14,6 +14,9 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): Examples ---------- + .. plot:: + :include-source: + >>> import matplotlib.pyplot as plt >>> import astropy.units as u >>> from astropy.time import Time diff --git a/astropy/visualization/time.py b/astropy/visualization/time.py index 1e54e56aa6ca..3ac2c1b8dae1 100644 --- a/astropy/visualization/time.py +++ b/astropy/visualization/time.py @@ -26,7 +26,7 @@ def time_support(*, scale=None, format=None, simplify=True): >>> import matplotlib.pyplot as plt >>> from astropy import units as u >>> from astropy import visualization - >>> with visualization.time_support(): # doctest: +IGNORE_OUTPUT + >>> with visualization.time_support(): ... plt.figure() ... plt.plot(Time(['2016-03-22T12:30:31', '2016-03-22T12:30:38', '2016-03-22T12:34:40'])) ... plt.draw() From ba1c660fab34f7460c29d860bb780c111c6cec80 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Thu, 26 Dec 2024 19:16:20 +0530 Subject: [PATCH 15/24] revising mistake --- astropy/visualization/time.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astropy/visualization/time.py b/astropy/visualization/time.py index 3ac2c1b8dae1..1e54e56aa6ca 100644 --- a/astropy/visualization/time.py +++ b/astropy/visualization/time.py @@ -26,7 +26,7 @@ def time_support(*, scale=None, format=None, simplify=True): >>> import matplotlib.pyplot as plt >>> from astropy import units as u >>> from astropy import visualization - >>> with visualization.time_support(): + >>> with visualization.time_support(): # doctest: +IGNORE_OUTPUT ... plt.figure() ... plt.plot(Time(['2016-03-22T12:30:31', '2016-03-22T12:30:38', '2016-03-22T12:34:40'])) ... plt.draw() From 3ad0c25cbd37101d1212fad74cf66e29faf9ae3c Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Thu, 26 Dec 2024 19:52:35 +0530 Subject: [PATCH 16/24] Using other docstring example refs --- astropy/visualization/astropy_support.py | 25 ++++++++++++------------ 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 779e9c4a655d..619a06eb6d81 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -16,19 +16,18 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): .. plot:: :include-source: - - >>> import matplotlib.pyplot as plt - >>> import astropy.units as u - >>> from astropy.time import Time - >>> from astropy.visualization.astropy_support import astropy_support - - >>> @astropy_support() - ... def plot_example(): - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() - ... plt.show() + import matplotlib.pyplot as plt + import astropy.units as u + from astropy.time import Time + from astropy.visualization.astropy_support import astropy_support + + @astropy_support() + def plot_example(): + plt.figure() + plt.plot([1, 2, 3] * u.m) + plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + plt.draw() + plt.show() >>> with astropy_support(): # doctest: +IGNORE_OUTPUT ... plt.figure() From 277e45287560529504b4cf038a67434c51bef611 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Thu, 26 Dec 2024 19:53:13 +0530 Subject: [PATCH 17/24] Formatting --- astropy/visualization/astropy_support.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 619a06eb6d81..7ca5297baea8 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -13,9 +13,10 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): Examples ---------- - + .. plot:: :include-source: + import matplotlib.pyplot as plt import astropy.units as u from astropy.time import Time @@ -29,11 +30,11 @@ def plot_example(): plt.draw() plt.show() - >>> with astropy_support(): # doctest: +IGNORE_OUTPUT - ... plt.figure() - ... plt.plot([1, 2, 3] * u.m) - ... plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) - ... plt.draw() + with astropy_support(): # doctest: +IGNORE_OUTPUT + plt.figure() + plt.plot([1, 2, 3] * u.m) + plt.plot(Time(['2000-01-01', '2000-01-02', '2000-01-03']).plot_date) + plt.draw() """ with ExitStack() as stack: From 235bd4e5e3eaa494108c71732de41e7239fbf160 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sat, 28 Dec 2024 23:29:04 +0530 Subject: [PATCH 18/24] style 1.0 --- astropy/visualization/astropy_support.py | 4 ++-- docs/changes/visualization/17575.feature.rst | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 7ca5297baea8..30755444307d 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -12,8 +12,8 @@ def astropy_support(*, quantity_support_kwargs=None, time_support_kwargs=None): It can be used as a decorator or with a ``with`` statement. Examples - ---------- - + -------- + .. plot:: :include-source: diff --git a/docs/changes/visualization/17575.feature.rst b/docs/changes/visualization/17575.feature.rst index 1852d6cb6a9c..6d2fa0b022b1 100644 --- a/docs/changes/visualization/17575.feature.rst +++ b/docs/changes/visualization/17575.feature.rst @@ -1,3 +1,2 @@ -Added a new ``astropy_support`` context manager in ``astropy.visualization``. -This enables ``time_support`` and ``quantity_support`` for plotting ``astropy.units.Quantity`` and ``astropy.time.Time`` instances in matplotlib. - +Added a new ``astropy_support`` context manager in ``astropy.visualization``. +This enables ``time_support`` and ``quantity_support`` for plotting ``astropy.units.Quantity`` and ``astropy.time.Time`` instances in matplotlib. \ No newline at end of file From 43652b8112706c497a9987ac2ef3da6dac182ade Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sat, 28 Dec 2024 23:30:43 +0530 Subject: [PATCH 19/24] style 2.0 --- .../wcsaxes/tests/test_images.py | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index 41e3b8ae314e..94f84d3a8d3f 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -1407,21 +1407,23 @@ def test_astropy_support(): x_meters = np.linspace(1, 10, 50) * u.m # Distances in meters x_kilometers = np.linspace(0.002, 0.011, 50) * u.km # Distances in kilometers - y_seconds = Time('2000-01-01T00:10:00', scale='utc') + TimeDelta(np.linspace(0, 3600, 50), format='sec') + y_seconds = Time("2000-01-01T00:10:00", scale="utc") + TimeDelta( + np.linspace(0, 3600, 50), format="sec" + ) + + start_time = Time("2000-01-01T00:00:00", scale="utc") + end_time = start_time + TimeDelta(2 / 24, format="jd") - start_time = Time('2000-01-01T00:00:00', scale='utc') - end_time = start_time + TimeDelta(2/24, format='jd') - with astropy_support(): fig, ax = plt.subplots() - ax.plot(x_meters, y_seconds, label='Meters vs. Seconds') - ax.plot(x_kilometers, y_seconds, label='Kilometers vs. Seconds') + ax.plot(x_meters, y_seconds, label="Meters vs. Seconds") + ax.plot(x_kilometers, y_seconds, label="Kilometers vs. Seconds") - ax.set_ylim(start_time, Time((end_time), format='jd')) + ax.set_ylim(start_time, Time((end_time), format="jd")) - ax.set_xlabel('Distance (m)') - ax.set_ylabel('Time') + ax.set_xlabel("Distance (m)") + ax.set_ylabel("Time") ax.legend() - return fig \ No newline at end of file + return fig From 9f00dc1decb5d6e4a326962f95d36561808585f3 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sat, 28 Dec 2024 23:37:49 +0530 Subject: [PATCH 20/24] style 3.0 --- astropy/visualization/astropy_support.py | 2 +- astropy/visualization/wcsaxes/tests/test_images.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index 30755444307d..f2417c9456c9 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -1,6 +1,6 @@ +from contextlib import contextmanager, ExitStack from astropy.visualization.time import time_support from astropy.visualization.units import quantity_support -from contextlib import contextmanager, ExitStack @contextmanager diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index 94f84d3a8d3f..c7a37f5c2b64 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -22,11 +22,12 @@ from astropy.utils import isiterable from astropy.utils.data import get_pkg_data_filename from astropy.utils.exceptions import AstropyUserWarning +from astropy.visualization.astropy_support import astropy_support from astropy.visualization.wcsaxes import WCSAxes, add_beam, add_scalebar from astropy.visualization.wcsaxes.frame import EllipticalFrame from astropy.visualization.wcsaxes.patches import Quadrangle, SphericalCircle from astropy.time import Time, TimeDelta -from astropy.visualization.astropy_support import astropy_support + from astropy.wcs import WCS From 667f45734accb82ce49902c07ac34990561a72e4 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Sat, 28 Dec 2024 23:49:27 +0530 Subject: [PATCH 21/24] style (finally figured it out) --- astropy/visualization/astropy_support.py | 3 ++- astropy/visualization/wcsaxes/tests/test_images.py | 3 +-- docs/changes/visualization/17575.feature.rst | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/astropy/visualization/astropy_support.py b/astropy/visualization/astropy_support.py index f2417c9456c9..dc880d6999a7 100644 --- a/astropy/visualization/astropy_support.py +++ b/astropy/visualization/astropy_support.py @@ -1,4 +1,5 @@ -from contextlib import contextmanager, ExitStack +from contextlib import ExitStack, contextmanager + from astropy.visualization.time import time_support from astropy.visualization.units import quantity_support diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index c7a37f5c2b64..908f13a5ea68 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -19,6 +19,7 @@ ) from astropy.io import fits from astropy.tests.figures import figure_test +from astropy.time import Time, TimeDelta from astropy.utils import isiterable from astropy.utils.data import get_pkg_data_filename from astropy.utils.exceptions import AstropyUserWarning @@ -26,8 +27,6 @@ from astropy.visualization.wcsaxes import WCSAxes, add_beam, add_scalebar from astropy.visualization.wcsaxes.frame import EllipticalFrame from astropy.visualization.wcsaxes.patches import Quadrangle, SphericalCircle -from astropy.time import Time, TimeDelta - from astropy.wcs import WCS diff --git a/docs/changes/visualization/17575.feature.rst b/docs/changes/visualization/17575.feature.rst index 6d2fa0b022b1..b0b30fc7732b 100644 --- a/docs/changes/visualization/17575.feature.rst +++ b/docs/changes/visualization/17575.feature.rst @@ -1,2 +1,2 @@ Added a new ``astropy_support`` context manager in ``astropy.visualization``. -This enables ``time_support`` and ``quantity_support`` for plotting ``astropy.units.Quantity`` and ``astropy.time.Time`` instances in matplotlib. \ No newline at end of file +This enables ``time_support`` and ``quantity_support`` for plotting ``astropy.units.Quantity`` and ``astropy.time.Time`` instances in matplotlib. From 8f320676a0d95c4b05f9da5bf2f6452fed35297a Mon Sep 17 00:00:00 2001 From: Pranav S <45627714+spranav1205@users.noreply.github.com> Date: Wed, 1 Jan 2025 12:10:16 +0530 Subject: [PATCH 22/24] Update astropy/tests/figures/py311-test-image-mpl360-cov.json Correcting file path Co-authored-by: P. L. Lim <2090236+pllim@users.noreply.github.com> --- astropy/tests/figures/py311-test-image-mpl360-cov.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astropy/tests/figures/py311-test-image-mpl360-cov.json b/astropy/tests/figures/py311-test-image-mpl360-cov.json index bd01f088796c..4c0f42f67984 100644 --- a/astropy/tests/figures/py311-test-image-mpl360-cov.json +++ b/astropy/tests/figures/py311-test-image-mpl360-cov.json @@ -56,5 +56,5 @@ "astropy.visualization.wcsaxes.tests.test_transform_coord_meta.TestTransformCoordMeta.test_direct_init": "1f24c5243bfdf0f30e88afc4f2f5d66db85954cea50a2910af94975ff8765b45", "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_5d_with_names": "c90ae6f3b0f9f407ca7a866fa648dc3ef4bea78369315292bc82f16104ed5736", "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_2d_celestial_arcsec": "4b743d645a85d7516decbcf4a831c127af5a1800072597c2a1299d17fb186adb", - "astropy.visualization.wcsaxes.tests.test_astropy_support": "aee3dd8cfc0998ec2d904549c6527fa55f3b16cbe9a30c222a2c0ac6a6db155e" + "astropy.visualization.wcsaxes.tests.test_images.test_astropy_support": "aee3dd8cfc0998ec2d904549c6527fa55f3b16cbe9a30c222a2c0ac6a6db155e" } From 44f5abf138852f0a87c5b64da6a7708dd0721de7 Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 1 Jan 2025 12:17:46 +0530 Subject: [PATCH 23/24] tests in alphabetical order --- .../wcsaxes/tests/test_images.py | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/astropy/visualization/wcsaxes/tests/test_images.py b/astropy/visualization/wcsaxes/tests/test_images.py index 908f13a5ea68..97c68ecbd146 100644 --- a/astropy/visualization/wcsaxes/tests/test_images.py +++ b/astropy/visualization/wcsaxes/tests/test_images.py @@ -1235,6 +1235,33 @@ def test_allsky_labels_wrap(): return fig +@figure_test(tolerance=1) +def test_astropy_support(): + x_meters = np.linspace(1, 10, 50) * u.m # Distances in meters + x_kilometers = np.linspace(0.002, 0.011, 50) * u.km # Distances in kilometers + + y_seconds = Time("2000-01-01T00:10:00", scale="utc") + TimeDelta( + np.linspace(0, 3600, 50), format="sec" + ) + + start_time = Time("2000-01-01T00:00:00", scale="utc") + end_time = start_time + TimeDelta(2 / 24, format="jd") + + with astropy_support(): + fig, ax = plt.subplots() + + ax.plot(x_meters, y_seconds, label="Meters vs. Seconds") + ax.plot(x_kilometers, y_seconds, label="Kilometers vs. Seconds") + + ax.set_ylim(start_time, Time((end_time), format="jd")) + + ax.set_xlabel("Distance (m)") + ax.set_ylabel("Time") + ax.legend() + + return fig + + @figure_test def test_tickable_gridlines(): wcs = WCS( @@ -1400,30 +1427,3 @@ def fruit_format(value, **kwargs): ax.coords[0].set_major_formatter(double_format) ax.coords[1].set_major_formatter(fruit_format) return fig - - -@figure_test(tolerance=1) -def test_astropy_support(): - x_meters = np.linspace(1, 10, 50) * u.m # Distances in meters - x_kilometers = np.linspace(0.002, 0.011, 50) * u.km # Distances in kilometers - - y_seconds = Time("2000-01-01T00:10:00", scale="utc") + TimeDelta( - np.linspace(0, 3600, 50), format="sec" - ) - - start_time = Time("2000-01-01T00:00:00", scale="utc") - end_time = start_time + TimeDelta(2 / 24, format="jd") - - with astropy_support(): - fig, ax = plt.subplots() - - ax.plot(x_meters, y_seconds, label="Meters vs. Seconds") - ax.plot(x_kilometers, y_seconds, label="Kilometers vs. Seconds") - - ax.set_ylim(start_time, Time((end_time), format="jd")) - - ax.set_xlabel("Distance (m)") - ax.set_ylabel("Time") - ax.legend() - - return fig From 5830e9891720079eaf39d909ab60b4d04c70d6ac Mon Sep 17 00:00:00 2001 From: spranav1205 Date: Wed, 1 Jan 2025 16:36:39 +0530 Subject: [PATCH 24/24] Attempt to update the other JSON file --- astropy/tests/figures/py311-test-image-mpldev-cov.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/astropy/tests/figures/py311-test-image-mpldev-cov.json b/astropy/tests/figures/py311-test-image-mpldev-cov.json index b83783c6b23c..15b96718b64e 100644 --- a/astropy/tests/figures/py311-test-image-mpldev-cov.json +++ b/astropy/tests/figures/py311-test-image-mpldev-cov.json @@ -55,5 +55,6 @@ "astropy.visualization.wcsaxes.tests.test_transform_coord_meta.TestTransformCoordMeta.test_coords_overlay_auto_coord_meta": "2f737bb70fb1a5452cb0efa79010376614dc559e9aff607f638f044ac6b04448", "astropy.visualization.wcsaxes.tests.test_transform_coord_meta.TestTransformCoordMeta.test_direct_init": "1f24c5243bfdf0f30e88afc4f2f5d66db85954cea50a2910af94975ff8765b45", "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_5d_with_names": "c90ae6f3b0f9f407ca7a866fa648dc3ef4bea78369315292bc82f16104ed5736", - "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_2d_celestial_arcsec": "4b743d645a85d7516decbcf4a831c127af5a1800072597c2a1299d17fb186adb" + "astropy.visualization.wcsaxes.tests.test_wcsapi.test_wcsapi_2d_celestial_arcsec": "4b743d645a85d7516decbcf4a831c127af5a1800072597c2a1299d17fb186adb", + "astropy.visualization.wcsaxes.tests.test_images.test_astropy_support": "aee3dd8cfc0998ec2d904549c6527fa55f3b16cbe9a30c222a2c0ac6a6db155e" }