plotlyレイアウト応用編ではグラフの見せ方について実例を紹介しながら学べる講座になります。
本内容はplotlyチュートリアルにおけるFacet and Trellis Plotsの内容ですが、グラフはオリジナルなものも紹介しますので、チュートリアルを一通り目を通した方にも参考になればと思います。
コードの詳細は省きながら重要な部分のみ紹介するので、これからplotlyを始める方には下記記事を事前に読んで理解してから本記事を読むことをおすすめします。
①基本的なfacet_row(行分割)の使い方
②基本的なfacet_col(列分割)の使い方
③facetとcategory_ordersの使い方
④ユニークなデータ全てをグラフ化
⑤plotly.graph_objects(go)を使う場合
使用するライブラリをインポートします。
import plotly.express as px
import plotly.io as pio
データはplotly内で用意されているgapminderを使用し、大陸はオセアニアに絞ります。
plotly_expressのpx.lineでx、yを指定し、facet_row=’country’とすることでオセアニアの中にある国別に行方向に分割されたグラフが得られます。
ポイントはfacet_rowではx軸の値が共通になることです。
pio.write_htmlでhtmlファイルとして下記のように保存できます。
df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(df, x="year", y="lifeExp", facet_row='country')
fig.show()
pio.write_html(fig,file="./L1-1.html")
引き続きplotly内で用意されているgapminderを使用しますが、大陸はオセアニア以外に絞ります。
xとy軸は①と同様ですが、color=’country’として色(系列)に国名を使います。
また、facet_col=’continent’とすることで大陸名ごとに列方向に分割されたグラフが得られます。
ポイントはfacet_colではy軸の値が共通になることです。
showlegend=Falseは系列名を表示しないを意味しています。
df = px.data.gapminder().query("continent !='Oceania' & continent !='Americas' & continent !='Europe'")
fig = px.line(df, x="year", y="lifeExp", color='country',facet_col='continent')
fig.update_layout(showlegend=False)
fig.show()
pio.write_html(fig,file="./L1-2.html")
category_ordersではfacet_colとfacet_rowで指定した内容の順番について決めることができます。
文字列で指定した場合に使う機会が多いです。
df = px.data.tips()
fig = px.bar(df, x="sex", y="total_bill", color="smoker", barmode="group", facet_row="time", facet_col="day",
category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], "time": ["Lunch", "Dinner"]})
fig.show()
pio.write_html(fig,file="./L1-3.html")
df = px.data.gapminder().query("continent == 'Asia'")
fig = px.line(df, x="year", y="gdpPercap", facet_col="country", facet_col_wrap=7,
height=600, width=800,
title="国民一人あたりのGDP(アジア諸国)")
fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1]))
fig.update_yaxes(showticklabels=True)
fig.update_layout(
margin=dict(l=0, r=0, t=80, b=20),
paper_bgcolor="rgb(10,92,173,0.05)",
)
fig.show()
pio.write_html(fig,file="./L1-4.html")
↓Plotlyについて学べる数少ない参考書です。