経済指標グラフを altair で表示 その2
investpy で経済指標を取得し
altair で表示する
import pandas as pd import investpy import altair as alt import datetime economic_data = investpy.economic_calendar(time_zone=None, time_filter='time_only', countries=['japan', 'united states'], from_date='01/01/2021', to_date='11/06/2021') ISM =economic_data[economic_data['event'].str.contains('ISM Non-Manufacturing PMI')] date2 =[] for i in ISM['date']: new_date = datetime.datetime.strptime(i,"%d/%m/%Y").strftime("%Y-%m-%d") date2.append(new_date) ISM['date']=ISM['date'].str.replace('/','-') ISM['date'] = date2 ISM.fillna(0) chart =( alt.Chart(ISM) .mark_line(opacity=0.8,clip=True) .encode( x="date:T", y=alt.Y("actual:Q",stack=None) ) ) chart
とすると
ISM の actual の数値が折れ線グラフで表示される
実際の値だけでなく予測値の forecast もほしいので
actual =( alt.Chart(ISM) .mark_line(opacity=0.8,clip=True) .encode( x="date:T", y=alt.Y("actual:Q",stack=None) ) ) forecast =( alt.Chart(ISM) .mark_line(opacity=0.8,clip=True,color='red') .encode( x="date:T", y=alt.Y("forecast:Q",stack=None), ) )
として2つの折れ線データを用意する
あとは
alt.layer で重ねて表示すると2つ表示される
alt.layer(actual,forecast).resolve_scale( y = 'independent' )
independent を指定するとy軸が独立した2つになる
なお重ねて表示するのは3つでも可能
試しに previous の値も追加するのなら
previous =( alt.Chart(ISM) .mark_line(opacity=0.8,clip=True,color='green') .encode( x="date:T", y=alt.Y("previous:Q",stack=None), ) ) alt.layer(actual,forecast,previous).resolve_scale( y = 'independent' )
とすれば3つの折れ線グラフが表示される
重ねて折れ線グラフを表示するのについては
Layered chart with Dual-Axis
を参考に
altair で線の色を指定するには
altairでとあるアイドルグループのメンバー在籍期間のチャート化してみた
を参考に
最初に
altair.encode() で指定したときにはエラーとなった
color=
で指定するとラベル指定となってしまうらしい