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:
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:
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:
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:
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:
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:
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtículo relacionado - Matplotlib Axes
- Cómo girar el texto de la etiqueta de la marca del eje X en Matplotlib
- Cómo establecer el tamaño de la fuente de las etiquetas de garrapata en Matplotlib
- Cómo añadir una etiqueta del eje y al eje y secundario en Matplotlib
- Cómo hacer una gráficos cuadrada con ejes iguales en Matplotlib
- Cómo establecer límites para ejes en Matplotlib