From 78efa6cdddbd3f77acb1b718b9e17f1540c9da31 Mon Sep 17 00:00:00 2001 From: Wei Ji Date: Mon, 11 May 2020 11:21:50 +1200 Subject: [PATCH] Alias frame (B) for subplot Include test to check that map frame setting is applied to all subplot figures when using 'begin' subplot directive. --- pygmt/base_plotting.py | 2 +- pygmt/tests/baseline/test_subplot_frame.png | Bin 0 -> 9249 bytes pygmt/tests/test_subplot.py | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 pygmt/tests/baseline/test_subplot_frame.png diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index e2ec43459c7..5c3e5f56ed5 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -884,7 +884,7 @@ def legend(self, spec=None, position="JTR+jTR+o0.2c", box="+gwhite+p1p", **kwarg lib.call_module("legend", arg_str) @fmt_docstring - @use_alias(F="dimensions") + @use_alias(F="dimensions", B="frame") def subplot(self, directive: str, row: int = None, col: int = None, **kwargs): """ Manage modern mode figure subplot configuration and selection. diff --git a/pygmt/tests/baseline/test_subplot_frame.png b/pygmt/tests/baseline/test_subplot_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..071133e186902fe31214d60f105fbe60bdf4a5e6 GIT binary patch literal 9249 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 D_KCoO literal 0 HcmV?d00001 diff --git a/pygmt/tests/test_subplot.py b/pygmt/tests/test_subplot.py index 241b2e23763..fa3630e70c8 100644 --- a/pygmt/tests/test_subplot.py +++ b/pygmt/tests/test_subplot.py @@ -22,6 +22,21 @@ def test_subplot_basic(): return fig +@pytest.mark.mpl_image_compare +def test_subplot_frame(): + """ + Check that map frame setting is applied to all subplot figures + """ + fig = Figure() + fig.subplot(directive="begin", row=1, col=2, dimensions="f6c/3c", frame="WSne") + fig.subplot(directive="set", row=0, col=0) + fig.basemap(region=[0, 3, 0, 3], frame="+tplot0") + fig.subplot(directive="set", row=0, col=1) + fig.basemap(region=[0, 3, 0, 3], frame="+tplot1") + fig.subplot(directive="end") + return fig + + def test_subplot_incorrect_directive(): """ Check that subplot fails when an incorrect directive is used