Como plotar eixos logarítmicos em Matplotlib

  1. set_xscale() ou set_yscale() Funções
  2. semilogx() ou semilogy() Funções
  3. Função loglog()

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

Artigo relacionado - Matplotlib Axes

  • Como reverter eixos em Matplotlib
  • Como rodar o texto da etiqueta do eixo X em Matplotlib