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

Matplotlibの2軸グラフで棒グラフと折れ線を正確に揃える方法

Matplotlibで2つのY軸を持つグラフを作成する際、棒グラフと折れ線の位置がずれてしまうことがあります。この問題を解決するには、twinx()メソッドを使って、X軸を共有しながらY軸だけが独立した「ツイン」のAxesを作成します。さらに、折れ線を描画する際に棒グラフの目盛り位置を取得することで、棒と線を正確に揃えることができます。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • 「col1」と「col2」の2つの列を持つPandasデータフレームを作成します。

  • plot()メソッドにkind="bar"を指定して、データフレームを棒グラフとして描画します。

  • twinx()メソッドを使用して、X軸を共有しつつY軸が独立したAxesのツインを作成します。

  • 手順3で作成した軸の目盛り位置(get_xticks())とデータフレームの各列の値を使って折れ線を描画します。ここがポイントで、get_xticks()で取得した座標をそのまま使うことで、折れ線の各点が棒グラフの中心と正確に一致します。

  • 図を表示するにはshow()メソッドを使用します。

コード例

from matplotlib import pyplot as plt
import pandas as pd

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

df = pd.DataFrame({"col1": [1, 3, 5, 7, 1], "col2": [1, 5, 7, 9, 1]})
ax = df.plot(kind="bar")
ax2 = ax.twinx()

ax2.plot(ax.get_xticks(),
    df[['col1', 'col2']].values,
    linestyle='-',
    marker='o', linewidth=2.0)

plt.show()

実行結果

Matplotlibの2軸グラフで棒グラフと折れ線を正確に揃える方法

このように、twinx()で第2のY軸を作成し、get_xticks()で得たX座標を折れ線の描画に使うことで、スケールの異なる2つのデータ系列を1つのグラフ上できれいに重ねて表示できます。売上と利益率のように単位の異なる指標を比較したい場合などに非常に便利なテクニックです。

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

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

  2. Matplotlibで2本の点線をプロットする方法|マーカー・線種・凡例の設定も解説

    はじめに この記事では、Pythonの可視化ライブラリ「Matplotlib」を使って、2本の線を1つのグラフに描画し、それぞれに異なる線種(点線・破線)や色、太さを設定する方法を解説します。 コーディングを始める前に、まず次のコマンドでMatplotlibをインポートしておきましょう。 import matplotlib.pyplot as plt Pyplotは、MatplotlibをMATLABのように直感的に操作できるようにするためのコマンドスタイル関数のコレクションです。グラフの描画からラベル付けまで、ほとんどの操作をこのモジュール経由で行います。 アルゴリズム(処理の流れ) ステ