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

matplotlibの棒グラフで棒を昇順に並べ替える方法

matplotlibで棒グラフの棒を昇順に並べ替える方法

matplotlibで棒グラフを作成すると、デフォルトではデータの並び順のまま棒が描画されます。しかし、値の大きさに応じて棒を並べ替えることで、データの傾向が一目で把握しやすくなり、グラフの可読性が大きく向上します。本記事では、pandasのsort_values()メソッドを使って、棒グラフの棒を昇順に並べ替える手順を解説します。

並べ替えの手順

  • 図のサイズを設定し、サブプロット間およびその周囲の余白を調整します。
  • 2次元・サイズ変更可能・異なる型も混在できる表形式データから、データフレーム df を作成します。
  • 現在の図にサブプロットを追加し、データフレーム df を使って棒グラフを描画します。
  • 現在の図にもう1つサブプロットを追加します。
  • marks 列を基準に、ソート済みのデータフレーム df_sorted を作成します。
  • df_sorted を使って棒グラフを描画します。
  • show() メソッドで図を表示します。

コード例

import pandas as pd
from matplotlib import pyplot as plt

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

df = pd.DataFrame(
   dict(
      names=['John', 'James', 'David', 'Gary', 'Watson'],
      marks=[23, 34, 30, 19, 20]
   )
)

plt.subplot(121)
plt.bar('names', 'marks', data=df, color='red')

plt.subplot(122)
df_sorted = df.sort_values('marks')
plt.bar('names', 'marks', data=df_sorted, color='orange')

plt.show()

出力結果

上記のコードを実行すると、次のように2つの棒グラフが並んで表示されます。

matplotlibの棒グラフで棒を昇順に並べ替える方法matplotlibの棒グラフで棒を昇順に並べ替える方法

右側の棒グラフに注目してください。marks 列の値が小さい順(昇順)に棒が並べ替えられているのが確認できます。一方、左側のグラフは元のデータ順のままです。このように、描画前に sort_values() でデータフレームをソートしておくだけで、棒グラフの並び順を簡単に制御できます。降順に並べたい場合は、df.sort_values('marks', ascending=False) のように ascending=False を指定すればOKです。

  1. Matplotlibで棒グラフのバーにテキストを表示する方法

    Matplotlibの棒グラフで、各バーの上にテキスト(数値やラベルなど)を表示したい場合は、text()メソッドを使用します。このメソッドを使うことで、グラフ上の任意の位置(x座標・y座標)を指定して、自由にテキストを配置できます。 実装の手順 x軸のラベル、y軸の値、そしてpercentage(パーセント値)のリストをそれぞれ作成します。 bar()メソッドを使って棒グラフを描画します。 zip()関数で3つのリストをまとめ、for文で反復処理しながら各バーの位置にテキストを配置します。 最後にshow()メソッドを呼び出して図を表示します。 コード例 import matplotli

  2. Pythonのmatplotlibで積み上げ棒グラフを作成・表示する方法

    Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は、数値を一つずつ確認したり複雑な計算を行ったりすることなく、データ全体の傾向や特徴を直感的に把握するために欠かせないステップです。また、定量的な洞察を効果的に伝える手段としても非常に有用です。 Matplotlibは、データをもとに2次元のグラフやプロットを作成するために使用されます。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも可能です。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境で