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:
-function.webp)
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:
-function.webp)
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:

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:
-function.webp)
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:

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:

Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticolo correlato - Matplotlib Axes
- Come ruotare il testo dell'etichetta sull'asse X in Matplotlib
- Come impostare le dimensioni dei caratteri delle etichette in Matplotlib
- Aggiungi un'etichetta dell'asse Y all'asse Y secondario in Matplotlib
- Crea un grafico quadrato con assi uguali in Matplotlib
- Imposta i limiti per gli assi in Matplotlib
