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

matplotlib

はじめに

棒グラフなどでラベル数が多い場合、無理やりラベルを押し込むためにラベルを回転させることが多いが、視認性が悪い。グラフの横幅を大きくすることも解決法のひとつだが、幅をあまり大きくできない場合もある。ここでは軸ラベルを2段構えにすることで多くのラベルをコンパクトに収める方法について説明する。

コード

解説

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

データの読み込み

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

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

DataFrameの結合と列の追加

pd.concatでデータフレームを結合した後に、新たな列データ[‘loc’]を追加する。np.tileは同じ要素をもつ配列を作る関数であり、データフレームの長さとおなじサイズの配列を追加した。

鹿児島のデータも同様に処理する。

DataFrameの合体

京都と鹿児島のデータを合体してひとつにする。最終的なデータフレームは以下のようになる。

棒グラフの表示

seabornのcountplotで風向きの要素数を計測した結果を棒グラフで示す。下図のようにラベル同士の間隔が狭いため、どのデータがどの方角を示しているかがわからない。

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

xl = p.get_xticklabels()でx軸のラベルを取得する。このラベルはtextなのでset_yで上下方向に移動することができる。インデックスが奇数のラベルのみを-0.1シフトすることで下図が得られる。

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

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

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

参考

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xticks.html

コメント