Matplotlib で対数軸をプロットする方法
Matplotlib で片対数グラフを描画するには、set_xscale()
または set_yscale()
および semilogx()
または semilogy()
関数を使用します。両方の軸を対数スケールで設定する必要がある場合は、loglog()
関数を使用します。
set_xscale()
または set_yscale()
関数
X 軸と Y 軸のスケーリングをそれぞれ設定するには、set_xscale()
関数または set_yscale()
関数を使用します。関数で log
または symlog
スケールを使用する場合、それぞれの軸は対数スケールとしてプロットされます。set_xscale()
または set_yscale()
関数で log
スケールを使用すると、正の値のみが許可されます。
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()
出力:
Y 軸に沿って対数軸を設定するには、yscale()
関数を使用して Y 軸のスケールを log
に設定します。
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()
出力:
両方の軸に沿って対数値を設定するには、xscale()
関数と 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()
出力:
ここで、basey = 2
は Y 軸に沿った 2
を底とする対数を表します。
semilogx()
または semilogy()
関数
semilogx()
関数は、X 軸に沿った対数スケーリングでプロットを作成し、semilogy()
関数は、Y 軸に沿った対数スケーリングでプロットを作成します。対数のデフォルトの底は 10 ですが、底はそれぞれ関数 semilogx()
および semilogy()
の basex
および basey
パラメータで設定できます。
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()
出力:
両方の軸に沿って対数値を設定するには、semilogx()
関数と 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()
出力:
loglog()
関数
X 軸と Y 軸の両方に沿って対数スケーリングを行うには、loglog()
関数を使用することもできます。X 軸と Y 軸の対数の底は、basex
パラメータと 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()
出力:
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn