Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】Matplotlibで軸の目盛りを円周率(π)の倍数で表示する方法

PythonのMatplotlibでグラフを描く際、軸の目盛りをπ(円周率)の倍数で表示したいケースはよくあります。特に三角関数のグラフでは、「−π/2」「π」「3π/2」のような目盛りラベルにすることで、グラフが格段に読みやすくなります。

ここでは、numpyとMatplotlibを使って、X軸の目盛りをπの倍数として設定する手順を解説します。

設定手順

  1. pi変数を初期化し、numpyを使ってthetaおよびyのデータ点を作成します。
  2. plot()メソッドでthetaとyをプロットします。
  3. xticks()メソッドで、X軸の目盛りの位置とラベルを取得・設定します。
  4. margins()メソッドで、自動スケーリング時の余白(マージン)を設定します。
  5. show()メソッドで図を表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

pi = np.pi
theta = np.arange(-2 * pi, 2 * pi + pi / 2, step=(pi / 2))
y = np.sin(theta)

plt.plot(theta, y)
plt.xticks(theta, ['-2π', '-3π/2', '-π', '-π/2', '0', 'π/2', 'π', '3π/2', '2π'])
plt.margins(x=0)
plt.show()

実行結果

上記のコードを実行すると、X軸の目盛りが「−2π」から「2π」までπ/2刻みで表示された正弦波(サイン波)のグラフが出力されます。

【Python】Matplotlibで軸の目盛りを円周率(π)の倍数で表示する方法

補足:matplotlib.tickerを使ったより柔軟な方法

xticks()は手軽ですが、データ範囲が変わるたびにラベルを手動で指定する必要があります。より汎用的に扱いたい場合は、matplotlib.tickerモジュールのMultipleLocatorFuncFormatterを組み合わせるのがおすすめです。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FuncFormatter

def pi_formatter(x, pos):
    n = int(round(x / np.pi))
    if n == 0:
        return '0'
    elif n == 1:
        return 'π'
    elif n == -1:
        return '-π'
    return f'{n}π'

fig, ax = plt.subplots(figsize=(7.00, 3.50))
theta = np.linspace(-2 * np.pi, 2 * np.pi, 400)
ax.plot(theta, np.sin(theta))
ax.xaxis.set_major_locator(MultipleLocator(np.pi / 2))
ax.xaxis.set_major_formatter(FuncFormatter(pi_formatter))
plt.show()

この方法なら、目盛りの間隔はMultipleLocatorで、ラベルの書式はFuncFormatterで独立して制御できるため、データの範囲が変わっても自動的に対応できます。

  1. Python MatplotlibでY軸の値(目盛りラベル)を指定する方法

    PythonのMatplotlibでは、yticks()メソッドを使うことで、Y軸に表示する値や目盛りラベルを自由に指定できます。X軸の場合はxticks()を使用します。この記事では、具体的な手順とサンプルコードを通して、軸の目盛りをカスタマイズする方法を解説します。 Y軸の値を指定する手順 以下の手順で、Matplotlibのグラフに任意の目盛りラベルを設定できます。 numpyを使ってxおよびyのデータポイントを作成します。 軸に表示したい値として、文字列のリストを作成します。 xticks()メソッドとyticks()メソッドを使用し、それぞれX軸・Y軸の目盛りの位置とラベルを指定し

  2. 【Python】matplotlibでフォントサイズを変更する方法をわかりやすく解説

    Pythonの可視化ライブラリ「matplotlib」では、plt.text()メソッドを使うことで、グラフ内に表示するテキストのフォントサイズを簡単に変更できます。この記事では、具体的な手順とサンプルコードを交えて解説します。 フォントサイズを変更する手順 グラフを作成する:plt.plot()メソッドの引数に2つのリストを渡すことで、折れ線グラフを作成できます。 テキストを追加する:plt.text()メソッドを使い、データ座標上の位置 (x, y) にテキストを配置します。fontsize引数の値を変更することで、フォントサイズを自由にカスタマイズできます。 グラフを表示する:plt.