不到100行Python代碼教你做出精美炫酷的可視化大屏

今天小編就用Python來制作一張可視化大屏,讓大家來感受一下近百年來二氧化碳排放的趨勢以及給我們所居住的環(huán)境造成了什么樣的影響。
介紹數(shù)據(jù)來源
本地可視化大屏中引用的數(shù)據(jù)來自于由英國牛津大學(xué)知名教授創(chuàng)辦的網(wǎng)站“用數(shù)據(jù)看世界(Our World in Data”,里面收入了各個學(xué)科的數(shù)據(jù),包括衛(wèi)生、食品、收入增長和分配、能源、教育、環(huán)境等行業(yè)進行了分析與可視化展示,十分地全面,并且當中的元數(shù)據(jù)開放在Github當中

導(dǎo)入模塊并且讀取數(shù)據(jù)
我們導(dǎo)入需要用到的模塊
import?streamlit?as?st
import?plotly.express?as?px
import?pandas?as?pd
streamlit模塊來制作可視化大屏,該模塊是基于Python的可視化工具,最初開發(fā)出來的目的是給機器學(xué)習(xí)和數(shù)據(jù)科學(xué)團隊使用的。同時我們用plotly.express模塊來繪制各種圖表,因此圖表是具備交互性的,pandas模塊來讀取數(shù)據(jù)@st.cache
def?get_data():
????url_1?=?'https://raw.githubusercontent.com/owid/owid-datasets/master/datasets/Climate%20change%20impacts/Climate%20change%20impacts.csv'
????url_2?=?"https://github.com/owid/co2-data/raw/master/owid-co2-data.csv"
????df_1?=?pd.read_csv(url_1)
????df_1_1?=?df_1.query("Entity?==?'World'?and?Year?<=2021")
????df_2?=?pd.read_csv(url_2)
????return?df_1_1,?df_2
可視化大屏的制作

streamlit模塊當中的markdown方法來實現(xiàn)即可st.markdown()
然后根據(jù)上面的布局設(shè)計,我們這么來編寫代碼
col2,?space2,?col3?=?st.columns((10,1,10))
with?col2:
????year?=?st.slider('選擇年份',1750,2020)
????...
with?col3:?
????...
????selected_countries?=?st.multiselect('選擇國家',countries,default_countries)
????...
col4,?space3,?col5,?space4,?col6?=?st.columns((10,1,10,1,10))
with?col4:
????st.markdown("""##?二氧化碳和全球變暖之間的關(guān)系""")
with?col5:
????st.subheader("?副標題一?")
????...
with?col6:
????st.subheader("?副標題二?")
????...
columns方法來將頁面均勻的分成若干列,并且給定特定的寬度,當然每列之間還需要留一點空隙,從美觀程度上來考慮,因此才有了變量space對應(yīng)的是寬度1的空隙col2,?space2,?col3?=?st.columns((10,1,10))
plotly.express當中的choropleth方法來繪制,另外我們添加了時間軸,通過調(diào)用streamlit模塊當中的slider方法來實現(xiàn)with?col2:
????year?=?st.slider('選擇時間',?1750,?2020)
????fig?=?px.choropleth(df_co2[df_co2['year']?==?year],?locations="iso_code",
????????????????????????color="co2_per_capita",
????????????????????????hover_name="country",
????????????????????????range_color=(0,?25),
????????????????????????color_continuous_scale=px.colors.sequential.Reds)
????st.plotly_chart(fig,?use_container_width=True)
plotly.express模塊來實現(xiàn)的,其中多選框則是調(diào)用了streamlit模塊當中的multiselect方法,代碼如下with?col3:
????default_countries?=?['World',?'United?States',?'United?Kingdom',?'EU-27',?'China',?'Canada']
????countries?=?df_co2['country'].unique()
????selected_countries?=?st.multiselect('選擇國家或者區(qū)域性組織',?countries,?default_countries)
????df3?=?df_co2.query('country?in?@selected_countries')
????fig2?=?px.line(df3,?"year",?"co2_per_capita",?color="country")
????st.plotly_chart(fig2,?use_container_width=True)
最后的成品如下圖所示:

點擊卡片關(guān)注我,回復(fù):代碼
評論
圖片
表情
