Python・Matplotlibでグラフに上付き文字を表示する方法
Pythonでグラフを作成する際、単位や数式に「上付き文字(superscript)」を含めたいケースはよくあります。例えば、力の単位「kg·m/s²」のように、マイナス2乗を小さく上に付けて表示したい場合です。Matplotlibでは、LaTeX風の数式記法を使うことで、タイトルや軸ラベルに簡単に上付き文字を組み込めます。
上付き文字を表示するための手順
以下の手順に従って、f = ma のグラフに上付き文字付きの単位を表示してみましょう。
- データの作成: NumPyを使って、加速度 a と力 f のデータポイントを生成します。
- 曲線の描画:
plot()メソッドで f = ma の直線を描画し、ラベルとして「f=ma」を設定します。 - タイトルの設定: 上付き文字を含むタイトル(kgms⁻²)を追加します。
- x軸ラベルの設定: 上付き文字を含むx軸ラベル(ms⁻²)を追加します。
- y軸ラベルの設定: 上付き文字を含むy軸ラベル(kg)を追加します。
- 凡例の表示:
legend()メソッドで凡例を配置します。 - 図の表示:
show()メソッドでグラフを画面に表示します。
ポイント:$ 記号と ^ 表記
Matplotlibでは、文字列をドル記号 $...$ で囲むと、その部分が数式(TeX記法)として解釈されます。上付き文字はキャレット記号 ^ を使って指定します。例えば $\mathregular{kgms^{-2}}$ と書くと、「kgms」の後に「−2」が上付きで表示されます。\mathregular を使うことで、通常のテキストと同じフォントスタイルで表示できるのも便利な点です。
コード例
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# データの生成
a = np.linspace(1, 10, 100)
m = 20
f = m * a
# グラフの描画
plt.plot(a, f, c="red", lw=5, label="f=ma")
plt.title("Force $\mathregular{kgms^{-2}}$")
plt.xlabel("Acceleration $\mathregular{ms^{-2}}$")
plt.ylabel("Acceleration $\mathregular{kg}$")
plt.legend()
plt.show()
コードの解説
np.linspace(1, 10, 100)により、1から10までの範囲を100等分した加速度の値を生成しています。- 質量 m を20として、f = ma に基づき力の値を計算します。
c="red", lw=5で赤色・線幅5の太い線を描画し、視認性を高めています。- タイトルと各軸ラベル内の
$\mathregular{...}$部分が、上付き文字付きの単位として描画されます。
出力結果
このコードを実行すると、赤い直線で f = ma の関係を示すグラフが表示され、タイトルには「Force kgms⁻²」、x軸には「Acceleration ms⁻²」、y軸には「Acceleration kg」と、上付き文字が正しく反映された単位が表示されます。
このように、Matplotlibの数式記法を活用すれば、科学技術系のグラフでも単位や指数を美しく表現できます。下付き文字が必要な場合はアンダースコア _ を使うなど、さまざまな応用も可能です。
-
Python Matplotlib:サブプロットでX軸目盛り(xticks)を設定する方法
Matplotlibのsubplot機能を使うと、1つの図(figure)をnrows×ncolsのグリッド状に分割して複数のグラフを並べて表示できます。さらにplt.xticksを組み合わせることで、各サブプロットのX軸目盛りの位置を自由に制御することが可能です。 実装手順 1本目と2本目の折れ線用に、それぞれデータのリストを作成します。 現在の図にサブプロットを追加します(nrow=1、ncols=2、index=1)。 破線(dashed)スタイルで1本目の折れ線を描画します。 自動スケーリングのマージンを設定します(0.2)。 X軸目盛りを偶数の位置(2, 4, 6, 8, 10)に
-
Pythonで2つのプロットを並べて作成する方法【matplotlibのsubplot活用】
matplotlibのsubplot(row, col, index)メソッドを使うと、1つの図(figure)を行数×列数の領域に分割し、指定したインデックスの位置にそれぞれグラフを描画できます。本記事では、このメソッドを利用して、1つの図の中に2つのグラフを横並びで作成する方法を解説します。 実装の手順 numpyを使って、x座標と2種類のy座標(y1、y2)のデータポイントを作成します。 nrows=1、ncols=2、index=1を指定してsubplot()メソッドを呼び出し、現在のfigureに最初のサブプロットを追加します。 plot()メソッドで、xとy1のデータを使って折れ