Traccia assi logaritmici in Matplotlib

Suraj Joshi 18 luglio 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

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Axes