簡単なWebアプリケーションをほぼPythonだけで作れてしまうStreamlit
Streamlitの特徴としてグラフ作成機能が充実していることが挙げられます。
今回はそんなStreamlitのグラフ作成について取り上げたいと思います。
今回紹介するのは、streamlitが標準で備えているチャート作成機能を使ってグラフを作成してみたいと思います。細かい設定はできませんがさくっとグラフを作成するときには非常に便利なのでこれからstreamlitを始める人はぜひ使ってみてください。
折れ線グラフ(st.line_chart)
折れ線グラフを表示したいときは、st.line_chartを使います。グラフの幅と高さぐらいしか設定できませんが、さくっと表示させたいときには非常に便利です。
st.line_chart(data = df、width = 0、height = 0、use_container_width = True)
パラメーター | 説明 |
---|---|
data | プロットするデータ(pandasのdataframeなど) |
width | チャートの幅をピクセル単位で指定(整数) ※0の場合自動的に幅が設定される |
height | チャートの高さをピクセル単位で指定(整数) ※0の場合自動的に幅が設定される |
use_container_width | (bool)Trueの場合は、グラフの幅を列の幅に設定 |
以下のサンプルは、ランダムな3列X7行の数値をpandasで作ったdataframeを折れ線グラフにした例です。
import streamlit as st
import numpy as np
import pandas as pd
st.subheader('折れ線グラフ')
chart_data = pd.DataFrame(
np.random.randn(7, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
st.dataframe(chart_data)
st.line_chartのメリット
- dataframeを引数に渡すだけでグラフが簡単に表示できる。
- 画面を拡大縮小すると自動的にX軸Y軸の数値が調整される。
st.line_chartのデメリット
- 凡例や線の色や太さなどのカスタマイズができない。
- グラフの高さと幅ぐらいしか設定できない。
とにかくサクッと折れ線グラフを作りたい場合はおすすめです。カスタマイズが必要な場合は、plotlyやaltair、pyplotなどを使う必要があります。
面グラフ(st.area_chart)
面グラフを表示させたいときはst.area_chartを使います。パラメーターはst.line_Chartと同じです。
サンプルは、上述のst.line_Chartと同じでst.line_Chartをst.area_chartに書き換えているだけです。
import streamlit as st
import numpy as np
import pandas as pd
st.subheader('面グラフ')
chart_data = pd.DataFrame(
np.random.randn(7, 3),
columns=['a', 'b', 'c'])
st.area_chart(chart_data)
st.dataframe(chart_data)
棒グラフ(st.bar_chart)
棒グラフも上述のグラフと同じパラメータで使うことができます。
import streamlit as st
import numpy as np
import pandas as pd
st.subheader('棒グラフ')
chart_data = pd.DataFrame(
np.random.randn(7, 3),
columns=['a', 'b', 'c'])
st.bar_chart(chart_data)
st.dataframe(chart_data)
棒グラフで上記のように系列(a,b,c)が複数存在する場合は積み上げの棒グラフしか表示できません。
複数系列に対応したい場合はaltairやpyplotなどを使う必要があります。
まとめ
上記で紹介したグラフは、グラフを作成したいdataframeをパラメータにセットするだけで
簡単にグラフが作れてしまうのですごく便利です。
ただし、詳細なカスタマイズができないので上記グラフではうまく表現できない場合はStreamlitが対応しているグラフライブラリを使う必要があります。
現時点でStreamlitで使えるグラフ作成ライブラリは以下の通りです。
ライブラリ | streamlitでの使用 |
---|---|
Matplotlib | st.pyplot() |
Altair | st.altair() |
Vega-Lite | st.vega_lite_chart() |
Plotly | st.plotly_chart() |
Bokeh | st.bokeh_chart() |
PyDeck | st.pydeck_chart() |
dagre-d3 | st.graphviz_chart() |
複数系列の棒グラフやグラフの細かい設定が必要な場合は上表のライブラリを使ってみてください。
今回紹介したグラフほどではないですが慣れればかっこいいグラフを作ることが可能です。
コメント