matplotlibで棒グラフの棒の順序を指定・並べ替える方法
matplotlibで棒グラフを作成すると、棒の表示順序はデフォルトではデータの並び順に従います。そのため、値の大きさ順(昇順・降順)など、意図した順序で棒を並べたい場合は、プロット前にデータをソートしておく必要があります。
pandasのsort_values()メソッドを使えば、特定の列を基準にデータを並べ替えてから棒グラフを描画できます。以下に具体的な手順とコード例を示します。
実装手順
- figureサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- 名前(names)と点数(marks)の2列を持つデータフレーム
dfを作成します。 - 現在のfigureに1つ目のサブプロットを追加し、元の順序のままデータフレーム
dfで棒グラフを描画します。 - 2つ目のサブプロットを追加します。
marks列の値を基準にソートした新しいデータフレームdf_sortedを作成します。df_sortedを使って棒グラフを描画します。show()メソッドで図を表示します。
コード例
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 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='green')
# 右側:marks列でソートして描画
plt.subplot(122)
df_sorted = df.sort_values('marks')
plt.bar('names', 'marks', data=df_sorted, color='blue')
plt.show()
出力結果
上記コードを実行すると、次のような出力が得られます。左側のグラフは元のデータ順、右側のグラフは点数(marks)の昇順に並べ替えられた棒グラフです。


補足:降順で並べたい場合
降順(大きい値から小さい値へ)で棒を並べたい場合は、sort_values() に ascending=False を指定します。
df_sorted = df.sort_values('marks', ascending=False)
このように、データフレームをソートしてからプロットするだけで、棒グラフの棒の順序を自由に制御できます。
-
Matplotlibで図のマージン(余白)を設定する方法をわかりやすく解説
Matplotlibで作成するグラフの余白(マージン)を調整したい場合、margins()メソッドを使うことで簡単に設定できます。この記事では、実際のコード例とともに、マージン設定の基本的な手順を紹介します。margins()メソッドとはmargins()は、プロット領域の周囲にどれだけの余白を設けるかを指定するメソッドです。引数としてxやyに0〜1の範囲の値を渡すことで、軸方向ごとのマージン率を制御できます。例えばmargins(x=0, y=0)と指定すると、データ範囲ぴったりにプロットが表示され、余白がなくなります。実装手順figureサイズを設定し、サブプロット間および周囲のパディング
-
Matplotlibで棒グラフのラベルに絵文字を表示する方法
Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo