Logo

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['font.serif'] = ['Times']
mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
import numpy as np

# %matplotlib widget

Equation for an offset parabola

x0 = 0.25
x = np.linspace(x0, 1, 1001)
def parabola(x):
    return (x - x0)**2 / (1 - x0)**2
y = parabola(x)

Logo in white

fig=plt.figure(figsize=(5, 5))
fig.subplots_adjust(left=0.0, right=1.0, top=1.0, bottom=0.0,
                    hspace=0, wspace=0)
ax = plt.Axes(fig, [0.2, 0.2, 0.6, 0.6])
fig.add_axes(ax)

for spine in ax.spines.values():
    spine.set_visible(False)

width = 10
solid_capstyle = 'round' # 'butt', 'round', 'projecting'
solid_joinstyle = 'round' # 'miter', 'round', 'bevel'

frame_path_x = np.array([0, 1, 1, 0, 0])
frame_path_y = np.array([0, 0, 1, 1, 0])
ax.plot(frame_path_x, frame_path_y, color="white", lw=width, clip_on=False,
        solid_capstyle=solid_capstyle, solid_joinstyle=solid_joinstyle)

ax.plot(y, x, color="white", lw=width)
ax.set(xlim=[0,1],
       ylim=[0,1],
       xticks=[],
       yticks=[],)

fig.savefig("logo_inverted.png", dpi=600, transparent=True, bbox_inches="tight")

Chunky logo to be converted into favicon

fig=plt.figure(figsize=(5, 5))
fig.subplots_adjust(left=0.0, right=1.0, top=1.0, bottom=0.0,
                    hspace=0, wspace=0)
ax = plt.Axes(fig, [0.2, 0.2, 0.6, 0.6])
fig.add_axes(ax)

for spine in ax.spines.values():
    spine.set_visible(False)

width = 20

ax.plot(frame_path_x, frame_path_y, color="black", lw=width, clip_on=False,
        solid_capstyle=solid_capstyle, solid_joinstyle=solid_joinstyle)

ax.plot(y, x, color="black", lw=width)
ax.set(xlim=[0,1],
       ylim=[0,1],
       xticks=[],
       yticks=[],)

fig.savefig("logo_favicon_hires.png", dpi=600, transparent=True, bbox_inches="tight")

Duotone

fig=plt.figure(figsize=(5, 5))
fig.subplots_adjust(left=0.0, right=1.0, top=1.0, bottom=0.0,
                    hspace=0, wspace=0)
ax = plt.Axes(fig, [0.2, 0.2, 0.6, 0.6])
fig.add_axes(ax)

for spine in ax.spines.values():
    spine.set_visible(False)

width = 10
solid_capstyle = 'round' # 'butt', 'round', 'projecting'
solid_joinstyle = 'round' # 'miter', 'round', 'bevel'

frame_path_x = np.array([0, 1, 1, 0, 0])
frame_path_y = np.array([0, 0, 1, 1, 0])
# ax.plot(frame_path_x, frame_path_y, color="black", lw=width, clip_on=False,
#         solid_capstyle=solid_capstyle, solid_joinstyle=solid_joinstyle)

color_dark = np.array([24,43,72]) / 255
color_light = np.array([153,163,177]) / 255
# ax.plot(y, x, color="black", lw=width)
ax.fill_between(y, x, 0, color=color_dark, edgecolor="white", linewidth=width)
ax.fill_between(y, x, 1, color=color_light, edgecolor="white", linewidth=width)

ax.set(xlim=[0,1],
       ylim=[0,1],
       xticks=[],
       yticks=[],)

Variation on the theme

fig=plt.figure(figsize=(5, 5))
fig.subplots_adjust(left=0.0, right=1.0, top=1.0, bottom=0.0,
                    hspace=0, wspace=0)
ax = plt.Axes(fig, [0.2, 0.2, 0.6, 0.6])
fig.add_axes(ax)

for spine in ax.spines.values():
    spine.set_visible(False)

width = 10
solid_capstyle = 'round' # 'butt', 'round', 'projecting'
solid_joinstyle = 'round' # 'miter', 'round', 'bevel'

ax.plot(frame_path_x, frame_path_y, color="black", lw=width, clip_on=False,
        solid_capstyle=solid_capstyle, solid_joinstyle=solid_joinstyle)

ax.plot(1-y, x-x0, color="black", lw=width)
ax.set(xlim=[0,1],
       ylim=[0,1],
       xticks=[],
       yticks=[],)