Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design a logo for PyGMT #1404

Open
weiji14 opened this issue Aug 2, 2021 · 22 comments
Open

Design a logo for PyGMT #1404

weiji14 opened this issue Aug 2, 2021 · 22 comments
Labels
discussions Need more discussion before taking further actions
Milestone

Comments

@weiji14
Copy link
Member

weiji14 commented Aug 2, 2021

Description of the desired feature

Discussion for a PyGMT logo has been brought up a few times already in meetings and the forum post at https://forum.generic-mapping-tools.org/t/design-for-pygmt-logo/1346. I think it's time for the PyGMT project to have a proper logo in place by the end of the year (for v0.5.0), ideally before the AGU 2021 conference (#1395) in December so we can give out stickers 😁

Logo Design Requirements

As pointed out by Leo at https://forum.generic-mapping-tools.org/t/design-for-pygmt-logo/1346/2, the logo should ideally:

  1. Be roughly 1:1 proportion (to make it easier to use)
  2. Must be recognizable/understandable at large and small sizes (no small fonts, thin lines, small details)
  3. Ideally should work on light and dark backgrounds
  4. No use of non-open art work/images

Are you willing to help implement and maintain this feature? Yes, this will be a fun and not very code-heavy project for the ESWN workshop running from 17-19 Aug

@weiji14 weiji14 added help wanted Helping hands are appreciated eswn-workshop Good issues for first-contributions during the ESWN-PyGMT workshop labels Aug 2, 2021
@weiji14 weiji14 added this to the 0.5.0 milestone Aug 2, 2021
@weiji14 weiji14 pinned this issue Aug 10, 2021
@weiji14 weiji14 unpinned this issue Aug 18, 2021
@weiji14 weiji14 added good first issue Good for newcomers and removed eswn-workshop Good issues for first-contributions during the ESWN-PyGMT workshop labels Sep 21, 2021
@weiji14 weiji14 modified the milestones: 0.5.0, 0.6.0 Sep 30, 2021
@weiji14 weiji14 modified the milestones: 0.6.0, 0.7.0 Mar 1, 2022
@seisman seisman modified the milestones: 0.7.0, 1.0.0 Jun 16, 2022
@seisman
Copy link
Member

seisman commented Jan 6, 2025

As proposed in #2579 (comment), I'm merging issue #2579 into this issue so that we can have a central issue to discuss the logo.

#2579 (comment) from @juanis2112

Hi everyone,

I'm Juanita, a contributor for PyOpenSci, and I'm excited to reach out to you regarding the creation of an official logo for PyGMT. Recently, I discovered that PyGMT doesn't have a designated logo, and after speaking with @weiji14, I learned that this is something the community desires. Hence, I volunteered to help with this initiative!

While there have been some informal discussions in the past, we haven't reached an official decision regarding the logo. Therefore, I believe it would be beneficial to utilize this GitHub issue as a platform to gather opinions and ultimately arrive at a final decision. To kickstart the process, I have compiled a few logo design proposals based on the previous discussion held here: https://forum.generic-mapping-tools.org/t/design-for-pygmt-logo/1346/7

I invite all members of the community to participate in this discussion by sharing their thoughts and feedback on the proposed logo designs. Feel free to express your opinions, suggest modifications, or even submit alternative logo ideas.

  1. Original design proposed by @weiji14:
    pygmt0

  2. Same design but more legible and using Python Colors:

pygmt1

  1. Inverting text and needle colors:

pygmt3

  1. Similar design but overlapping PyGMT text with the logo and using the GMT colors.

pygmt4

4.1 Trying to make the P, G, M, T more visible in the logo (This one I implemented it in Inkscape based on @weiji14's idea about modifying number 4.

pygmt4-2

It seems that we are going towards having the original storyline with the map and needle but including the PyGMT letters in the logo and using the 3 colors, blue and yellow for python and red for GMT. I will like to hear opinions about this last logo and possible directions we can move forward to. I'm not an expert in Inkscape but I'm happy to help implement some possible ideas.

#2579 (comment) from @leouieda

Hi @juanis2112 thanks for pushing this forward! I like the last one but I'd suggest a few tweaks to make it more legible on smaller sizes:

  1. Remove the dark gray outline from the snake and central needle. The contrast for the color is enough to stand out without the outline.
  2. Remove or greatly simplify/smooth the continents. They have too much detail which makes the logo a bit messy.

@seisman seisman pinned this issue Jan 6, 2025
@yvonnefroehlich
Copy link
Member

I feel before we continue here, we should decide which tool we want to use to create the logo. At first ideas were implemented in Python using PyGMT (1. - 3.), but later versions (up on 4.) were modified with Inkscape. I have only little experience with Inkscape and I'm wondering about the reproducibility of the logo. When implementing the logo in Python we can easily share the code of the current version and people can experiment with it and build on it.

@sfrooti
Copy link

sfrooti commented Jan 6, 2025

Hello Friends! I'm using Github to contribute for the first time, so please let me know if I've made a mistake. I took a stab at brainstorming for the logo based on the original direction/storyline. You can take a look at the process here if interested :

PyGMT.Logo.Process.mp4

Option 01 : Image Image I prefer Option 02 : Image Image B/W : Image . Please do share your thoughts/feedback, based on your responses I can create a polished SVG version that can be edited. I also have a few questions that might help to refine this further : 1. Can we experiment with the colour scheme? Are there any colours that we would definitely have to use? 2. Can we consider having a visual + wordmark as our logo? That way we can use different components of it as and when necessary. 3. What direction should the needle be? Maybe tilted?

@leouieda
Copy link
Member

leouieda commented Jan 7, 2025

@sfrooti I really like your option 2! It's simple enough to look ok in a small size and has a bunch of elements that refer to GMT and the project history. Very good!

@yvonnefroehlich regarding tools, I think making the logo with PyGMT itself limits our options for design quite a bit and would make it very hard to experiment. Inkscape is open source and relatively easy to pick up (easier than having to script everything and learn cryptic GMT options at least).

But if people really want to make the logo with PyGMT then an option would be to try to recreate the ones above with code. Easier than designing with code directly.

@seisman
Copy link
Member

seisman commented Jan 7, 2025

@sfrooti Great design!

  1. Can we experiment with the colour scheme? Are there any colours that we would definitely have to use?

I don't have a strong opinion on the color scheme. We want to use the Python and GMT colors but the colors don't have to be the same RGB values.

  1. Can we consider having a visual + wordmark as our logo? That way we can use different components of it as and when necessary.

Definitely yes. @weiji14 once posted the OSGeo logo at https://forum.generic-mapping-tools.org/t/design-for-pygmt-logo/1346/14, which we may want to follow:

Image

Some questions:

  1. Are there some Python elements in the logo, except the Python colors? In your video, it seems you tried to have "P" and "y" in the logo.
  2. For the tail of the needle, maybe make it like a snake or like the "Y" character?

@sfrooti
Copy link

sfrooti commented Jan 9, 2025

Thank you so much @leouieda and @seisman ! I'm glad you liked it.

1.Are there some Python elements in the logo, except the Python colors? In your video, it seems you tried to have "P" and "y" in the logo. 2. For the tail of the needle, maybe make it like a snake or like the "Y" character?

I've tried a version of this, it looks a little heavy on the detail to translate well in smaller specs. But in in a bigger size it looks pretty cool.
Image

@sfrooti
Copy link

sfrooti commented Jan 10, 2025

I wasn't really satisfied how the one on top came out, so I've made quite a few minor changes. I think the logo looks best against a dark background with brighter colours, so I thought of adding that into the visual itself, to give it more of a compass feel.
Image

I also experimented with a lot of fonts, and I think this one (Space Grotesk by Florian Karsten) which is an open source font, goes well with it :

Image Image

Black & White :

Image

Let me know what you think!

@michaelgrund
Copy link
Member

michaelgrund commented Jan 12, 2025

Really like the logo as well as the combination of colors @sfrooti. How should we continue @GenericMappingTools/pygmt-maintainers ?

@leouieda
Copy link
Member

I personally prefer Option 2 without the Python logo (I'm also not sure if the logo can be used like that since it's a trademark of the PSF). It's a bit cleaner and more elegant.

@sfrooti would you be willing to license the logo you made as CC-BY so we can use it and make tweaks in the future?

@sfrooti
Copy link

sfrooti commented Jan 21, 2025

Yes ofcourse @leouieda, I'd love to. I agree about the python logo too, the design is more cluttered with it. How can I share the vector files with you? Shall I just post it in a comment here?

@seisman
Copy link
Member

seisman commented Jan 26, 2025

I think you could create a repository under your GitHub account, upload the vector files and also make sure adding a license like CC-BY.

@seisman
Copy link
Member

seisman commented Mar 6, 2025

@sfrooti I'm wondering if you're still interested in sharing your logos with us.

@sfrooti
Copy link

sfrooti commented Mar 7, 2025

@sfrooti I'm wondering if you're still interested in sharing your logos with us.

YES! I'm so sorry it slipped my mind. I'll upload the file and license tonight itself.

@sfrooti
Copy link

sfrooti commented Mar 8, 2025

Hello! Here is the link for the repository: https://github.com/sfrooti/PyGMT-Logo.git

Everything is packaged under the CC-BY 4.0 license. Please feel free to tweak and adjust the design - it's meant to grow with the community! I've organized everything super neatly to make it easy to navigate 🥰

I'm so excited to see how the logo will be used! If you need anything at all - different formats, small tweaks, or just have questions - please don't hesitate to reach out.

@leouieda
Copy link
Member

Thanks @sfrooti! It's much appreciated and it'll be great to finally have a logo 8 years after this project started. It was worth the wait!

@seisman
Copy link
Member

seisman commented Mar 12, 2025

Thanks @sfrooti again for sharing the logos.

I've attached these logos below to better compare them and discuss possible improvements.

Here are the to-do lists in my minds:

  • Discuss the logo design in the @GenericMappingTools/pygmt-maintainers team
  • Broader discussions in the GenericMappingTools/pygmt-contributors team
  • Try to create these logos with PyGMT if possible
  • Create a separate repository under the GenericMappingTools account to store these logos
  • Apply these logos on the PyGMT site, documentation, and more [POC: Add PyGMT logo to README & docs #3845]
  • Announce on the forum to make it more visible to users
Style Light mode Dark mode
Visual Image Image
Visual + Wordmark (horizontal) Image Image
Visual + WordMark (vertical) Image Image

@seisman
Copy link
Member

seisman commented Mar 12, 2025

Generally speaking, I like the logos. Do we want the needle to be slightly slanted, similar to the ones in #1404 (comment) (of course, without the Python logo)?

@seisman seisman removed the good first issue Good for newcomers label Mar 12, 2025
@weiji14
Copy link
Member Author

weiji14 commented Mar 12, 2025

I'd prefer a slightly slanted/tilted design, with the arrow pointed slightly Southeast rather than South. Also I kinda want the design to work on a Hex Sticker if possible, am wondering what would it look like if we change the circular outline to a 6-sided hex?

@michaelgrund
Copy link
Member

michaelgrund commented Mar 12, 2025

I'd prefer a slightly slanted/tilted design, with the arrow pointed slightly Southeast rather than South. Also I kinda want the design to work on a Hex Sticker if possible, am wondering what would it look like if we change the circular outline to a 6-sided hex?

A hex sticker would be nice but then we would loose the circular shape representing Earth, wouldn't we? Besides a more tilted design I would prefer to use the dark mode versions when using color, otherwise especially the yellow lines do not really stand out from the background. For black/white both looks good.

@yvonnefroehlich
Copy link
Member

yvonnefroehlich commented Mar 12, 2025

First of all thanks a lot @sfrooti for working on a logo and even more providing and sharing your ideas!

I just tried to generate these logos in Python / with PyGMT, including modifications for rotation and testing a hexagon shape. Here is what I have so far (no wordmark included yet, only the visual; codes are below):

circle - light mode circle - dark mode hexagon - light mode hexagon - dark mode
Image Image Image Image
Image Image Image Image
Python code (it's a first version (: )

import pygmt


# %%
# -----------------------------------------------------------------------------
# Changebale settings  (-> later input for function)
# -----------------------------------------------------------------------------
dpi_png = 720
color_concept = "color"  # "color", "bw"
bg_concept = "dark"  # "light", "dark"
shape = "hexagon"  # "circle", "hexagon"
angle_rot = 30  # degrees


# %%
# -----------------------------------------------------------------------------
# Not-changebale settings
# -----------------------------------------------------------------------------
# size = 5
size = 5
value_yellow_1 = 2.65
value_yellow_2 = 1.4

if color_concept == "color":
    color_blue = "48/105/152"  # Python blue
    color_yellow = "255/212/59"  # Python yellow
    color_red = "238/86/52"  # GMT red
elif color_concept == "bw" and bg_concept == "light":
    color_blue = color_yellow = color_red = "gray20"
elif color_concept == "bw" and bg_concept == "dark":
    color_blue = color_yellow = color_red = "white"

match bg_concept:
    case "light": color_bg = "white"
    case "dark": color_bg = "gray20"

pen_yellow = f"5p,{color_yellow}"
pen_red = f"10p,{color_red}"

region = [-size, size] * 2


# %%
# -----------------------------------------------------------------------------
# Start plotting
# -----------------------------------------------------------------------------
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2}c", frame=[0, "+gcyan@100"])  # "a1f0.5g0.5"

# .............................................................................
# blue circle for Earth
# .............................................................................
match shape:
    case "circle": style="c7.5c"
    case "hexagon": style="h8.6c"
fig.plot(x=0, y=0, style=style, pen=f"15p,{color_blue}", fill=color_bg)

# .............................................................................
# yellow lines for compass
# .............................................................................
# horizontal yellow line
fig.plot(x=[-4, 4], y=[0, 0], pen=pen_yellow)
# diagonal yellow lines
# upper left
fig.plot(x=[-value_yellow_1, -value_yellow_2], y=[value_yellow_1, value_yellow_2], pen=pen_yellow)
# lower right
fig.plot(x=[value_yellow_2, value_yellow_1], y=[-value_yellow_2, -value_yellow_1], pen=pen_yellow)
# lower left
fig.plot(x=[-value_yellow_1, -value_yellow_2], y=[-value_yellow_1, -value_yellow_2], pen=pen_yellow)
# upper right
fig.plot(x=[value_yellow_2, value_yellow_1], y=[value_yellow_2, value_yellow_1], pen=pen_yellow)

# .............................................................................
# letter G
# .............................................................................
# horizontal red line
fig.plot(x=[0.1, 1.65], y=[0, 0], pen=f"12p,{color_red}")
# red ring sector
fig.plot(x=0, y=0, style="w3.3c/90/0+i2.35c", fill=color_red)
# space between yellow lines and ring sector
fig.plot(x=0, y=0, style="w3.7c/0/360+i3.3c", fill=color_bg)
# vertical yellow line
fig.plot(x=[0, 0], y=[-4, 4], pen=f"6p,{color_yellow}")
# cover yellow line in lower part of the ring sector
fig.plot(x=0, y=0, style="w3.3c/260/-80+i2.35c", fill=color_red)

# .............................................................................
# upper vertical red line
# .............................................................................
# space between red line and blue circle
fig.plot(x=[0, 0], y=[4.01, 3.0], pen=f"18p,{color_bg}")
# red line
fig.plot(x=[0, 0], y=[4.00, 1.9], pen=f"12p,{color_red}")

# .............................................................................
# letter M
# .............................................................................
# space between letter M and yellow line at the right side
# fig.plot(x=[1.6, 1.6], y=[1.5, 1.8], pen=f"10p,{color_bg}")
fig.plot(x=[1.6, 1.6], y=[1.5, 2.0], pen=f"10p,{color_bg}")
# diagonal lines
fig.plot(x=[0.33, 0.90], y=[1.527, 1.00], pen=pen_red)
fig.plot(x=[0.90, 1.43], y=[1.00, 1.527], pen=pen_red)
# middle pick
fig.plot(x=0.9, y=0.9, style="d0.3c", fill=color_red)
# vertical lines
fig.plot(x=[0.285, 0.285], y=[0.00, 1.65], pen=pen_red)
fig.plot(x=[1.47, 1.47], y=[0.00, 1.65], pen=pen_red)

# .............................................................................
# letter T
# .............................................................................
# red curved horizontal line
fig.plot(x=0, y=0, style="w4.6c/240/-60+i3.7c", fill=color_red)
# vertical endings of curved horizontal line
fig.plot(x=[-1.05, -1.05], y=[-1.5, -2.5], pen=f"9p,{color_bg}")
fig.plot(x=[1.05, 1.05], y=[-1.5, -2.5], pen=f"9p,{color_bg}")
# arrow head as inverse triangle
fig.plot(x=0, y=-3.55, style="i1.1c", fill=color_red, pen=f"3p,{color_bg}")
# arrow tail
fig.plot(x=[0, 0], y=[-2, -3.57], pen=f"12p,{color_red}")

# .............................................................................
# Save
# .............................................................................
# fig.show()
fig_name = f"pygmt_logo_{shape}_{color_concept}_{bg_concept}"
for ext in ["eps"]:
    fig.savefig(fname=f"{fig_name}.{ext}", dpi=dpi_png)
print(fig_name)

# .............................................................................
# Replot rotated (TODO get ride of the white margin)
# .............................................................................
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2}c", frame=[0, f"+g{color_bg}"])

fig.image(
    imagefile=f"{fig_name}.eps",
    position=f"jMC+w{size * 2}c",
    perspective=f"{angle_rot}+w0/0",
)

# .............................................................................
# Show and save
# .............................................................................
fig.show()
fig_name_rot = f"{fig_name}_rot{angle_rot}deg"
for ext in ["png"]:  #, "pdf", "eps"]:
    transparent = False
    if ext=="png": transparent = True
    fig.savefig(
        fname=f"{fig_name_rot}.{ext}", dpi=dpi_png, transparent=transparent
    )
print(fig_name_rot)


Edit: Now, I additionally tried to add the WordMark. However, the suggested front (which I personally really like) is not available in GMT, and I used another one for now:

circle - light mode circle - dark mode hexagon - light mode hexagon - dark mode
Image Image Image Image
Image Image Image Image
Image Image Image Image
Image Image Image Image
Python code (updated version)

import pygmt


# %%
# -----------------------------------------------------------------------------
# Changebale settings  (-> later input for function)
# -----------------------------------------------------------------------------
dpi_png = 360
color_concept = "color"  # "color", "bw"
bg_concept = "dark"  # "light", "dark"
shape = "hexagon"  # "circle", "hexagon"
angle_rot = 30  # degrees


# %%
# -----------------------------------------------------------------------------
# Not-changebale settings
# -----------------------------------------------------------------------------
# size = 5
size = 5
value_yellow_1 = 2.65
value_yellow_2 = 1.4

if color_concept == "color":
    color_blue = "48/105/152"  # Python blue
    color_yellow = "255/212/59"  # Python yellow
    color_red = "238/86/52"  # GMT red
elif color_concept == "bw" and bg_concept == "light":
    color_blue = color_yellow = color_red = "gray20"
elif color_concept == "bw" and bg_concept == "dark":
    color_blue = color_yellow = color_red = "white"

match bg_concept:
    case "light":
        color_bg = "white"
        color_py = color_blue
        color_gmt = "gray20"
    case "dark":
        color_bg = "gray20"
        color_py = color_yellow
        color_gmt = "white"

pen_yellow = f"5p,{color_yellow}"
pen_red = f"10p,{color_red}"

region = [-size, size] * 2


# %%
# -----------------------------------------------------------------------------
# Start plotting
# -----------------------------------------------------------------------------
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2}c", frame=[0, "+gcyan@100"])  # "a1f0.5g0.5"

# .............................................................................
# blue circle for Earth
# .............................................................................
match shape:
    case "circle": style="c7.5c"
    case "hexagon": style="h8.6c"
fig.plot(x=0, y=0, style=style, pen=f"15p,{color_blue}", fill=color_bg)

# .............................................................................
# yellow lines for compass
# .............................................................................
# horizontal yellow line
fig.plot(x=[-4, 4], y=[0, 0], pen=pen_yellow)
# diagonal yellow lines
# upper left
fig.plot(x=[-value_yellow_1, -value_yellow_2], y=[value_yellow_1, value_yellow_2], pen=pen_yellow)
# lower right
fig.plot(x=[value_yellow_2, value_yellow_1], y=[-value_yellow_2, -value_yellow_1], pen=pen_yellow)
# lower left
fig.plot(x=[-value_yellow_1, -value_yellow_2], y=[-value_yellow_1, -value_yellow_2], pen=pen_yellow)
# upper right
fig.plot(x=[value_yellow_2, value_yellow_1], y=[value_yellow_2, value_yellow_1], pen=pen_yellow)

# .............................................................................
# letter G
# .............................................................................
# horizontal red line
fig.plot(x=[0.1, 1.65], y=[0, 0], pen=f"12p,{color_red}")
# red ring sector
fig.plot(x=0, y=0, style="w3.3c/90/0+i2.35c", fill=color_red)
# space between yellow lines and ring sector
fig.plot(x=0, y=0, style="w3.7c/0/360+i3.3c", fill=color_bg)
# vertical yellow line
fig.plot(x=[0, 0], y=[-4, 4], pen=f"6p,{color_yellow}")
# cover yellow line in lower part of the ring sector
fig.plot(x=0, y=0, style="w3.3c/260/-80+i2.35c", fill=color_red)

# .............................................................................
# upper vertical red line
# .............................................................................
# space between red line and blue circle
fig.plot(x=[0, 0], y=[4.01, 3.0], pen=f"18p,{color_bg}")
# red line
fig.plot(x=[0, 0], y=[4.00, 1.9], pen=f"12p,{color_red}")

# .............................................................................
# letter M
# .............................................................................
# space between letter M and yellow line at the right side
# fig.plot(x=[1.6, 1.6], y=[1.5, 1.8], pen=f"10p,{color_bg}")
fig.plot(x=[1.6, 1.6], y=[1.5, 2.0], pen=f"10p,{color_bg}")
# diagonal lines
fig.plot(x=[0.33, 0.90], y=[1.527, 1.00], pen=pen_red)
fig.plot(x=[0.90, 1.43], y=[1.00, 1.527], pen=pen_red)
# middle pick
fig.plot(x=0.9, y=0.9, style="d0.3c", fill=color_red)
# vertical lines
fig.plot(x=[0.285, 0.285], y=[0.00, 1.65], pen=pen_red)
fig.plot(x=[1.47, 1.47], y=[0.00, 1.65], pen=pen_red)

# .............................................................................
# letter T
# .............................................................................
# red curved horizontal line
fig.plot(x=0, y=0, style="w4.6c/240/-60+i3.7c", fill=color_red)
# vertical endings of curved horizontal line
fig.plot(x=[-1.05, -1.05], y=[-1.5, -2.5], pen=f"9p,{color_bg}")
fig.plot(x=[1.05, 1.05], y=[-1.5, -2.5], pen=f"9p,{color_bg}")
# arrow head as inverse triangle
fig.plot(x=0, y=-3.55, style="i1.1c", fill=color_red, pen=f"3p,{color_bg}")
# arrow tail
fig.plot(x=[0, 0], y=[-2, -3.57], pen=f"12p,{color_red}")

# .............................................................................
# Save
# .............................................................................
# fig.show()
fig_name = f"pygmt_logo_{shape}_{color_concept}_{bg_concept}"
for ext in ["eps"]:
    fig.savefig(fname=f"{fig_name}.{ext}", dpi=dpi_png)
print(fig_name)

# .............................................................................
# Replot rotated (TODO get ride of the white margin)
# .............................................................................
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2}c", frame=[0, f"+g{color_bg}"])

fig.image(
    imagefile=f"{fig_name}.eps",
    position=f"jMC+w{size * 2}c",
    perspective=f"{angle_rot}+w0/0",
)

# .............................................................................
# Save
# .............................................................................
fig.show()
fig_name_rot = f"{fig_name}_rot{angle_rot}deg"
for ext in ["png", "eps"]:  #, "pdf", "eps"]:
    transparent = False
    if ext=="png": transparent = True
    fig.savefig(
        fname=f"{fig_name_rot}.{ext}", dpi=dpi_png, transparent=transparent
    )
print(fig_name_rot)

# .............................................................................
# Replot and add WordMark "PyGMT" vertical
# .............................................................................
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2 - 2}c/{size * 2}c", frame=[0, f"+g{color_bg}"])

fig.image(imagefile=f"{fig_name_rot}.eps", position=f"jMC+w{size * 2}c+o0c/1.1c")

args_text = {"x": -3.6, "y": -3.6, "justify": "LM"}
fig.text(text="PyGMT", font=f"50p,AvantGarde-Book,{color_gmt}", **args_text)
fig.text(text="Py", font=f"50p,AvantGarde-Book,{color_py}", **args_text)

# .............................................................................
# Save
# .............................................................................
fig.show()
fig_name_rot_text = f"{fig_name_rot}_wordmark_vert"
for ext in ["png", "eps"]:  #, "pdf", "eps"]:
    transparent = False
    if ext=="png": transparent = True
    fig.savefig(
        fname=f"{fig_name_rot_text}.{ext}", dpi=dpi_png, transparent=transparent
    )
print(fig_name_rot_text)

# .............................................................................
# Replot and add WordMark "PyGMT" horizontal
# .............................................................................
fig = pygmt.Figure()
pygmt.config(MAP_FRAME_PEN="0.01p,cyan@100")
fig.basemap(region=region, projection=f"X{size * 2}c/{size - 2}c", frame=[0, f"+g{color_bg}"])

fig.image(imagefile=f"{fig_name_rot}.eps", position=f"jLM+w{size - 1.5}c")

args_text = {"x": -1.5, "y": 0, "justify": "LM"}
fig.text(text="PyGMT", font=f"50p,AvantGarde-Book,{color_gmt}", **args_text)
fig.text(text="Py", font=f"50p,AvantGarde-Book,{color_py}", **args_text)

# .............................................................................
# Save
# .............................................................................
fig.show()
fig_name_rot_text = f"{fig_name_rot}_wordmark_hor"
for ext in ["png", "eps"]:  #, "pdf", "eps"]:
    transparent = False
    if ext=="png": transparent = True
    fig.savefig(
        fname=f"{fig_name_rot_text}.{ext}", dpi=dpi_png, transparent=transparent
    )
print(fig_name_rot_text)

@seisman
Copy link
Member

seisman commented Mar 13, 2025

I'd prefer a slightly slanted/tilted design, with the arrow pointed slightly Southeast rather than South. Also I kinda want the design to work on a Hex Sticker if possible, am wondering what would it look like if we change the circular outline to a 6-sided hex?

A hex sticker would be nice but then we would loose the circular shape representing Earth, wouldn't we? Besides a more tilted design I would prefer to use the dark mode versions when using color, otherwise especially the yellow lines do not really stand out from the background. For black/white both looks good.

The hex sticker looks nice, but I agree with @michaelgrund that the circular shape representing Earth is also an important element. Since @yvonnefroehlich already produces both versions, I guess we can provide both? The circular one should be the standard logo, and the hex one can also be used in presentations if people prefer this one.

@yvonnefroehlich Excellent work! I was also planning to try writing such script. Glad to know that you already did, and they look pretty good. Could you please open a PR instead and add the scripts as a gallery example? The benefits are:

  1. We can better focus on the logo design rather than coding details in this PR
  2. It's easier to review and improve the codes in PRs
  3. It looks interesting to have a gallery example showing how to plot PyGMT logo using PyGMT, but see Add a separate function to generate the PyGMT logo? #3848

@yvonnefroehlich
Copy link
Member

@yvonnefroehlich Excellent work! I was also planning to try writing such script. Glad to know that you already did, and they look pretty good. Could you please open a PR instead and add the scripts as a gallery example?

Thanks! Very happy about the positive feedback! Actually, I just tried it to see how well this can work and what people think. I agree more discussion about the code should be done in a PR. In #3849, I added the current version of the code as Python script / Gallery example. The code could be easily converted to a Python function using the variables listed at the beginning as input parameters. However, modifying the code for a method pygmt.Figure.pygmtlogo within the pygmt.Figure() class needs probably some work (see #3848), but having such a method or expanding the existing method Figure.logo would be quite cool.

@seisman seisman added discussions Need more discussion before taking further actions and removed help wanted Helping hands are appreciated labels Mar 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussions Need more discussion before taking further actions
Projects
None yet
Development

No branches or pull requests

6 participants