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()
出力: