【Matplotlib】アノテーション(テキスト)を回転させて線に一致させる方法
Matplotlibでグラフ上のアノテーション(テキスト)を回転させ、直線の傾きに一致させる方法を解説します。ポイントは、直線の傾きから回転角度(theta)を計算し、text()メソッドのrotation引数に渡すことです。
実装の手順
- figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。
- add_subplot()メソッドを使用して、サブプロットとしてAxesを図に追加します。
- 直線の傾きmと切片cの変数を初期化します。
- NumPyを使用して、xおよびyのデータ点を作成します。
- テキストの回転角を求めるためにthetaを計算します。
- plot()メソッドでxとyを使って直線を描画します。
- text()メソッドを使用して、線上にテキストを配置します。
- show()メソッドで図を表示します。
コード例
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = fig.add_subplot() m = 1 c = 1 x = np.linspace(-2, 2, 10) y = m*x + c theta = np.arctan(m) line, = ax.plot(x, y) ax.text(x=x[2], y=y[2]+.25, s="y=mx+c", rotation=180.0*(1-theta), fontsize=15, color='green') plt.show()
ポイント解説
この手法の核心は回転角の計算部分です。np.arctan(m)は直線の傾きmからラジアン単位の角度を返します。この値をもとにrotation=180.0*(1-theta)とすることで、テキストが線の傾きに沿った角度で表示されます。
また、y=y[2]+.25のようにy座標にオフセットを加えることで、テキストが線と重なるのを防ぎ、読みやすい位置に配置できます。フォントサイズや色も自由に指定できるので、グラフのデザインに合わせて調整しましょう。
出力結果
上記のコードを実行すると、緑色の直線「y=mx+c」に沿って、傾きに一致した角度でテキストが回転表示されたグラフが出力されます。

-
FlaskでMatplotlibのグラフを表示する方法【サンプルコード付き】
Webアプリケーション上でグラフを動的に表示したい場合、FlaskとMatplotlibを組み合わせるのが効果的です。この記事では、Flaskアプリケーション内でMatplotlibのプロットをPNG画像としてブラウザに返す方法を、具体的な手順とサンプルコードとともにわかりやすく解説します。 実装の流れ FlaskでMatplotlibのグラフを表示するまでの基本的な手順は以下の通りです。 小さなFlaskアプリケーションを作成する カレントディレクトリに移動し、環境変数を設定してアプリを起動する$ export FLASK_APP=file.py$ flask run ブラウザで http
-
Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説
Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線