Streamlitに関する記事をいくつか投稿しましたが、Streamlitで表示可能なチャートということで、Vega-Altairについても軽く触れて(勉強して)いこうかと思います。
基本的なコード
チャート表示のための基本形はこのような形。
import altair as alt
alt.Chart( data ).mark_xxx.encode()
-
encode()の内容については、最低限、横軸(x軸)の項目名と縦軸(y軸)の項目名の指定が必要。(というか、指定しないとチャートとしてほぼ意味がない。) -
encode()に対する内容の具体的な指定方法としては、long-formとshorthandの2通りがある。例えばx軸を指定する場合、
long-form表現:alt.X( 'name' )
shorthand表現:x='name'
といった形。 - 基本、各項目に対してデータ型を指定する必要あり。データ型としては以下が用意されている。(※入力データとしてDataFrameを指定した場合は、自動で型推定される模様)
| long-form | shorthand | データの内容 |
|---|---|---|
| quantitative | Q | 連続値 |
| ordinal | O | 離散値 |
| nominal | N | カテゴリ値 |
| temporal | T | 日付or時刻情報 |
| geojson | G | 地理情報 |
チャート例
mark_xxx部分でチャートの形式を指定。例えば以下のようなチャートを作成できます。
mark_area(面グラフ)
alt.Chart(tbl, title='都道府県別人口', width=1000 ).mark_area().encode(
alt.X( '地域', sort=None ), alt.Y( '2023年' )
)
mark_bar(棒グラフ)
alt.Chart(tbl, title='都道府県別人口', width=1000 ).mark_bar().encode(
alt.X( '地域', sort=None ), alt.Y( '2023年' )
)
mark_circle(散布図、表示が点)
alt.Chart(tbl, title='都道府県別人口', width=1000 ).mark_circle().encode(
alt.X( '地域', sort=None ), alt.Y( '2023年' )
)
mark_line(折れ線グラフ)
alt.Chart(tbl, title='都道府県別人口', width=1000 ).mark_line().encode(
alt.X( '地域', sort=None ), alt.Y( '2023年' )
)
mark_point(散布図、表示が○)
alt.Chart(tbl, title='都道府県別人口', width=1000 ).mark_point().encode(
alt.X( '地域', sort=None ), alt.Y( '2023年' )
)
mark_xxx()は他にもいろいろありますが、ちょっとずつ触っていこうと思います。
参考
- Vega-Altairの公式ページはこちら。
- 各チャート、以下のサイトからダウンロードした情報を加工した内容を入力としています
政府統計の総合窓口
※上記ページの「都道府県、男女別人口-総人口、日本人人口(各年10月1日現在)」が元データです。




