python の描画パッケージ pygalの紹介

# 概要

python の描画パッケージ [pygal](http://www.pygal.org/en/stable/)の紹介になります。
あくまで紹介なので細かい文法等にはこの記事では触れない予定です。

# pygalの紹介

install方法は以下のようにpip installで可能です。

```python
pip install pygal
```

まずこんな感じに記載すると棒グラフを記載することができます。
（なんとなくkerasに書き方が似ていますね）

```python
import pygal                                                       # pygalをimport
bar_chart = pygal.Bar()                                            # 棒グラフのオブジェクトを作成
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])  # オブジェクトに値をいれる
bar_chart.render_to_file('bar_chart.svg')                          # 作成したグラフをsvgファイルとして保存する
```
実行するとカレントディレクトリに`bar_chart.svg`ができるのでこれをブラウザで開くとこんな図が表示されます。

<img width="914" alt="スクリーンショット 2020-02-23 19.16.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/93c2de6b-a739-00df-f7ad-9a27662d0012.png">

plotlyなどのようにインタラクティブな図が描画されます。

もしくは、lxmlパッケージをインストールして、
`bar_chart.render_to_file('hoge.svg')`や`bar_chart.render()`に部分を`bar_chart.render_in_browser()`に書き換えるとrenderから
browserでの確認を早く行うことができます。

もしくはnotebookでの分析をメインに行っている方には以下のように記載することでnotebookにグラフを埋め込むこともできます。

```python
from IPython.display import display, HTML

base_html = """
<!DOCTYPE html>
<html>
  <head>
  <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/svg.jquery.js"></script>
  <script type="text/javascript" src="https://kozea.github.io/pygal.js/2.0.x/pygal-tooltips.min.js""></script>
  </head>
  <body>
    <figure>
      {rendered_chart}
    </figure>
  </body>
</html>
"""
```

```python
display(HTML(base_html.format(rendered_chart=bar_chart.render(is_unicode=True)))) 
```

pygalはSVGを作成します。SVGは任意のエディターで編集して、非常に高品質の解像度で表示できます。SVGは、FlaskやDjangoとも簡単に統合できます。

棒グラフの他にも以下のようないろいろなグラフを描くことができます。（グラフはドキュメントから拝借しました）
普段分析でよく使うようなグラフから、地図への描画まで対応しています。

<img width="602" alt="スクリーンショット 2020-02-23 19.38.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/34eb161f-ee95-eead-2979-641933a7bc5d.png">

<img width="593" alt="スクリーンショット 2020-02-23 19.38.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/d619aebe-8209-1780-a1c3-73087de4e93e.png">

<img width="617" alt="スクリーンショット 2020-02-23 19.38.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/2175863b-610d-3168-6023-40a139cb9eab.png">

<img width="561" alt="スクリーンショット 2020-02-23 19.39.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/5d2efc03-b4f0-337d-bce1-a0c89f959eab.png">

<img width="592" alt="スクリーンショット 2020-02-23 19.39.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/457e1b02-5e54-f00a-2a9e-60e82c616181.png">

<img width="600" alt="スクリーンショット 2020-02-23 19.39.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/14c8b5d0-a461-39ad-e266-092ba9fde8b5.png">

<img width="581" alt="スクリーンショット 2020-02-23 19.39.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/9abac5b8-4c8f-39f2-d0cc-a83858750de6.png">

<img width="587" alt="スクリーンショット 2020-02-23 19.40.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/5e88a356-43d6-d305-a89d-6f5317f61ae1.png">

<img width="604" alt="スクリーンショット 2020-02-23 19.40.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231357/4984d994-e8dd-5886-5711-d5f7e54ec119.png">


ぜひ使ってみてください~





# 参考
- http://www.pygal.org/en/stable/
- https://www.pluralsight.com/guides/creating-interactive-charts-with-python-pygal
- https://feststelltaste.github.io/software-analytics/notebooks/vis/experimental/pandas-pygal/effective_charting.html