From 6b21451b889cba72ab2e379a58c3d8925e79a986 Mon Sep 17 00:00:00 2001 From: Liam Toney Date: Fri, 1 Nov 2019 00:02:04 -0800 Subject: [PATCH 1/5] Implement default position for legend --- pygmt/base_plotting.py | 9 ++++++--- .../baseline/test_legend_default_position.png | Bin 0 -> 25861 bytes pygmt/tests/test_legend.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 pygmt/tests/baseline/test_legend_default_position.png diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index 8d43c88c162..d989513d657 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -541,7 +541,7 @@ def image(self, imagefile, **kwargs): @fmt_docstring @use_alias(R="region", J="projection", D="position", F="box") @kwargs_to_strings(R="sequence") - def legend(self, spec=None, **kwargs): + def legend(self, spec=None, position="JTR+jTR", **kwargs): """ Plot legends on maps. @@ -564,7 +564,8 @@ def legend(self, spec=None, **kwargs): {R} position (D) : str ``'[g|j|J|n|x]refpoint+wwidth[/height][+jjustify][+lspacing][+odx[/dy]]'`` - Defines the reference point on the map for the legend. + Defines the reference point on the map for the legend. By default, uses + 'JTR+jTR' which places the legend in the upper-right corner, inside. box (F) : bool or str ``'[+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]'`` Without further options, draws a rectangular border around the @@ -578,7 +579,9 @@ def legend(self, spec=None, **kwargs): specfile = spec else: raise GMTInvalidInput("Unrecognized data type: {}".format(type(spec))) - arg_str = " ".join([specfile, build_arg_string(kwargs)]) + arg_str = " ".join( + [specfile, "-D{}".format(position), build_arg_string(kwargs)] + ) lib.call_module("legend", arg_str) @fmt_docstring diff --git a/pygmt/tests/baseline/test_legend_default_position.png b/pygmt/tests/baseline/test_legend_default_position.png new file mode 100644 index 0000000000000000000000000000000000000000..9d5b5709c98ca3f8c06a3a45e26f4f5689ff9fc1 GIT binary patch literal 25861 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 Date: Wed, 6 Nov 2019 22:35:50 -0900 Subject: [PATCH 2/5] Check for presence of position/D arg before assigning default --- pygmt/base_plotting.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index 9ac41920d50..26fa55b6e6f 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -652,6 +652,10 @@ def legend(self, spec=None, position="JTR+jTR", **kwargs): legend using **MAP_FRAME_PEN**. """ kwargs = self._preprocess(**kwargs) + + if "D" not in kwargs: + kwargs["D"] = position + with Session() as lib: if spec is None: specfile = "" @@ -659,9 +663,7 @@ def legend(self, spec=None, position="JTR+jTR", **kwargs): specfile = spec else: raise GMTInvalidInput("Unrecognized data type: {}".format(type(spec))) - arg_str = " ".join( - [specfile, "-D{}".format(position), build_arg_string(kwargs)] - ) + arg_str = " ".join([specfile, build_arg_string(kwargs)]) lib.call_module("legend", arg_str) @fmt_docstring From 6d3c48d31b16b0a5b468313f585ebcafb3055bf9 Mon Sep 17 00:00:00 2001 From: Liam Toney <38269494+liamtoney@users.noreply.github.com> Date: Thu, 7 Nov 2019 00:14:17 -0900 Subject: [PATCH 3/5] Use consistent language to describe legend placement Co-Authored-By: Wei Ji <23487320+weiji14@users.noreply.github.com> --- pygmt/base_plotting.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index 26fa55b6e6f..5046d765a18 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -645,7 +645,8 @@ def legend(self, spec=None, position="JTR+jTR", **kwargs): position (D) : str ``'[g|j|J|n|x]refpoint+wwidth[/height][+jjustify][+lspacing][+odx[/dy]]'`` Defines the reference point on the map for the legend. By default, uses - 'JTR+jTR' which places the legend in the upper-right corner, inside. + 'JTR+jTR' which places the legend at the top-right corner inside + the map frame. box (F) : bool or str ``'[+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]'`` Without further options, draws a rectangular border around the From 5fe82a66a0963aa424f48018bac82de382a4a5bc Mon Sep 17 00:00:00 2001 From: Liam Toney Date: Thu, 7 Nov 2019 01:12:43 -0900 Subject: [PATCH 4/5] Update default legend formatting --- pygmt/base_plotting.py | 10 +++++++--- .../baseline/test_legend_default_position.png | Bin 25861 -> 25896 bytes 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index 5046d765a18..7da5252fb6f 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -621,7 +621,7 @@ def image(self, imagefile, **kwargs): @fmt_docstring @use_alias(R="region", J="projection", D="position", F="box") @kwargs_to_strings(R="sequence") - def legend(self, spec=None, position="JTR+jTR", **kwargs): + def legend(self, spec=None, position="JTR+jTR+o0.2c", box="+gwhite+p1p", **kwargs): """ Plot legends on maps. @@ -645,18 +645,22 @@ def legend(self, spec=None, position="JTR+jTR", **kwargs): position (D) : str ``'[g|j|J|n|x]refpoint+wwidth[/height][+jjustify][+lspacing][+odx[/dy]]'`` Defines the reference point on the map for the legend. By default, uses - 'JTR+jTR' which places the legend at the top-right corner inside + 'JTR+jTR+o0.2c' which places the legend at the top-right corner inside the map frame. box (F) : bool or str ``'[+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]'`` Without further options, draws a rectangular border around the - legend using **MAP_FRAME_PEN**. + legend using **MAP_FRAME_PEN**. By default, uses '+gwhite+p1p' which draws + a box around the legend using a 1 point black pen and adds a white background. """ kwargs = self._preprocess(**kwargs) if "D" not in kwargs: kwargs["D"] = position + if "F" not in kwargs: + kwargs["F"] = box + with Session() as lib: if spec is None: specfile = "" diff --git a/pygmt/tests/baseline/test_legend_default_position.png b/pygmt/tests/baseline/test_legend_default_position.png index 9d5b5709c98ca3f8c06a3a45e26f4f5689ff9fc1..67bd7f2adc20c4e266d39a597b29fac6da229142 100644 GIT binary patch delta 10995 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 From 857ab9a8ea67f2cb6c44a0fc6158a2b4c31d34d9 Mon Sep 17 00:00:00 2001 From: Liam Toney <38269494+liamtoney@users.noreply.github.com> Date: Thu, 7 Nov 2019 01:23:14 -0900 Subject: [PATCH 5/5] Add offset explanation --- pygmt/base_plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygmt/base_plotting.py b/pygmt/base_plotting.py index 7da5252fb6f..64dfbbbbf5d 100644 --- a/pygmt/base_plotting.py +++ b/pygmt/base_plotting.py @@ -646,7 +646,7 @@ def legend(self, spec=None, position="JTR+jTR+o0.2c", box="+gwhite+p1p", **kwarg ``'[g|j|J|n|x]refpoint+wwidth[/height][+jjustify][+lspacing][+odx[/dy]]'`` Defines the reference point on the map for the legend. By default, uses 'JTR+jTR+o0.2c' which places the legend at the top-right corner inside - the map frame. + the map frame, with a 0.2 cm offset. box (F) : bool or str ``'[+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]'`` Without further options, draws a rectangular border around the