From fcb8988f65077a9aa3e275e1d31ae61a32870a24 Mon Sep 17 00:00:00 2001 From: Martin Yeo Date: Mon, 25 Nov 2024 15:54:50 +0000 Subject: [PATCH 1/2] Use a generated SVG logo. --- README.md | 2 +- docs/source/_static/favicon.ico | Bin 5430 -> 0 bytes docs/source/_static/tephi-logo-200-137.png | Bin 43065 -> 0 bytes docs/source/_static/tephi-logo.svg | 394 +++++++++++++++++++++ docs/source/conf.py | 7 +- docs/source/generate_logo.py | 70 ++++ index.ipynb | 2 +- 7 files changed, 469 insertions(+), 6 deletions(-) delete mode 100644 docs/source/_static/favicon.ico delete mode 100644 docs/source/_static/tephi-logo-200-137.png create mode 100644 docs/source/_static/tephi-logo.svg create mode 100644 docs/source/generate_logo.py diff --git a/README.md b/README.md index 3db3be8..ce1c3d4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- Tephi + Tephi

diff --git a/docs/source/_static/favicon.ico b/docs/source/_static/favicon.ico deleted file mode 100644 index 5b51ec51fa98dad8e35f6909231fae8c57f67320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 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 H`R~60c@pTL diff --git a/docs/source/_static/tephi-logo-200-137.png b/docs/source/_static/tephi-logo-200-137.png deleted file mode 100644 index 222f60c4f11f8c5abbe8ad1d9ad4d3a7e7382617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43065 zcmV*LKxDs(P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 + + + + + + + 2024-11-25T15:49:10.144179 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/conf.py b/docs/source/conf.py index a9a01cd..de23f17 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -131,12 +131,11 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. -html_logo = "_static/tephi-logo-200-137.png" +html_logo = "_static/tephi-logo.svg" # The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -html_favicon = "_static/favicon.ico" +# docs. +html_favicon = "_static/tephi-logo.svg" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs/source/generate_logo.py b/docs/source/generate_logo.py new file mode 100644 index 0000000..f7f1645 --- /dev/null +++ b/docs/source/generate_logo.py @@ -0,0 +1,70 @@ +"""Script to generate the Tephi logo.""" + +from pathlib import Path + +import matplotlib.pyplot as plt +import tephi + + +# Prepare the data. +dew_point = Path(tephi.DATA_DIR) / "dews.txt" +dew_data = tephi.loadtxt(str(dew_point), column_titles=('pressure', 'dewpoint')) +# Limit the data to ensure there are no areas without lines. +dews = zip(dew_data.pressure[1:-2], dew_data.dewpoint[1:-2]) + + +def coarsen_tephi_line(spec: list[tuple[int, int]], factor: int): + return [(step * factor, zoom) for step, zoom in spec] + + +def restyle_tephi_line(line: dict): + return line | dict(color="white", linestyle="solid", linewidth=3) + + +tephi.ISOBAR_SPEC = coarsen_tephi_line(tephi.ISOBAR_SPEC, 5) +tephi.WET_ADIABAT_SPEC = coarsen_tephi_line(tephi.WET_ADIABAT_SPEC, 5) +tephi.MIXING_RATIO_SPEC = coarsen_tephi_line(tephi.MIXING_RATIO_SPEC, 3) + +tephi.ISOBAR_LINE = restyle_tephi_line(tephi.ISOBAR_LINE) +tephi.WET_ADIABAT_LINE = restyle_tephi_line(tephi.WET_ADIABAT_LINE) +tephi.MIXING_RATIO_LINE = restyle_tephi_line(tephi.MIXING_RATIO_LINE) + +tpg = tephi.Tephigram() +tpg.plot( + dews, + color="white", + linewidth=3, + linestyle="dashed", +) + +ax = plt.gca() + +ax.set_facecolor("#7DA7FC") + +for key, artist in ax.axis.items(): + artist.set_visible(False) +ax.grid(False) + +for text in ax.texts: + text.set_visible(False) + +ax.set_aspect("auto") +plt.gcf().set_size_inches(6, 6) + +ax.text( + 0.5, + 0.5, + 'Tφ', + horizontalalignment='center', + verticalalignment='center', + transform=ax.transAxes, + size=256, + style="italic", + weight="bold", + zorder=10, + color="white", +) + +static_dir = Path(__file__).parent / "_static" +plt.subplots_adjust(left=0, right=1, top=1, bottom=0) +plt.savefig(static_dir / "tephi-logo.svg") diff --git a/index.ipynb b/index.ipynb index 678dc30..e5f2e77 100644 --- a/index.ipynb +++ b/index.ipynb @@ -6,7 +6,7 @@ "source": [ "

\n", "\n", - " \"Tephi\"\n", + " \"Tephi\"\n", "\n", "

\n", "

\n", From afde4cd6cc7223f6c3338f2512dc7d444de952fe Mon Sep 17 00:00:00 2001 From: Martin Yeo Date: Mon, 25 Nov 2024 16:07:08 +0000 Subject: [PATCH 2/2] Smaller image size. --- docs/source/_static/tephi-logo.svg | 522 ++++++++++++++--------------- docs/source/generate_logo.py | 4 +- 2 files changed, 254 insertions(+), 272 deletions(-) diff --git a/docs/source/_static/tephi-logo.svg b/docs/source/_static/tephi-logo.svg index ae17a17..879d67b 100644 --- a/docs/source/_static/tephi-logo.svg +++ b/docs/source/_static/tephi-logo.svg @@ -1,12 +1,12 @@ - + - 2024-11-25T15:49:10.144179 + 2024-11-25T16:06:58.433089 image/svg+xml @@ -21,324 +21,306 @@ - - - + - + - + - + +" clip-path="url(#p02c2175ecb)" style="fill: none; stroke: #ffffff; stroke-width: 3; stroke-linecap: square"/> - + +" clip-path="url(#p02c2175ecb)" style="fill: none; stroke: #ffffff; stroke-width: 3; stroke-linecap: square"/> - + +" clip-path="url(#p02c2175ecb)" style="fill: none; stroke: #ffffff; stroke-width: 3; stroke-linecap: square"/> +" clip-path="url(#p02c2175ecb)" style="fill: none; stroke: #ffffff; stroke-width: 3; stroke-linecap: square"/> - + - + - + - + - + - + - + - + - + - + + diff --git a/docs/source/generate_logo.py b/docs/source/generate_logo.py index f7f1645..87ef24c 100644 --- a/docs/source/generate_logo.py +++ b/docs/source/generate_logo.py @@ -49,7 +49,7 @@ def restyle_tephi_line(line: dict): text.set_visible(False) ax.set_aspect("auto") -plt.gcf().set_size_inches(6, 6) +plt.gcf().set_size_inches(3, 3) ax.text( 0.5, @@ -58,7 +58,7 @@ def restyle_tephi_line(line: dict): horizontalalignment='center', verticalalignment='center', transform=ax.transAxes, - size=256, + size=128, style="italic", weight="bold", zorder=10,