首頁>技術>

參考上面這個模板,我計劃用 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()

就能得到如下資料地圖:

對於顏色的深淺和氣泡的大小,我們的感知能力其實是比較弱的,通常很難精準地判斷差異。

從有效傳遞資訊的角度來看,我認為上面這種分段式的資料地圖,比普通的熱力地圖和氣泡地圖更加有效。

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Android請求許可權