Matplotlib で対数軸をプロットする方法

  1. set_xscale() または set_yscale() 関数
  2. semilogx() または semilogy() 関数
  3. loglog() 関数

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()

出力:

scalex()関数を使用して Matplotlib で対数軸をプロットする

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()

出力:

scaley()関数を使用して Matplotlib で対数軸をプロットする

両方の軸に沿って対数値を設定するには、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()

出力:

関数 scalex と関数 scaley を使用して、両方の軸に対数スケールでプロットします。

ここで、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()関数を使用して Matplotlib の対数軸をプロットする

両方の軸に沿って対数値を設定するには、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()

出力:

semilogx 関数と semilogy 関数を使用して、両方の軸に対数スケールでプロットします

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()

出力:

関数 loglog を使用して、両方の軸に対数目盛でプロットします。

関連記事 - Matplotlib Axes

  • Matplotlib で軸の制限を設定する方法
  • 関連記事 - Matplotlib Logarithm Axes

  • Matplotlib でサブプロットの軸をオフにする方法
  • comments powered by Disqus