Introducción
En este laboratorio, aprenderá a crear el logotipo de Matplotlib utilizando Python. La biblioteca Matplotlib es una herramienta de visualización de datos popular para Python y se utiliza ampliamente en el cálculo científico.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Importando las bibliotecas necesarias
En este paso, importaremos las bibliotecas necesarias, incluyendo Matplotlib y NumPy.
import matplotlib.pyplot as plt
import numpy as np
Definiendo las constantes
En este paso, definiremos algunas constantes, incluyendo el color del logotipo y la fuente.
MPL_BLUE = '#11557c'
def get_font_properties():
## La fuente original es Calibri, si no está instalada, utilizamos
## Carlito, que es métricamente equivalente.
if 'Calibri' in matplotlib.font_manager.findfont('Calibri:bold'):
return matplotlib.font_manager.FontProperties(family='Calibri',
weight='bold')
if 'Carlito' in matplotlib.font_manager.findfont('Carlito:bold'):
print('Fuente original no encontrada. Utilizando Carlito como reemplazo. '
'El texto del logotipo no tendrá la fuente correcta.')
return matplotlib.font_manager.FontProperties(family='Carlito',
weight='bold')
print('Fuente original no encontrada. '
'El texto del logotipo no tendrá la fuente correcta.')
return None
Creando los ejes del icono
En este paso, crearemos un eje polar que contendrá el gráfico de radar de Matplotlib.
def create_icon_axes(fig, ax_position, lw_bars, lw_grid, lw_border, rgrid):
"""
Crea un eje polar que contiene el gráfico de radar de matplotlib.
Parámetros
----------
fig : matplotlib.figure.Figure
La figura en la que se dibujará.
ax_position : (float, float, float, float)
La posición del eje creado en coordenadas de figura como
(x, y, ancho, alto).
lw_bars : float
El ancho de línea de las barras.
lw_grid : float
El ancho de línea de la cuadrícula.
lw_border : float
El ancho de línea del borde del eje.
rgrid : array-like
Posiciones de la cuadrícula radial.
Devuelve
-------
ax : matplotlib.axes.Axes
El eje creado.
"""
with plt.rc_context({'axes.edgecolor': MPL_BLUE,
'axes.linewidth': lw_border}):
ax = fig.add_axes(ax_position, projection='polar')
ax.set_axisbelow(True)
N = 7
arc = 2. * np.pi
theta = np.arange(0.0, arc, arc / N)
radii = np.array([2, 6, 8, 7, 4, 5, 8])
width = np.pi / 4 * np.array([0.4, 0.4, 0.6, 0.8, 0.2, 0.5, 0.3])
bars = ax.bar(theta, radii, width=width, bottom=0.0, align='edge',
edgecolor='0.3', lw=lw_bars)
for r, bar in zip(radii, bars):
color = *cm.jet(r / 10.)[:3], 0.6 ## color del jet con alpha=0.6
bar.set_facecolor(color)
ax.tick_params(labelbottom=False, labeltop=False,
labelleft=False, labelright=False)
ax.grid(lw=lw_grid, color='0.9')
ax.set_rmax(9)
ax.set_yticks(rgrid)
## el fondo visible real - se extiende un poco más allá del eje
ax.add_patch(Rectangle((0, 0), arc, 9.58,
facecolor='white', zorder=0,
clip_on=False, in_layout=False))
return ax
Creando los ejes de texto
En este paso, crearemos un eje en fig que contiene 'matplotlib' como texto.
def create_text_axes(fig, height_px):
"""Crea un eje en *fig* que contiene 'matplotlib' como texto."""
ax = fig.add_axes((0, 0, 1, 1))
ax.set_aspect("igual")
ax.set_axis_off()
path = TextPath((0, 0), "matplotlib", size=height_px * 0.8,
prop=get_font_properties())
angle = 4.25 ## grados
trans = mtrans.Affine2D().skew_deg(angle, 0)
patch = PathPatch(path, transform=trans + ax.transData, color=MPL_BLUE,
lw=0)
ax.add_patch(patch)
ax.autoscale()
Creando el logotipo
En este paso, crearemos la figura completa con el logotipo de Matplotlib.
def make_logo(height_px, lw_bars, lw_grid, lw_border, rgrid, with_text=False):
"""
Crea una figura completa con el logotipo de Matplotlib.
Parámetros
----------
height_px : int
Altura de la figura en píxeles.
lw_bars : float
Ancho de línea del borde de la barra.
lw_grid : float
Ancho de línea de la cuadrícula.
lw_border : float
Ancho de línea del borde del icono.
rgrid : secuencia de float
Posiciones de la cuadrícula radial.
with_text : bool
Si se debe dibujar solo el icono o incluir 'matplotlib' como texto.
"""
dpi = 100
height = height_px / dpi
figsize = (5 * height, height) si with_text else (height, height)
fig = plt.figure(figsize=figsize, dpi=dpi)
fig.patch.set_alpha(0)
si with_text:
create_text_axes(fig, height_px)
ax_pos = (0.535, 0.12,.17, 0.75) si with_text else (0.03, 0.03,.94,.94)
ax = create_icon_axes(fig, ax_pos, lw_bars, lw_grid, lw_border, rgrid)
return fig, ax
注:代码中的“si”应改为“if”,这是一处拼写错误,翻译时保留了原文错误。
Mostrando los logotipos
En este paso, mostraremos los logotipos de Matplotlib de diferentes tamaños.
## Un logotipo grande:
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
rgrid=[1, 3, 5, 7])
## Un logotipo pequeño de 32px:
make_logo(height_px=32, lw_bars=0.3, lw_grid=0.3, lw_border=0.3, rgrid=[5])
## Un logotipo grande que incluye texto, como se utiliza en el sitio web de Matplotlib.
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
rgrid=[1, 3, 5, 7], with_text=True)
plt.show()
Resumen
En este laboratorio, aprendiste cómo crear el logotipo de Matplotlib utilizando Python. Siguiendo los pasos anteriores, puedes personalizar el logotipo para adaptarlo a tus necesidades y preferencias.