Cómo trazar ejes logarítmicos en Matplotlib

Suraj Joshi 30 enero 2023
  1. Funciones set_xscale() o set_yscale()
  2. Funciones semilogx() o semilogy()
  3. Función loglog()
Cómo trazar ejes logarítmicos en Matplotlib

Para dibujar gráficos semilog en Matplotlib, utilizamos las funciones set_xscale() o set_yscale() y semilogx() o semilogy(). Si tenemos que establecer ambos ejes en la escala logarítmica, usamos la función loglog().

Funciones set_xscale() o set_yscale()

Usamos las funciones set_xscale() o set_yscale() para establecer las escalas del eje X y el eje Y respectivamente. Si usamos la escala log o symlog en las funciones, los ejes respectivos se trazan como escalas logarítmicas. El uso de la escala log con la función set_xscale() o set_yscale() solo permite valores positivos al permitirnos cómo administrar los valores negativos mientras que el uso de la escala symlog acepta valores tanto positivos como negativos.

import pandas as pd
import matplotlib.pyplot as plt

date = ["28 April", "27 April", "26 April", "25 April", "24 April", "23 April"]

revenue = [2954222, 2878196, 2804796, 2719896, 2626321, 2544792]


company_data_df = pd.DataFrame({"date": date, "total_revenue": revenue})
company_data = company_data_df.sort_values(by=["total_revenue"])
fig = plt.figure(figsize=(8, 6))
plt.scatter(company_data["total_revenue"], company_data["date"])
plt.plot(company_data["total_revenue"], company_data["date"])
plt.xscale("log")
plt.xlabel("Total Revenue")
plt.ylabel("Date")
plt.title("Company Growth", fontsize=25)
plt.show()

Producción:

trazar ejes logarítmicos en Matplotlib usando la función scalex()

Para establecer el eje logarítmico a lo largo del eje Y, podríamos establecer que la escala del eje Y sea log con la función yscale():

import pandas as pd
import matplotlib.pyplot as plt

date = ["28 April", "27 April", "26 April", "25 April", "24 April", "23 April"]

revenue = [2954222, 2878196, 2804796, 2719896, 2626321, 2544792]


company_data_df = pd.DataFrame({"date": date, "total_revenue": revenue})
company_data = company_data_df.sort_values(by=["total_revenue"])
fig = plt.figure(figsize=(8, 6))
plt.scatter(company_data["date"], company_data["total_revenue"])
plt.plot(company_data["date"], company_data["total_revenue"])
plt.yscale("log")
plt.xlabel("Date")
plt.ylabel("Total Revenue")
plt.title("Company Growth", fontsize=25)
plt.show()

Producción:

trazar ejes logarítmicos en Matplotlib usando la función yscale()

Para establecer valores logarítmicos a lo largo de ambos ejes, utilizamos las funciones xscale() y yscale():

import pandas as pd
import matplotlib.pyplot as plt

x = [10, 100, 1000, 10000, 100000]
y = [2, 4, 8, 16, 32]

fig = plt.figure(figsize=(8, 6))
plt.scatter(x, y)
plt.plot(x, y)
plt.grid()
plt.xscale("log")
plt.yscale("log", basey=2)
plt.xlabel("x", fontsize=20)
plt.ylabel("y", fontsize=20)
plt.title("Plot with both log axes", fontsize=25)
plt.show()

Producción:

trazar con escala logarítmica en ambos ejes usando la función xscale y yscale

Aquí basey=2 representa el logaritmo de la base 2 a lo largo del eje Y.

Funciones semilogx() o semilogy()

La función semilogx() crea un gráfico con escala de registro a lo largo del eje X mientras que semilogy() función crea un diagrama con escala de registro a lo largo del eje Y. La base predeterminada del logaritmo es 10, mientras que la base se puede establecer con los parámetros basex y basey para la función semilogx() y semilogy() respectivamente.

import pandas as pd
import matplotlib.pyplot as plt

date = ["28 April", "27 April", "26 April", "25 April", "24 April", "23 April"]

revenue = [2954222, 2878196, 2804796, 2719896, 2626321, 2544792]


company_data_df = pd.DataFrame({"date": date, "total_revenue": revenue})
company_data = company_data_df.sort_values(by=["total_revenue"])
fig = plt.figure(figsize=(8, 6))
plt.scatter(company_data["total_revenue"], company_data["date"])
plt.plot(company_data["total_revenue"], company_data["date"])
plt.semilogx()
plt.xlabel("Total Revenue")
plt.ylabel("Date")
plt.title("Company Growth", fontsize=25)
plt.show()

Producción:

trazar ejes logarítmicos en Matplotlib usando la función semilogx()

Para establecer valores logarítmicos a lo largo de ambos ejes, podríamos usar las funciones semilogx() y semilogy():

import pandas as pd
import matplotlib.pyplot as plt

x = [10, 100, 1000, 10000, 100000]
y = [2, 4, 8, 16, 32]

fig = plt.figure(figsize=(8, 6))
plt.scatter(x, y)
plt.plot(x, y)
plt.grid()
plt.semilogx()
plt.semilogy(basey=2)
plt.xlabel("x", fontsize=20)
plt.ylabel("y", fontsize=20)
plt.title("Plot with both log axes", fontsize=25)
plt.show()

Producción:

trazar con escala logarítmica en ambos ejes usando las funciones semilogx y semilogy

Función loglog()

Para hacer una escala de registro a lo largo de los ejes X e Y, también podemos usar la función loglog(). La base del logaritmo para el eje X y el eje Y se establece mediante los parámetros basex y basey.

import pandas as pd
import matplotlib.pyplot as plt

x = [10, 100, 1000, 10000, 100000]
y = [2, 4, 8, 16, 32]

fig = plt.figure(figsize=(8, 6))
plt.scatter(x, y)
plt.plot(x, y)
plt.loglog(basex=10, basey=2)
plt.xlabel("x", fontsize=20)
plt.ylabel("y", fontsize=20)
plt.title("Plot with both log axes", fontsize=25)
plt.show()

Producción:

trazar con escala logarítmica en ambos ejes usando la función loglog

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Axes