プログラミング学習356日目 〜Matplotlib & Seaborn 入門講座06 matplotlibで作成した円グラフをstreamlitに実装してみた〜

今回は円グラフを作ってみました。

昨日Matplotlibで作った棒グラフをstreamlitに実装させようと思っていたのですが、問題がひとつあったことと、streamlitで作る棒グラフはマウスをホバーするとその値を表示してくれるという優れた点があるということで、棒グラフではなく円グラフを実装させることにしました。

まずはいつものようにYouTubeで学習。
この方の動画はとてもわかり易くて助かっています。​

このコードで

st.write('年代別患者割合')

df_age_pie = df['患者_年代'].value_counts().sort_index()

fig = plt.figure(figsize=(10, 10))
df_age_pie.plot(kind='pie', autopct=lambda p:'{:.1f}%'.format(p) if p>1 else '', startangle=90, counterclock=False , pctdistance=0.75, labeldistance=1.1)
plt.pie([100], colors='white', radius=0.5)
plt.legend(df_age_pie.index, fancybox=True, fontsize=12, bbox_to_anchor=(1, 0.9))
plt.title('年代別割合', y=0.46, fontsize=18, color='r')
st.pyplot(fig)

こんな感じの円グラフが作れます。

スクリーンショット 2021-01-17 0.07.02

割合の小さい項目は文字が重なってしまい見にくくなっていることは若干気にはなりますが、そこはどうしようもなのでそのままにしておきます。

実はデプロイして表示させた時、こんなエラーが発生しました。

No module named 'matplotlib' streamlit

早い話、matplotlibなんてないよというようなエラーでした。コードでimportの記載はあるし、なぜだかわかりませんでしたが、ググってみると同じようなエラーが発生している方が結構いらっしゃいました。
streamlitのこの手のことをググるとたいてい英語のサイトばかりなのですが、翻訳機能で翻訳すると怪しげな日本語ではありますが、それなりに解釈でき、requirement.txtがどうのこうのと書かれていました。
そういえば、requirement.txtにmatplotlibやjapanize_matplotlibを追加していなかったことに気が付き、追加した上でデプロイしたら無事に表示されました。

https://share.streamlit.io/pukumon/covid19-fukui/covid.py

この記事が気に入ったらサポートをしてみませんか?