📊
Streamlitを使って3D散布図を簡単に表示する
はじめに
Streamlitによる3D散布図表示方法に関して記載しようと思います。
と言いましても、以下の例のplotlyで作成した3D散布図をStreamlitで単純に表示したのみになります。
Streamlitのインストールに関しては以下を参照して下さい。
実装
コードは次のようになります。
import streamlit as st
import plotly.express as px
# データロード
df = px.data.iris()
print(df)
# 3D散布図としてデータ準備
fig = px.scatter_3d(
df,
x="sepal_length",
y="sepal_width",
z="petal_width",
color="species",
)
# グラフレイアウト設定
fig.update_layout(title="3D Point Cloud", width=500, height=500)
# マーカーサイズ設定
fig.update_traces(marker_size=2)
# グラフ表示
st.plotly_chart(fig, use_container_width=True)
- Iris(あやめという花の形状データ)データを取得します。
df = px.data.iris()
こちらの中身は以下のようになっています。
Irisデータセット(「あやめ」という花の形状データ)は、「花びら(petal)/がく片(sepal)の長さと幅(cm)」という4つの特徴量と、あやめの種類である「setosa/versicolor/virginica」という3つのラベルで構成される表形式データセット(=構造化データセット)である。(参考文献1より)
sepal_length sepal_width petal_length petal_width species species_id
0 5.1 3.5 1.4 0.2 setosa 1
1 4.9 3.0 1.4 0.2 setosa 1
2 4.7 3.2 1.3 0.2 setosa 1
3 4.6 3.1 1.5 0.2 setosa 1
4 5.0 3.6 1.4 0.2 setosa 1
.. ... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica 3
146 6.3 2.5 5.0 1.9 virginica 3
147 6.5 3.0 5.2 2.0 virginica 3
148 6.2 3.4 5.4 2.3 virginica 3
149 5.9 3.0 5.1 1.8 virginica 3
[150 rows x 6 columns]
- 以下のようにがく片の長さをx、花びらの幅をy、がく片の幅をz、ラベルを色として設定します。
fig = px.scatter_3d(
df,
x="sepal_length",
y="sepal_width",
z="petal_width",
color="species",
)
- グラフのレイアウト設定を行い、Streamlitによる表示を行います。
# グラフレイアウト設定
fig.update_layout(title="3D Point Cloud", width=500, height=500)
# マーカーサイズ設定
fig.update_traces(marker_size=2)
# グラフ表示
st.plotly_chart(fig, use_container_width=True)
実行
上のコードをコピペしてsample.pyファイルを作成して下さい。
その後、そちらのファイルが保存されているフォルダまで移動して、以下のコマンドで実行できるはずです。
streamlit run sample.py
実行後は以下のURLから画面が確認できるかと思います。
Discussion