HOWTO · Matplotlib
Cómo trazar ejes logarítmicos en Matplotlib
Traza ejes logarítmicos en Matplotlib con `set_yscale()`, `semilogy()` o `loglog()`.
En esta página
Usa set_xscale() o set_yscale() para elegir de forma independiente la escala de cada eje. Para aplicar una escala logarítmica a ambos ejes, usa loglog(). Los métodos auxiliares semilogx() y semilogy() aplican una escala logarítmica al eje x o al eje y, respectivamente.
Los tres ejemplos de código siguientes se ejecutaron correctamente.
Funciones set_xscale() o set_yscale()
Llama a set_xscale("log") para aplicar la escala al eje x y a set_yscale("log") para aplicarla al eje y. También puedes llamar a ambos métodos para escalar los dos ejes. Este ejemplo completo representa datos numéricos positivos y aplica escalas logarítmicas a ambos ejes.
import matplotlib.pyplot as plt
x = [1, 10, 100, 1000]
y = [2, 5, 20, 80]
fig, ax = plt.subplots()
ax.plot(x, y, marker="o")
ax.set_xscale("log")
ax.set_yscale("log")
ax.set_xlabel("x")
ax.set_ylabel("y")
print(f"x-axis: {ax.get_xscale()}, y-axis: {ax.get_yscale()}")
plt.close(fig)
Una escala log estándar representa valores positivos. Si tus datos incluyen valores con signo, usa symlog en el eje correspondiente; por ejemplo, ax.set_yscale("symlog") permite mostrar valores a ambos lados de cero.
Funciones semilogx() o semilogy()
Usa semilogx() cuando quieras que el eje x sea logarítmico y el eje y siga siendo lineal. Usa semilogy() para obtener un eje y logarítmico y un eje x lineal. Ambos métodos auxiliares reciben los datos x e y como argumentos, de modo que la escala elegida queda explícita en la llamada de trazado. Si quieres que ambos ejes sean logarítmicos, usa loglog() o combina semilogx() y semilogy() en los mismos ejes.
import matplotlib.pyplot as plt
x = [1, 10, 100, 1000]
y = [2, 5, 20, 80]
fig, ax = plt.subplots()
ax.semilogx(x, y, marker="o", label="logarithmic x")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend()
print(f"x-axis: {ax.get_xscale()}, y-axis: {ax.get_yscale()}")
plt.close(fig)
Función loglog()
Usa loglog() cuando necesites escalas logarítmicas en ambos ejes. Este método representa los datos x e y proporcionados y aplica la escala logarítmica estándar a los dos ejes. A continuación se muestra un ejemplo completo con valores numéricos positivos:
import matplotlib.pyplot as plt
x = [1, 10, 100, 1000]
y = [2, 5, 20, 80]
fig, ax = plt.subplots()
ax.loglog(x, y, marker="o")
ax.set_xlabel("x")
ax.set_ylabel("y")
print(f"x-axis: {ax.get_xscale()}, y-axis: {ax.get_yscale()}")
plt.close(fig)