Como plotar eixos logarítmicos em Matplotlib
Para desenhar gráficos semilográficos em Matplotlib, utilizamos as funções set_xscale()
ou set_yscale()
e semilogx()
ou semilogy()
. Se tivermos que definir ambos os eixos na escala logarítmica, utilizamos a função loglog()
.
set_xscale()
ou set_yscale()
Funções
Utilizamos as funções set_xscale()
ou set_yscale()
para definir as escalas dos eixos X e Y, respectivamente. Se utilizarmos log
ou symlog
nas funções, os respectivos eixos são representados como escalas logarítmicas. A utilização da escala log
com função set_xscale()
ou set_yscale()
só permite valores positivos, permitindo-nos gerenciar valores negativos enquanto que a utilização da escala symlog
aceita tanto valores 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()
Resultado:
Para definir o eixo logarítmico ao longo do eixo Y, poderíamos definir a escala do eixo Y para ser log
com função 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()
Resultado:
Para definir valores logarítmicos ao longo dos dois eixos, utilizamos ambas as funções xscale()
e 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()
Resultado:
Aqui basey=2
representa o logaritmo da base 2
ao longo do eixo Y.
semilogx()
ou semilogy()
Funções
A função semilogx()
cria um gráfico com escala de log ao longo do eixo X enquanto que a função semilogy()
cria um gráfico com escala de log ao longo do eixo Y. A base padrão de logaritmo é 10 enquanto a base pode definir com parâmetros basex
e basey
para a função semilogx()
e 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()
Resultado:
Para definir valores logarítmicos ao longo dos dois eixos, poderíamos utilizar ambas as funções semilogx()
e 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()
Resultado:
Função loglog()
Para fazer uma escala de log ao longo dos eixos X e Y, também podemos utilizar a função loglog()
. A base do logaritmo para o eixo X e eixo Y é definida pelos parâmetros basex
e 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()
Resultado:
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Matplotlib Axes
- Como rodar o texto da etiqueta do eixo X em Matplotlib
- Como definir o tamanho da fonte dos Rótulos em Matplotlib
- Como adicionar uma etiqueta do eixo Y ao eixo Y secundário em Matplotlib
- Como fazer uma parcela quadrada com eixos iguais em Matplotlib
- Como estabelecer limites para os eixos em Matplotlib