matplotlibを使って円グラフを描いてみたのでそのメモ。
円グラフの使い方についていろいろ書いてみます。
ライブラリのインポート
今回使うライブラリです。
Jupyter Notebookからではなくコマンドプロンプトからプログラムを実行します。
データの用意
seabornで最初から用意されているタイタニック号のデータセットを使います。
そこから年齢のみを取り出して年代別に分けていきます。
age_list
にはタイタニック号に乗船した人たちの年代別の数が入っています。
これからこのデータを円グラフにしてみます。
円グラフを描く
円グラフを描くにはpie()
を使います。
matplotlib.pyplot.pie(x, *kwargs)
円グラフのスタイルのカスタマイズをしたい場合は引数にデータを渡して設定をします。
まずは、試しに円グラフを描いてみます。
こんな感じの円グラフが表示されます。
これではどのデータがどの色なのか分からないのでラベルを付けてみます。
ラベルの表示
age_list
には10歳未満、10代、20代の順に乗船者の数が年代別に分かれて入っています。
そのため、ラベルの中身は年代別の順番通りに下のようなリストを用意しました。
今度はラベル付きで円グラフを描いてみます。
引数のlabels
にラベルのリストを渡してプログラムを実行します。
ラベル付きで表示されました。
この円グラフからタイタニック号に乗船した人は20代が最も多いことがわかりますね。しかし、よく見ると70代と80代とその他がかぶっています。
見えるように要素をずらしてみます。
要素をずらす
引数のひとつexplode
を以下のようにしてみると、特定の要素を目立たせて表示させることができます。
これで円グラフこのようになりました。
相変わらずわかりにくいので20代のほうを目立たせてみます。
20代のみを30%ずらして表示させた結果がこちら。↓↓↓
色の設定
引数のひとつcolors
に色の名前が入ったリストを渡すことにより要素の色を指定することができます。
Alias | Color |
---|---|
'b' | blue |
'g' | green |
'r' | red |
'c' | cyan |
'm' | magenta |
'y' | yellow |
'k' | black |
'w' | white |
色を指定して円グラフを表示すると、
が表示される。
枠線の設定をしてみる
wedgeprops
のlinewidth
で枠線の太さ、edgecolor
で枠線の色を設定できる。
ここにきて気づいたことが一つある。さっきから表示してるグラフって円グラフじゃなくて楕円の形をしたグラフになっていることに、、、
楕円を真円になおす
plt.axis("equal")
を入れることにより楕円を真円になおすことができる。
円になった(^^
最後に各年代にそれぞれ何人くらいいるのかをグラフに表示させて終わりにする。
要素の割合を表示させる。
引数autopct
を使って要素の割合をパーセンテージ表示させます。
やっぱり20代が約三割いるので一番多いですね。
ここまでmatplotlibを使った円グラフのいろいろな表示方法について簡単に書いてみました。まだまだ紹介できていなことがありますが、とりあえず今回はここまでにします。
おまけ(seabornで円グラフを描く)
seabornには円グラフが用意されていないのでmatplotlibの円グラフを利用してseabornのスタイルで円グラフを表示させる必要があります。
seabornのスタイルを適用するにはset()
を使います。
set()
を使うとseabornのデフォルトのスタイルが適用されてグラフが表示されます。今回は文字化けを防ぐために以下のようにします。
このコードはライブラリのインポートした直後に書きます。
Q&A
文字化けについて
matplotlibやseabornで日本語を表示しようとすると文字化けで表示されるかもしれません。そんなときは、以下の方法を試してみてください。
matplotlibの対策
こちらの記事の説明に従って進めれば文字化けは解消されます。
これでちゃんと日本語が表示されるはずですが、もしかしたら表示されないかもしれません。私がそうでした。
そこで色々と調べて、やってみた結果無事日本語が表示されました。
私がやったことは以下の2点です。
- パソコンの再起動
- matplotlibの再インストール
もしかすると別なことをやって文字化けが解消されたのかもしれませんが、よくわかりません。
seabornの対策
matplotlibの対策をしていない場合は先にそっちの対策をしてください。
こちらの記事を参考にすれば文字化けは解消されるはずです。