Como plotar eixos logarítmicos em Matplotlib

Suraj Joshi 30 janeiro 2023
  1. set_xscale() ou set_yscale() Funções
  2. semilogx() ou semilogy() Funções
  3. Função loglog()
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:

traçar eixos logarítmicos em Matplotlib utilizando a função scalex()

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:

plotar os eixos logarítmicos em Matplotlib utilizando a função yscale()

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:

gráfico com escala logarítmica em ambos os eixos utilizando a função xscale e yscale

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:

plotar eixos logarítmicos em Matplotlib utilizando a função semilogx()

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:

gráfico com escala logarítmica em ambos os eixos utilizando a função semilogx e semilogy

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:

gráfico com escala logarítmica em ambos os eixos utilizando a função log log logarítmica

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Axes