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

Python Matplotlibで同じY軸を共有する2つの水平棒グラフを描画する方法

PythonのMatplotlibを使って、同じY軸を共有する2つの水平棒グラフを並べて描画するには、subplot()メソッドにsharey=ax1を指定します。水平棒グラフはbarh()メソッドで描画できます。この方法を使えば、2つのグラフ間でY軸のスケールが自動的に揃うため、データの比較が非常に容易になります。

実装の手順

  • データポイント用のリストを作成します。
  • figure()メソッドを使用して、新しい図を作成(または既存の図をアクティブ化)します。
  • subplot()メソッドで、インデックス1の位置にサブプロットを追加します。
  • barh()メソッドを使用して、1つ目の軸に水平棒グラフを描画します。
  • subplot()メソッドで、インデックス2の位置にサブプロットを追加し、sharey引数で1つ目の軸のY軸を共有します。
  • 2つ目の軸にも水平棒グラフを描画します。
  • 図を表示するには、show()メソッドを使用します。

コード例

import matplotlib.pyplot as plt
import numpy as np

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

y = [3, 1, 5]
x1 = [10, 7, 3]
x2 = [9, 5, 1]

fig = plt.figure()

axe1 = plt.subplot(121)
axe1.barh(y, x1, align='center', color='red', edgecolor='black')

axe2 = plt.subplot(122, sharey=axe1)
axe2.barh(y, x2, align='center', color='green', edgecolor='black')

plt.show()

コードのポイント

plt.subplot(121)は「1行2列のグリッドの1番目」を意味し、plt.subplot(122)は同じグリッドの2番目を意味します。2つ目のサブプロット作成時にsharey=axe1を渡すことで、両方のグラフが同じY軸を共有するようになり、片方の軸を操作するともう片方も連動して動きます。また、align='center'でバーをY座標の中央に配置し、coloredgecolorでバーの塗り色と枠線の色を指定しています。

出力結果

Python Matplotlibで同じY軸を共有する2つの水平棒グラフを描画する方法

  1. Matplotlibで3Dプロットのアスペクト比を設定する方法

    Matplotlibで3Dプロットのアスペクト比を設定するには、set_aspect()メソッドを使用します。ここでは、曲面プロット(サーフェスプロット)を例に、具体的な手順とサンプルコードを解説します。 3Dプロットのアスペクト比を設定する手順 以下の手順に従って実装します。 figure()メソッドで新しい図を作成するか、既存の図をアクティブにします。 projection=3d を指定して現在のAxes(座標軸)を取得します。存在しない場合は自動的に作成されます。 numpyを使ってデータ点 R、Y、z を生成します。 R、Y、zをもとにサーフェスプロット(曲面図)を作成します。 s

  2. Python Matplotlibで3Dグラフをプロットする方法を解説

    PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使