[matplotlib] 64. 軸ラベルを2段にして重ならなようにする方法

matplotlib

はじめに

この記事では、matplotlib を使用して軸ラベルが多い場合の表示問題を解決する方法を紹介します。一般的にラベルが多いと重なりを避けるためにラベルを回転させますが、これは視認性を損ねます。本稿では、軸ラベルを2段構成にすることで、グラフの横幅を大きくすることなく、多くのラベルを読みやすく配置する技術を解説します。この方法により、データの可視化がより明確になり、情報伝達の効率が向上します。

コード

解説

モジュールのインポートなど

データの読み込み

3/8〜10の京都と鹿児島の気象データを下記サイトから読み込みます。

気象庁|過去の気象データ検索
過去の気象データ検索

DataFrameの結合と列の追加

pd.concatでデータフレームを結合した後に、新たな列「data[‘loc’]」を追加します。np.tileは同じ要素を持つ配列を作る関数で、データフレームの長さと同じサイズの配列を作成して追加しました。鹿児島のデータも同様の方法で処理します。

DataFrameの合体

京都と鹿児島のデータを結合して一つのデータセットにします。最終的なデータフレームは以下のようになります。

棒グラフの表示

seabornのcountplotを使用して風向きの出現頻度を棒グラフで表示しています。しかし、下図ではラベル同士の間隔が狭いため、各データがどの方角を示しているのか判別できません。

軸ラベルを2段にした棒グラフ

x軸のラベルはxl = p.get_xticklabels()で取得できます。取得したラベルはtextオブジェクトであるため、set_yメソッドを使って上下方向に移動できます。奇数インデックスのラベルのみを-0.1だけシフトすることで、下図のように2段表示が実現できます。

なお、countplotについては下記記事で説明しました。

[seaborn] 11. 棒グラフと折れ線グラフでカテゴリー内のデータの分布を表示(barplot, countplot, pointplot)
簡単かつ簡潔にデータを可視化できるライブラリであるseabornを用いて、各カテゴリー内のデータの分布を棒グラフと折れ線グラフで表示する方法について説明する。
コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

matplotlib.pyplot.xticks — Matplotlib 3.10.5 documentation

コメント