PythonのライブラリPandasのDataFrameのメソッドを使用して簡単にさまざまなグラフを生成することができます。(今回は水平棒グラフ!)
本記事では、水平棒グラフの生成について解説します。水平棒グラフは基本的には棒グラフと同じ要領で生成することができます。
棒グラフと水平棒グラフの使い分けは、グラフの貼り付け先で変わってくると考えています。基本的に表現している内容は一緒だからです。横に長くする方が見やすいグラフか、縦に長くする方が見やすいグラフかで使い分けて良いと思います。
それでは早速中身に入っていきます。
該当コード
まずは準備
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
シンプルな実装方法
df.plot.barh()
# 行の内容が系列になる
# 列(カラム)の数だけズラッと棒グラフが並ぶ
よく使う引数を用いて表現
# 積み上げ棒グラフになる
# 積み上がるのは列(カラム)の数値が重なっていく
df.plot.barh(stacked=True)
# widthの数値を変えると棒グラフの太さが変わる
df.plot.barh(width=0.3)
解説
基本的には、棒グラフの時と使い方は変わらない。行が系列になるか、列が系列になるかなどの違いがあります。
上手く表現できない場合は、データフレームの転置(.T)などして、試行錯誤を重ねていけば良いと思います。転置すれば行が列になり、列が行になるのでそれをうまく使いましょう。
さて、解説です。
- df.plot.barh()
「df.plot.barh()」について。
データフレームの行が系列として、列(カラム)のデータが同じ系列内で並ぶような形で表示されます。系列の数は行の数、棒の数はカラム数×行数となります。何も考えず、大きなデータフレームで使ってしまうと、処理が重くなります。私も実際にやってしまいました。ご注意ください。
- df.plot.barh(stacked=True)
「stacked=True」について。
列(カラム)のデータが積み上がっていき、積み上げ棒グラフができます。matplotlibだと面倒なので簡単にできるのは大変嬉しいですね。
同じ行内のデータがどんどん積み上がっていくことに注意して使ってください。行内のデータを積み上げるってなかなか珍しいですが、やり方をなんとなく把握しておくに越したことはないですね。
- df.plot.barh(width=0.3)
「width=0.3」について。
こちらを使用して、棒の太さを調整することができます。この数値については、データの量などで細かく試しながら使う必要があります。
場合によってはグラフが重なってしまったり、細すぎてグラフに描画されていないなども発生することがあります。私は細すぎてまっさらなグラフになってしまったことがあります。
参照サイト
公式ドキュメント
まとめ
以上です。
(縦)棒グラフの記事と同様、簡単に描画することが目的なので、込み入った設定などの説明は省略しました。詳しく設定したい場合はデータフレームのメソッドではなく、matplotlibから描画をお勧めします。また、使用性の観点からBIツールの活用もぜひ検討してみてください。
水平棒グラフは、行が系列になることが特徴です。なかなかこの形でグラフを描画することはないかと思います。特に積み上げにする場合、同じ行内のデータが積み上がっていきます。基本的にデータフレームは列が異なれば異なる性質のデータが入っているものなので、先ほども書かせていただいた通り、転置などを活用してうまく可視化していきましょう。
可視化するデータを整えて、細かく出力を確かめながらトライアンドエラーで可視化していきましょう。どれだけ経験を重ねてもなかなか一発で思い通りの可視化はできないものなので、焦らず細々やっていきましょう。
コメント