From 682e44e64ea466e9b9fe7778f0d112689926e3e0 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 11:12:13 +0800 Subject: [PATCH 1/7] Figure.pygmtlogo: Set the region based on wordmark for easier design --- pygmt/src/pygmtlogo.py | 12 +++++++++--- .../baseline/test_pygmtlogo_circle_design.png.dvc | 5 ----- .../test_pygmtlogo_circle_design_horizontal.png.dvc | 5 +++++ .../test_pygmtlogo_circle_design_vertical.png.dvc | 5 +++++ pygmt/tests/test_pygmtlogo.py | 7 ++++--- 5 files changed, 23 insertions(+), 11 deletions(-) delete mode 100644 pygmt/tests/baseline/test_pygmtlogo_circle_design.png.dvc create mode 100644 pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc create mode 100644 pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc diff --git a/pygmt/src/pygmtlogo.py b/pygmt/src/pygmtlogo.py index 15a706501b8..c8c39bf441d 100644 --- a/pygmt/src/pygmtlogo.py +++ b/pygmt/src/pygmtlogo.py @@ -32,8 +32,13 @@ def _create_logo( # noqa: PLR0915 # Helpful definitions size = 4 - region = [-size, size] * 2 proj = "x1c" + region = { + "horizontal": [-size, size * 8.0, -size, size], + "vertical": [-size, size, -size * 1.75, size], + "none": [-size, size, -size, size], + }[wordmark] + # Rotation around z-axis by 30 degrees counter-clockwise placed in the center. perspective = "30+w0/0" @@ -240,8 +245,9 @@ def _vline_coords(): pen = "0.3p,gray30,2_2" fig.plot(x=0, y=0, style=f"c{2 * (r2 + (r3 - r4))}c", pen=pen) # Lines for letter M - fig.hlines(y=[r4, r5], xmin=-3, pen=pen, perspective=True) - fig.vlines(x=[r4, (thick_gap + r4) / 2], ymax=3, pen=pen, perspective=True) + fig.hlines(y=[r4, r5], xmin=-size, xmax=size, pen=pen, perspective=True) + m_mid = (thick_gap + r4) / 2 + fig.vlines(x=[r4, m_mid], ymin=size, ymax=size, pen=pen, perspective=True) if figname: fig.savefig(fname=figname) diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design.png.dvc deleted file mode 100644 index 7a81601eafe..00000000000 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design.png.dvc +++ /dev/null @@ -1,5 +0,0 @@ -outs: -- md5: 2d9fd4fdb1189514d374500d5f4add73 - size: 149683 - hash: md5 - path: test_pygmtlogo_circle_design.png diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc new file mode 100644 index 00000000000..4c47c26b65d --- /dev/null +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc @@ -0,0 +1,5 @@ +outs: +- md5: aa81800cf61690b943b169acea92e598 + size: 324892 + hash: md5 + path: test_pygmtlogo_circle_design_horizontal.png diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc new file mode 100644 index 00000000000..22e43c569d7 --- /dev/null +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc @@ -0,0 +1,5 @@ +outs: +- md5: 9ce3200ca60b01c36fcf9270202d6556 + size: 166673 + hash: md5 + path: test_pygmtlogo_circle_design_vertical.png diff --git a/pygmt/tests/test_pygmtlogo.py b/pygmt/tests/test_pygmtlogo.py index e4d6f4aff5e..71078f95548 100644 --- a/pygmt/tests/test_pygmtlogo.py +++ b/pygmt/tests/test_pygmtlogo.py @@ -9,15 +9,16 @@ @pytest.mark.mpl_image_compare(savefig_kwargs={"dpi": 600}) -def test_pygmtlogo_circle_design(): +@pytest.mark.parametrize("wordmark", ["horizontal", "vertical"]) +def test_pygmtlogo_circle_design(wordmark): """ - Test the design details of the PyGMT circular logo. + Test the design details of the PyGMT circular logo, with a wordmark. This is a regression test to ensure that the design of the logo does not change unintentionally. The debugging lines (gridlines and circles) are helpful for implementing the logo, but they are not included in the final logo design. """ - fig = _create_logo(debug=True) + fig = _create_logo(debug=True, wordmark=wordmark) return fig From 9731a91495edf406c9f61c89ac646a65b559aa45 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 11:27:19 +0800 Subject: [PATCH 2/7] Remove the no_clip parameter from Figure.text call and slight decrease font size --- pygmt/src/pygmtlogo.py | 5 ++--- .../baseline/test_pygmtlogo_circle_design_vertical.png.dvc | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pygmt/src/pygmtlogo.py b/pygmt/src/pygmtlogo.py index c8c39bf441d..54a38d783dd 100644 --- a/pygmt/src/pygmtlogo.py +++ b/pygmt/src/pygmtlogo.py @@ -82,7 +82,7 @@ def _create_logo( # noqa: PLR0915 font = "AvantGarde-Book" match wordmark: case "vertical": - args_text_wm = {"x": 0, "y": -4.5, "justify": "CT", "font": f"2.5c,{font}"} + args_text_wm = {"x": 0, "y": -4.5, "justify": "CT", "font": f"2.4c,{font}"} case "horizontal": args_text_wm = {"x": 4.5, "y": 0.8, "justify": "LM", "font": f"8c,{font}"} @@ -229,8 +229,7 @@ def _vline_coords(): # Add wordmark "PyGMT" if wordmark != "none": - text_wm = f"@;{color_py};Py@;;@;{color_gmt};GMT@;;" - fig.text(text=text_wm, no_clip=True, **args_text_wm) + fig.text(text=f"@;{color_py};Py@;;@;{color_gmt};GMT@;;", **args_text_wm) # Helpful for implementing the logo; not included in the logo if debug: diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc index 22e43c569d7..6eea80dea7a 100644 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc @@ -1,5 +1,5 @@ outs: -- md5: 9ce3200ca60b01c36fcf9270202d6556 - size: 166673 +- md5: da5592bdda31790b6c3d136145bb4033 + size: 165637 hash: md5 path: test_pygmtlogo_circle_design_vertical.png From 30209a57ad5e4ba979cc7a6e9cee7ed4bd0867ae Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 19:32:24 +0800 Subject: [PATCH 3/7] Fix a typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Yvonne Fröhlich <94163266+yvonnefroehlich@users.noreply.github.com> --- pygmt/src/pygmtlogo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygmt/src/pygmtlogo.py b/pygmt/src/pygmtlogo.py index 92e6c19fa90..6b6ce0ae55a 100644 --- a/pygmt/src/pygmtlogo.py +++ b/pygmt/src/pygmtlogo.py @@ -246,7 +246,7 @@ def _compass_lines(): # Lines for letter M fig.hlines(y=[r4, r5], xmin=-size, xmax=size, pen=pen, perspective=True) m_mid = (thick_gap + r4) / 2 - fig.vlines(x=[r4, m_mid], ymin=size, ymax=size, pen=pen, perspective=True) + fig.vlines(x=[r4, m_mid], ymin=-size, ymax=size, pen=pen, perspective=True) if figname: fig.savefig(fname=figname) From 6db28eb4df0021c24a98e039a472cd7d97c23429 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 19:33:59 +0800 Subject: [PATCH 4/7] Fix baseline images --- .../baseline/test_pygmtlogo_circle_design_horizontal.png.dvc | 4 ++-- .../baseline/test_pygmtlogo_circle_design_vertical.png.dvc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc index 4c28c331c7b..31abcb47ac6 100644 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc @@ -1,5 +1,5 @@ outs: -- md5: e6e13c62a596732ba3814ffbc1fa9106 - size: 324924 +- md5: b4eccfc768721e990b08bf152116cc1e + size: 341246 hash: md5 path: test_pygmtlogo_circle_design_horizontal.png diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc index 06f42417f69..620e7ea545f 100644 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc @@ -1,5 +1,5 @@ outs: -- md5: b04f10a219d1a2b92dedc721e349dc6b - size: 165671 +- md5: 5beafa63fb8c268c30f7b297ca095860 + size: 177426 hash: md5 path: test_pygmtlogo_circle_design_vertical.png From b75ab4306fe79c50810f2efe18f07d5818793587 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 20:53:05 +0800 Subject: [PATCH 5/7] Slightly shorter hlines and vlines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Yvonne Fröhlich <94163266+yvonnefroehlich@users.noreply.github.com> --- pygmt/src/pygmtlogo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pygmt/src/pygmtlogo.py b/pygmt/src/pygmtlogo.py index 6b6ce0ae55a..77ab5bc60cf 100644 --- a/pygmt/src/pygmtlogo.py +++ b/pygmt/src/pygmtlogo.py @@ -244,9 +244,10 @@ def _compass_lines(): pen = "0.3p,gray30,2_2" fig.plot(x=0, y=0, style=f"c{2 * (r2 + (r3 - r4))}c", pen=pen) # Lines for letter M - fig.hlines(y=[r4, r5], xmin=-size, xmax=size, pen=pen, perspective=True) + size_s = size - size * 0.1 + fig.hlines(y=[r4, r5], xmin=-size_s, xmax=size_s, pen=pen, perspective=True) m_mid = (thick_gap + r4) / 2 - fig.vlines(x=[r4, m_mid], ymin=-size, ymax=size, pen=pen, perspective=True) + fig.vlines(x=[r4, m_mid], ymin=-size_s, ymax=size_s, pen=pen, perspective=True) if figname: fig.savefig(fname=figname) From d9f3d83d53a449a8bd76aa35b71e63fdb3889667 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 20:55:37 +0800 Subject: [PATCH 6/7] Update baseline images --- .../baseline/test_pygmtlogo_circle_design_horizontal.png.dvc | 4 ++-- .../baseline/test_pygmtlogo_circle_design_vertical.png.dvc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc index 31abcb47ac6..3648ff8045d 100644 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_horizontal.png.dvc @@ -1,5 +1,5 @@ outs: -- md5: b4eccfc768721e990b08bf152116cc1e - size: 341246 +- md5: de3f281a09815faff7fed339c1635bc5 + size: 336254 hash: md5 path: test_pygmtlogo_circle_design_horizontal.png diff --git a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc index 620e7ea545f..dc0b53a0cd7 100644 --- a/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc +++ b/pygmt/tests/baseline/test_pygmtlogo_circle_design_vertical.png.dvc @@ -1,5 +1,5 @@ outs: -- md5: 5beafa63fb8c268c30f7b297ca095860 - size: 177426 +- md5: dd09fa24c575eabac7659dc49f313f5f + size: 173671 hash: md5 path: test_pygmtlogo_circle_design_vertical.png From a076530fe9d7376846d9925fabb15ff4756d3610 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Mon, 11 May 2026 20:56:03 +0800 Subject: [PATCH 7/7] Use 0.9 * size --- pygmt/src/pygmtlogo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygmt/src/pygmtlogo.py b/pygmt/src/pygmtlogo.py index 77ab5bc60cf..ec1bb7d9250 100644 --- a/pygmt/src/pygmtlogo.py +++ b/pygmt/src/pygmtlogo.py @@ -244,7 +244,7 @@ def _compass_lines(): pen = "0.3p,gray30,2_2" fig.plot(x=0, y=0, style=f"c{2 * (r2 + (r3 - r4))}c", pen=pen) # Lines for letter M - size_s = size - size * 0.1 + size_s = 0.9 * size fig.hlines(y=[r4, r5], xmin=-size_s, xmax=size_s, pen=pen, perspective=True) m_mid = (thick_gap + r4) / 2 fig.vlines(x=[r4, m_mid], ymin=-size_s, ymax=size_s, pen=pen, perspective=True)