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:
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:
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:
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