iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
AI & Data

跟著黑蛋用Streamlit速成天文資料分析Web App系列 第 14

[13]:用Plotly繪製系外行星資料統計圖

  • 分享至 

  • xImage
  •  

就在黑蛋切下一塊鹹派時,PM貳婰舞來電了。

「客戶蠻滿意目前系外行星資料表篩選器頁面的功能,我們可以接續開發下一個頁面了。如之前討論,為了視覺化系外行星資料表的資料,新頁面需要呈現互動式的統計圖,客戶想要了解各種發現系外行星的方法所佔的比例,以及行星質量、半徑、軌道週期、發現年份等欄位不同數值區間的個數統計。」

黑蛋品嚐完那塊美味的鹹派後,準備開工以程式作畫。

他之前瀏覽Streamlit的說明文件時,已經知道Streamlit有支援不同的資料視覺化Python套件,除了基本款Matplotlib之外,還有強調互動性能的BokehVega-AltairPlotly,黑蛋選擇曾在其他專案用過的Plotly來當作他的畫筆。

他先新增一個命名為03_Exoplanet_statistical_charts.py的Python script放到pages資料夾中,讓使用者能在「太陽系外行星資料分析app」中切換到「系外行星資料統計圖」頁面 。然後在該script中,以plotly.express.pie繪製系外行星發現方法的圓餅圖,並且用plotly.express.histogram繪製行星質量、半徑、軌道週期、發現年份等欄位的直方圖,此外,為了在Streamlit頁面上呈現Plotly的圖,需要透過st.plotly_chart元件。最後,黑蛋用st.columns元件讓兩種圖能並排在同一列。

# 03_Exoplanet_statistical_charts.py
import plotly.express as px

def plot_discovery_method_piechart(exoplanet_table):
    fig = px.pie(
        exoplanet_table, names='發現方法', color='發現方法', title='各種發現系外行星方法的佔比'
    )

    return st.plotly_chart(fig, use_container_width=True)


def plot_histogram(exoplanet_table, column_name):
	fig = px.histogram(
        exoplanet_table, x=column_name, nbins=100,
    )
	fig.update_layout(
		yaxis_title='數量'
	)

	return st.plotly_chart(fig, use_container_width=True)

# 中略

col1, col2 = st.columns(2)
with col1:
    plot_discovery_method_piechart(exoplanet_table)

with col2:
    column_name = st.radio(
        '切換直方圖要統計數量的欄位',
        ['發現年份', '行星質量(單位:地球質量)', '行星半徑(單位:地球半徑)', '行星軌道週期(單位:天)'],
        horizontal=True
    )
    plot_histogram(exoplanet_table, column_name)

此系列文由蘇羿豪撰寫,以「創用CC 姓名標示 4.0(CC BY 4.0)國際版授權條款」釋出。此系列文也同步在MattersMirror平台連載。


上一篇
[12]:加上系外行星資料表距離欄位的單位轉換功能
下一篇
[14]:簡介發現系外行星的凌日法(transit)
系列文
跟著黑蛋用Streamlit速成天文資料分析Web App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言