Matplotlib proporciona estilos predefinidos para personalizar la apariencia de los gráficos. Puedes consultar la lista de todos los estilos o temas disponibles importando matplotlib como plt
e imprimiendo lo siguiente:
import matplotlib.pyplot as plt
print(plt.style.available)
La consola imprimirá la siguiente lista de nombres de estilos:
['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh',
'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot',
'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind',
'seaborn-dark', 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep',
'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel',
'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid',
'tableau-colorblind10']
Para establecer un estilo en matplotlib tendrás que utilizar plt.style.use
y seleccionar el tema que quieras. Por ejemplo, en el siguiente bloque de código establecemos el tema 'Solarize_Light2'
.
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("Solarize_Light2")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
plt.style.use
cambiará el estilo global y se aplicará a todos los gráficos de la sesión.
Estilos temporales o locales
Es importante tener en cuenta que utilizando el código anterior los estilos no solo se aplicarán al gráfico que creas, sino a todos los de la sesión. Si quieres establecer un tema para solo un gráfico o bloque de código tendrás que utilizar with plt.style.context("style_name"):
como en el ejemplo siguiente.
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
with plt.style.context("dark_background"):
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
Recuperar el estilo por defecto de matplotlib tras haberlo cambiado
Sin embargo, si ya has establecido un tema y quieres recuperar los ajustes por defecto de matplotlib puedes ejecutar mpl.rcParams.update(mpl.rcParamsDefault)
después de haber importando matplotlib como mpl
o establecer un tema oculto llamado "default"
.
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
import matplotlib as mpl
# Ajustes por defecto
mpl.rcParams.update(mpl.rcParamsDefault)
plt.style.use("ggplot")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
Más estilos
En los ejemplos siguientes verás la lista con el resto de estilos disponibles:
_classic_test_patch
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("_classic_test_patch")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
_mpl-gallery
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("_mpl-gallery")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
_mpl-gallery-nogrid
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("_mpl-gallery-nogrid")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
bmh
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("bmh")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
classic
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("classic")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
fast
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("fast")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
fivethirtyeight
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("fivethirtyeight")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
grayscale
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("grayscale")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-bright
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-bright")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-colorblind
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-colorblind")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-dark
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-dark")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-dark-palette
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-dark-palette")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-darkgrid
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-darkgrid")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-deep
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-deep")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-muted
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-deep")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-notebook
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-notebook")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-paper
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-paper")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-pastel
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-pastel")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-poster
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-poster")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-talk
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-talk")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-ticks
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-ticks")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-white
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-white")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
seaborn-whitegrid
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("seaborn-whitegrid")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
tableau-colorblind10
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("tableau-colorblind10")
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
# plt.show()
Es posible crear tus propios estilos o personalizar los ya existentes.
Considera por ejemplo que te gusta el tema "fivethirtyeight"
, pero quieres personalizar alguno de sus estilos. En este escenario puedes utilizar rcParams
para cambiar los parámetros que quieras, como en el ejemplo siguiente.
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
import matplotlib as mpl
plt.style.use("fivethirtyeight")
mpl.rcParams['font.size'] = 5
mpl.rcParams['grid.color'] = "black"
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
plt.show()
Si quieres crear un nuevo estilo tendrás que crear un archivo .mplstyle
. Por ejemplo, puede que quieras crear un estilo llamado mi_estilo
con los estilos del siguiente bloque de código y guardarlo dentro de la carpeta estilos
dentro de tu directorio de trabajo, e.g. ./estilos/mi_estilo.mplstyle
. Recuerda ejecutar mpl.rcParams
para obtener una lista de parámetros.
# mystyle.mplstyle
font.size: 5.0,
axes.facecolor: 'lavender',
lines.linewidth : 3
lines.linestyle: '-'
lines.color: 'red'
En este escenario, puedes llamar al estilo con la siguiente línea:
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use("./estilos/mi_estilo.mplstyle")
# Plot
# ...
Ten en cuenta que también puedes pasar un estilo desde una URL.
Alternativamente, puedes guardar tu estilo en mpl_configdir/stylelib
. Encontrarás el directorio de esos archivos ejecutando mpl.get_configdir()
tras importar matplotlib como mpl
. Si los directorios no existen, puede que tengas que crearlos. Luego, podrás llamar a los estilos únicamente con su nombre, e.g. plt.style.use("mi_estilo")
.
Si no quieres crear un tema nuevo y los estilos predefinidos no te gustan encontrarás montones de estilos disponibles en internet. Echa un vistazo a este repositorio de GitHub. Usar uno de estos estilos es muy sencillo, ya que puedes pasar la URL del estilo:
Ejemplo 1
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use('https://github.com/dhaitz/matplotlib-stylesheets/raw/master/pitayasmoothie-light.mplstyle')
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
plt.show()
Ejemplo 2
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv
plt.style.use('https://github.com/dhaitz/matplotlib-stylesheets/raw/master/pitayasmoothie-dark.mplstyle')
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
for i in range(0, 3):
J = jv(i, x)
ax.plot(x, J)
plt.show()
También te puede interesar