Traccia assi logaritmici in Matplotlib

Suraj Joshi 18 luglio 2021 30 marzo 2021
  1. Funzioni set_xscale() o set_yscale()
  2. Funzioni semilogx() o semilogy()
  3. Funzione loglog()
Traccia assi logaritmici in Matplotlib

Per disegnare i grafici dei semilogrammi in Matplotlib, usiamo le funzioni set_xscale() o set_yscale() e semilogx() o semilogy(). Se dobbiamo impostare entrambi gli assi nella scala logaritmica usiamo la funzione loglog().

Funzioni set_xscale() o set_yscale()

Usiamo le funzioni set_xscale() o set_yscale() per impostare le proporzioni rispettivamente dell’asse X e dell’asse Y. Se usiamo la scala log o symlog nelle funzioni, i rispettivi assi vengono tracciati come scale logaritmiche. Usare la scala log con la funzione set_xscale() o set_yscale() consente solo valori positivi permettendoci di gestire i valori negativi mentre usando symlog la scala accetta sia valori positivi che negativi.

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()

Produzione:

tracciare gli assi logaritmici in Matplotlib usando la funzione scalex()

Per impostare l’asse logaritmico lungo l’asse Y, potremmo impostare la scala dell’asse Y come log con la funzione 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()

Produzione:

tracciare gli assi logaritmici in Matplotlib usando la funzione yscale()

Per impostare valori logaritmici lungo entrambi gli assi, usiamo entrambe le funzioni 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()

Produzione:

tracciare con scala logaritmica su entrambi gli assi utilizzando la funzione xscale e yscale

Qui basey=2 rappresenta il logaritmo della base 2 lungo l’asse Y.

Funzioni semilogx() o semilogy()

La funzione semilogx() crea un grafico con scala logaritmica lungo l’asse X mentre funzione semilogy() crea un grafico con scala logaritmica lungo l’asse Y. La base predefinita del logaritmo è 10 mentre base può essere impostata con i parametri basex e basey per le funzioni semilogx() e semilogy() rispettivamente.

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()

Produzione:

tracciare gli assi logaritmici in Matplotlib usando la funzione semilogx()

Per impostare valori logaritmici lungo entrambi gli assi, potremmo usare entrambe le funzioni 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()

Produzione:

tracciare con scala logaritmica su entrambi gli assi utilizzando la funzione semilogx e semilogy

Funzione loglog()

Per fare un registro in scala lungo entrambi gli assi X e Y, possiamo anche usare la funzione loglog(). La base del logaritmo per l’asse X e l’asse Y è impostata dai parametri basex e base.

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()

Produzione:

tracciare con scala logaritmica su entrambi gli assi utilizzando la funzione loglog

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Axes