數據地圖,因為地理信息的加持,信息豐富,直觀明顯,廣泛地應用於多個行業,數據分析必備利器。
方式一:通過Excel製作數據地圖
本文大篇幅在介紹這種方式的具體操作方法,共分為四個步驟。概括來說其主要通過自定義矢量地圖和VBA編程來為矢量地圖填充顏色及設置透明度的方式實現。話不多說,還是先上效果圖:
首先是全國省份色溫圖,點擊單選按鈕可切換不同指標。另有下拉列表可選擇單擊各省份時,是顯示該省份標籤,還是下鑽到該省份的各城市色溫圖;下鑽到各城市後,依然可以通過點擊單選按鈕切換該省份各城市的不同指標色溫圖。我們可以利用其查看各省市的經濟、人口、銷量、份額等多個指標色溫圖,並可按需求及特定格式設置標籤。也可增加逆序條形圖輔助查看數據。單選按鈕切換指標,盡顯數據靈動之美。
準備全國各省市矢量圖
色溫圖素材的準備分為三部分:
準備全國各省及分省各城市矢量地圖
B.為各省份及各城市的矢量圖形添加有意義的名字。這裡以新疆為例,點擊新疆矢量圖,在左上角名稱輸入框內鍵入"新疆",目的是方便VBA代碼後期通過省份名稱進行調用。
註:前人栽樹,後人乘涼,更多精彩內容詳見劉萬祥老師的《用地圖說話》圖書及範例。
C.將命好名字的各省地圖單獨放置到一張工作表中;將已經命好名字的各省市矢量圖,按照省份順序排成一行,放在"各省矢量圖"工作表中。
以便於後期通過定義名稱動態查詢引用圖片。如果對該方法尚不清楚,請參考之前的文章Excel VS Tableau省市交叉銷售地圖。
製作全國各省份色溫圖
2.1準備全國各省份數據
將其放置在"data"工作表中。通過B:D列,查詢引用當前指標對應數據(C列),並計算色溫圖透明度(D列)。
2.2在全國地圖中,插入六個單選按鈕
單擊右鍵"編輯文字",分別為各單選按鈕命名。接下來,設置控制項格式,將單元格連結設置為"全國map"工作表B4單元格。B4單元格的值,後期將作為參數傳遞,以判斷當前所選指標。
2.3為六個單選按鈕賦宏
按下ALT+F11鍵,插入如下代碼,其可實現勾選單選按鈕時,會根據單選按鈕對應的指標,為各省份矢量圖填色和設置透明度。
右鍵點擊單選按鈕,指定宏。找到以上代碼的名稱,即「fill_color」程序,選擇確定即可。
2.4添加組合框控制項
控制單擊省份圖形時的效果,是顯示該省份標籤還是向下鑽取到該省份各城市。連結單元格設置為全國map工作表AO4單元格。
2.5為各省份圖形添加單擊突顯效果。
這裡分兩個步驟:
Step1:編寫單擊突顯子程序:單擊任一省份時,該省份矢量圖邊界變成紅色線條,同時之前選中的省份矢量圖邊界的紅色線條消失。
單擊突顯所選省份效果如下:
單擊省份向下鑽取效果如下:
注意:這裡面用到了前面提及的定義名稱動態引用圖表。這個方法與之前的文章Excel VS Tableau省市交叉銷售地圖用到的方法基本一致,只是在細節處理上略有不同:本例中是將圖形排成一行,而不是一列。定義名稱省份色溫圖=INDEX(各省矢量圖!$2:$2,MATCH(Province_map!$C$4,各省矢量圖!$1:$1,0)),然後插入任一圖片,將該圖片設置為「=省份色溫圖」,即完成了對各省份色溫圖的動態調用。
Step2:編寫批量指定宏程序。一次性為所有省份添加改宏,避免逐個省份添加。運行如下宏代碼,則可以為全國各省份均添加單擊突顯省份效果。下圖中:
ActiveSheet.Shapes(I).OnAction= "'thisworkbook.user_click_Nation'"語句,為各省份地圖板塊均賦予了前面定義過的宏user_click_Nation。
2.6為矢量地圖設置標籤,分為兩個步驟:
Step1:編寫批量添加標籤程序,以下代碼用於為各省份添加標籤。
標籤值設置方法:以上代碼通過for循環,分別為各省份對應的地圖板塊設置標籤值公式,將標籤值設置為E列。當前省外之外,標籤值顯示為空。
Step2:通過提前定義好標籤格式,並在準備標籤數據時引入Text函數,可保證在數據地圖上的標籤按照所需格式顯示。
製作分省份倒序條形圖
這一部分為色溫地圖的補充內容,倒序條形圖可以直觀地輔助分析。製作逆序條形圖,需準備如下數據源,通過加微量的方法,確保排序時不會出現相同值導致錯誤。繼而通過查詢函數,生成AE:AG列數據用於製作條形圖。
AL列數據用於另外生成一張條形圖,可以用來突顯當前選中省份。也即下圖為兩個條形圖拼合而成,在拼合過程中設置了背景為透明。
註:這裡沒有採用添加序列的方式,主要考慮到,如果不是條形圖而是堆積條形圖,則添加序列的方式將不再適用。
製作分省份各城市色溫圖
分省份各城市的製作方法與以上全國省份色溫圖的做法基本相同。
不同之處在於:
A.提取各省份數據時,用到了之前Excel連接SQL Server資料庫一文中的資料庫連接模塊。並通過以下代碼,將選中省份數據從資料庫匯總篩選出來,粘貼到province_data工作表中J:N列相應位置,用於生成省市色溫圖和條形圖。
B.通過以下代碼,生成省市色溫圖。這裡相當於通過for循環,通過判斷當前選中的省份內城市名稱(J5:J44單元格),為其設置對應的色溫圖。
C.這裡會通過動態引用圖片的方式,從以下後臺數據表中動態引用圖片, 將當前選中省份的色溫圖通過定義好的名稱"省份矢量圖"呈現在Province_map工作表中的指定區域。
方式二:通過BI軟體Tableau或PowerBI製作數據地圖
剛剛講到這種Excel從省份下鑽到城市的數據地圖,肯定已經會有小夥伴說,這個用BI實現起來更容易,BI已然成為了房間裡的大象,視而不見是自欺欺人。
Tableau當中,我們可以將省市設置好地理角色,將其設置為填充地圖。
上圖為用Tableau實現數據地圖效果,後續會在本微信公號中分享Tableau的版本。
不過不要忘了,用Excel實現至少有兩大好處:
第一,價格便宜,應用廣泛。BI軟體價格不菲,以Tableau為例,每年費用高達2000多美元,讓人望而卻步;PowerBI目前是免費的,但其如何實現及效果如何,筆者未曾嘗試過,不便過多評論,大家有興趣可以探討。
第二,Excel製作此圖,一勞永逸,後續只需修改數據,直接使用即可。
方式三:通過Excel插件Datamap製作數據地圖
如果說小夥伴們覺得前述這種Excel製作數據地圖的方法還是過於複雜,也不願使用BI軟體來做數據分析和可視化,這裡也為大家提供第三種解決方案,那就是為你的Excel安裝Datamap插件。曾經有名為flash418的Excel大神在Excelhome上發表過巔峰之作,讓我印象深刻,嘆為觀止。
原文地址及插件下載連結如下:
1.Excel插件方案——數據地圖1.5 百度版http://club.excelhome.net/thread-1312688-1-1.html
http://club.excelhome.net/thread-1331097-1-1.html
在以上網址連結最下方,下載DataMap For Excel 4.0並安裝。安裝後會在開發工具右側顯示名為"地圖"的菜單項,選中後會彈出如下諸多功能。
這種Excel與公共地圖服務以及內嵌矢量地圖的集成,使在Excel裡做基於地圖的可視化分析成為可能。不過我也"驚喜"地發現,該插件已經開始商用收費了,年使用費用200元。效果如下圖:
本文只是單純地為大家提供一種新的解決方案,探討一種新的可能,大家酌情考慮,自行選擇,並不做任何推薦。
結束語:製作數據地圖是數據分析人員的一門必修課,具體使用什麼工具或方法,需要結合所處行業、公司數據文化、個人偏好和技能儲備等多方考慮,條條大路通羅馬。
如需下載示例文件,請關注作者微信號「Excel知識管理」,在作者微信號回復關鍵詞"色溫圖"即可。