HOWTO · Matplotlib
Comment tracer des axes logarithmiques dans Matplotlib
Nous pouvons tracer des axes logarithmiques dans les fonctions matplotlibusing set_yscale(), semilogy() et loglog().
Sur cette page
Pour dessiner des graphes semilog dans Matplotlib, nous utilisons les fonctions set_xscale() ou set_yscale() et semilogx() ou semilogy(). Si nous devons définir les deux axes dans l’échelle logarithmique, nous utilisons la fonction loglog().
Fonctions set_xscale() ou set_yscale()
Nous utilisons les fonctions set_xscale() ou set_yscale() pour définir les échelles de l’axe X et de l’axe Y respectivement. Si nous utilisons l’échelle log ou symlog dans les fonctions, les axes respectifs sont tracés comme des échelles logarithmiques. L’utilisation de l’échelle log avec la fonction set_xscale() ou set_yscale() n’autorise que les valeurs positives en nous permettant de gérer les valeurs négatives tout en utilisant l’échelle symlog accepte les valeurs positives et négatives.
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()
Production:
Pour définir l’axe logarithmique le long de l’axe Y, nous pouvons définir l’échelle de l’axe Y comme étant log avec la fonction 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()
Production:
Pour définir des valeurs logarithmiques le long des deux axes, nous utilisons les fonctions xscale() et 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()
Production:
Ici, basey=2 représente le logarithme de la base 2 le long de l’axe Y.
Fonctions semilogx() ou semilogy()
La fonction semilogx() crée un tracé avec une mise à l’échelle des journaux le long de l’axe X tandis que la fonction semilogy() crée un tracé avec une échelle logarithmique le long de l’axe Y. La base par défaut du logarithme est 10 tandis que la base peut être définie avec les paramètres basex et basey pour la fonction semilogx() et semilogy() respectivement.
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()
Production:
Pour définir des valeurs logarithmiques le long des deux axes, nous pourrions utiliser les fonctions semilogx() et 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()
Production:
Fonction loglog()
Pour effectuer une mise à l’échelle du journal le long des axes X et Y, nous pouvons également utiliser la fonction loglog(). La base du logarithme pour l’axe X et l’axe Y est définie par les paramètres basex et 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()
Production: