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

MatplotlibでグラフのX軸とY軸を入れ替える方法

Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。

手順

  • NumPyを使って、xとyのデータポイントを作成します。

  • 図を作成し、2つのサブプロットを追加します。

  • 両方のサブプロットにタイトルを設定します。

  • plot()メソッドを使って、xとyのデータポイントをプロットします。

  • get_xdata()get_ydata()を使って、描画した曲線からxとyのデータを抽出します。

  • 軸を入れ替えるために、1つ目のサブプロットの曲線から取得したデータを、2つ目のサブプロットの曲線のx_datay_dataに設定します。これにより、元のY値が新しいX軸に、元のX値が新しいY軸に割り当てられます。

  • subplots_adjust()などを使って、サブプロット間および周囲の余白(パディング)を調整します。

  • show()メソッドを使って、図を表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# データの作成
x = np.linspace(-2, 2, 50)
y = np.sin(x)

# 2つのサブプロットを持つ図を作成
f, axes = plt.subplots(2)

# 1つ目のサブプロット:通常のプロット
axes[0].set_title("First plot on axis")
curve, = axes[0].plot(x, y, c='r')

# 描画した曲線からx・yデータを抽出
newx = curve.get_xdata()
newy = curve.get_ydata()

# 2つ目のサブプロット:軸を入れ替えたプロット
axes[1].set_title("Switch of first plot")
curve2, = axes[1].plot(x, y, c='r')
curve2.set_xdata(newy)  # 元のyデータを新しいxデータとして設定
curve2.set_ydata(newx)  # 元のxデータを新しいyデータとして設定

plt.show()

実行結果

MatplotlibでグラフのX軸とY軸を入れ替える方法

このコードを実行すると、上段にはsin波の通常のグラフ、下段にはX軸とY軸が入れ替わったグラフが表示されます。set_xdata()set_ydata()を使うことで、既存のLine2Dオブジェクトのデータを動的に変更できるため、インタラクティブなグラフ更新にも応用できます。

  1. Matplotlibで複数のX軸・Y軸をプロットする方法(twinx / twinyの使い方)

    データ分析や可視化では、スケールの異なる2つのデータ系列を同じグラフ上に重ねて表示したいケースがよくあります。Matplotlibでは、twinx() メソッドや twiny() メソッドを使うことで、X軸またはY軸を共有しながら独立したもう一方の軸を持つグラフを簡単に作成できます。 この記事では、左右に異なるY軸を持つグラフを作成する手順を、具体的なコード例とともに解説します。 複数のY軸を持つグラフの作成手順 以下の手順で、左と右に別々のY軸スケールを持つプロットを作成できます。 subplots() メソッドを使用して、図(figure)とサブプロット(axes)を作成します。 最初の

  2. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線