參考上面這個模板,我計劃用 pyecharts 實現一個類似的資料視覺化大屏。
如果你還沒有安裝 pyecharts,那麼請先開啟命令列,執行以下程式碼:
# 安裝或更新 v1 以上版本,目前是 1.9.0pip3 install pyecharts -U
在 Jupyter Lab 中新建一個 Notebook,執行以下程式碼:
# 宣告 Notebook 型別,必須在引入 pyecharts.charts 等模組前宣告from pyecharts.globals import CurrentConfig, NotebookTypeCurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB# 匯入相關庫from pyecharts import options as optsfrom pyecharts.charts import Mapfrom pyecharts.globals import ThemeType import pandas as pd# 從 data 資料夾讀取 Excel 中的資料df = pd.read_excel('./data/超市資料.xlsx')# 用資料透視表的方法彙總各省銷售額province_sale = df.pivot_table(values='銷售額', index='省/自治區', aggfunc=sum)# 把資料整理成繪圖所需的列表格式,規範名稱,銷售額換算成萬元,保留一位小數list_province_sale = [list(z) for z in zip(province_sale.index.str.replace('自治區', ''), round(province_sale.銷售額/10000, 1))]# 求各省銷售額的最大值max_sale = round(province_sale.銷售額.max()/10000,0)# 標題,數字千分位格式顯示title = "{:,}".format(int(province_sale.銷售額.sum()))# 副標題subtitle = '\t\t2016年到2019年總銷售額'# 繪製地圖c = ( # 主題樣式和背景顏色 Map(init_opts=opts.InitOpts(theme=ThemeType.SHINE, chart_id=1, bg_color='#00589F')) # 新增地圖資料 .add("", list_province_sale, "china") # 全域性配置 .set_global_opts( # 標題文字 title_opts=opts.TitleOpts(title=title, # 副標題 subtitle=subtitle, # 標題位置 pos_left='39%', pos_top=20, # 標題顏色和大小 title_textstyle_opts=opts.TextStyleOpts(color="#FBC171", font_size=36), # 副標題顏色和大小 subtitle_textstyle_opts=opts.TextStyleOpts(color="#CCCCCC", font_size=15)), # 視覺化元件引數 visualmap_opts=opts.VisualMapOpts( # 最大值 max_=max_sale, # 顯示精確的分段值 is_piecewise=True, # 圖例位置 pos_left='30%', pos_bottom=10, # 圖例字型顏色 textstyle_opts=opts.TextStyleOpts(color="#FFFFFF"))) # 隱藏文字標籤 .set_series_opts(label_opts=opts.LabelOpts(is_show=False)))# 在 Jupyter Lab 中第一次渲染時需要呼叫_ = c.load_javascript()
然後,執行以下程式碼:
# 需要與 load_javascript 在不同的單元格中執行c.render_notebook()
就能得到如下資料地圖:
對於顏色的深淺和氣泡的大小,我們的感知能力其實是比較弱的,通常很難精準地判斷差異。
從有效傳遞資訊的角度來看,我認為上面這種分段式的資料地圖,比普通的熱力地圖和氣泡地圖更加有效。
最新評論