用Python把圖做的好看點:用Pyecharts做個交互地圖(一)
今天,老闆又突發奇想,覺得光看excel表,很無聊,所以要把數據放到地圖上去,所以我們今天來研究下,怎麼在地圖上畫散點圖,今天主要的內容就這樣了
- 用庫里自帶的地理信息畫圖
- 異常情況處理
然後,第二期我們在研究下如何導入經緯度信息
今天我們換一個庫,不翻Matplotlib 的牌子了,我們試試牛逼哄哄的Echarts python版本
首先我們來看看官方的例子
很牛逼,簡簡單的就能在地圖上畫上散點,還加上一個可以拉動的篩選條子
我們看看官方實例的代碼:
from pyecharts import Geodata = [ ("海門", 9),("鄂爾多斯", 12),("招遠", 12),("舟山", 12),("齊齊哈爾", 14),("鹽城", 15), ("赤峰", 16),("青島", 18),("乳山", 18),("金昌", 19),("泉州", 21),("萊西", 21), ("日照", 21),("膠南", 22),("南通", 23),("拉薩", 24),("雲浮", 24),("梅州", 25), ("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("廈門", 26), ("汕尾", 26),("潮州", 26),("丹東", 27),("太倉", 27),("曲靖", 27),("煙台", 28), ("福州", 29),("瓦房店", 30),("即墨", 30),("撫順", 31),("玉溪", 31),("張家口", 31), ("陽泉", 31),("萊州", 32),("湖州", 32),("汕頭", 32),("崑山", 33),("寧波", 33), ("湛江", 33),("揭陽", 34),("榮成", 34),("連雲港", 35),("葫蘆島", 35),("常熟", 36), ("東莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南寧", 37),("營口", 37), ("惠州", 37),("江陰", 37),("蓬萊", 37),("韶關", 38),("嘉峪關", 38),("廣州", 38), ("延安", 38),("太原", 39),("清遠", 39),("中山", 39),("昆明", 39),("壽光", 40), ("盤錦", 40),("長治", 41),("深圳", 41),("珠海", 42),("宿遷", 43),("咸陽", 43), ("銅川", 44),("平度", 44),("佛山", 44),("海口", 44),("江門", 45),("章丘", 45), ("肇慶", 46),("大連", 47),("臨汾", 47),("吳江", 47),("石嘴山", 49),("瀋陽", 50), ("蘇州", 50),("茂名", 50),("嘉興", 51),("長春", 51),("膠州", 52),("銀川", 52), ("張家港", 52),("三門峽", 53),("錦州", 54),("南昌", 54),("柳州", 54),("三亞", 54), ("自貢", 56),("吉林", 56),("陽江", 57),("瀘州", 57),("西寧", 57),("宜賓", 58), ("呼和浩特", 58),("成都", 58),("大同", 58),("鎮江", 59),("桂林", 59),("張家界", 59), ("宜興", 59),("北海", 60),("西安", 61),("金壇", 62),("東營", 62),("牡丹江", 63), ("遵義", 63),("紹興", 63),("揚州", 64),("常州", 64),("濰坊", 65),("重慶", 66), ("台州", 67),("南京", 67),("濱州", 70),("貴陽", 71),("無錫", 71),("本溪", 71), ("克拉瑪依", 72),("渭南", 72),("馬鞍山", 72),("寶雞", 72),("焦作", 75),("句容", 75), ("北京", 79),("徐州", 79),("衡水", 80),("包頭", 80),("綿陽", 80),("烏魯木齊", 84), ("棗莊", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧陽", 86),("庫爾勒", 86), ("安陽", 90),("開封", 90),("濟南", 92),("德陽", 93),("溫州", 95),("九江", 96), ("邯鄲", 98),("臨安", 99),("蘭州", 99),("滄州", 100),("臨沂", 103),("南充", 104), ("天津", 105),("富陽", 106),("泰安", 112),("諸暨", 112),("鄭州", 113),("哈爾濱", 114), ("聊城", 116),("蕪湖", 117),("唐山", 119),("平頂山", 119),("邢台", 119),("德州", 120), ("濟寧", 120),("荊州", 127),("宜昌", 130),("義烏", 132),("麗水", 133),("洛陽", 134), ("秦皇島", 136),("株洲", 143),("石家莊", 147),("萊蕪", 148),("常德", 152),("保定", 153), ("湘潭", 154),("金華", 157),("岳陽", 169),("長沙", 175),("衢州", 177),("廊坊", 193), ("菏澤", 194),("合肥", 229),("武漢", 273),("大慶", 279)]geo = Geo("全國主要城市空氣質量", "data from pm2.5", title_color="#fff", title_pos="center", width_=1200, height=600, background_color=#404a59)attr, value = geo.cast(data)geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff", symbol_size=15, is_visualmap=True)geo.render()
代碼很簡單:
data = [ ("海門", 9),("鄂爾多斯", 12)]
數據用列表,包著元組,地名用文本,應該地圖自帶了地名
geo = Geo("全國主要城市空氣質量", "data from pm2.5", title_color="#fff", title_pos="center", width_=1200, height=600, background_color=#404a59)
在geo里確定了標題,子標題,標題顏色,位置,大小,和背景顏色等,而且顏色用的#404a59,這種十六進位的表達方法,可以在網上找到專門的在線轉換網站,把RBG值轉換成這種十六進位。
具體可以看見官方對geo里參數的描述
attr, value = geo.cast(data)
這個應該是geo自帶的數據格式轉換方法,官方的文檔里有寫到
- attr -> list屬性名稱
- value -> list屬性所對應的值
我們可以看到,cast把元組拆開了,成了兩個list,attr列表裡是地名,value列表裡是值
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff", symbol_size=15, is_visualmap=True)
add里包括圖中的細節部分,我就直接把官方的抄過來啦!!
圖例名稱- attr -> list屬性名稱
- value -> list屬性所對應的值
- type -> str圖例類型,有scatter, effectScatter, heatmap可選。默認為 scatter
- maptype -> str地圖類型。 支持 china、world、安徽、澳門、北京、重慶、福建、福建、甘肅、廣東,廣西、廣州、海南、河北、黑龍江、河南、湖北、湖南、江蘇、江西、吉林、遼寧、內蒙古、寧夏、青海、山東、上海、陝西、山西、四川、台灣、天津、香港、新疆、西藏、雲南、浙江,以及 363個二線城市地圖。提醒:在畫市級地圖的時候,城市名字後面的『市』要省去了,比如,石家莊市的『市』不要提,即『石家莊』就可以了。
- symbol_size -> int標記圖形大小。默認為 12
- border_color -> str地圖邊界顏色。默認為 #111
- geo_normal_color -> str
正常狀態下地圖區域的顏色。默認為 #323c48
- geo_emphasis_color -> str高亮狀態下地圖區域的顏色。默認為 #2a333d
- geo_cities_coords -> dict用戶自定義地區經緯度,類似如 {阿城: [126.58, 45.32],} 這樣的字典,當用於提供了該參數時,將會覆蓋原有預存的區域坐標信息。
- is_roam -> bool是否開啟滑鼠縮放和平移漫遊。默認為 True如果只想要開啟縮放或者平移,可以設置成scale或者move。設置成 True 為都開啟
看上回去很簡單啊,讓我們親自把自己的數據丟進去看看,首先安裝包
pip install pyecharts
然而,然而,然而~~~~
一切事情都沒有那麼順利的!!!!!
為什麼我顯示不出地圖呢~~~~????,
我們來解決第一個問題:為什麼我顯示不出地圖背景!
讓我們繼續翻官方的文檔,原來:新的庫不帶地圖了,要自己安裝,
pip install echarts-countries-pypkgpip install echarts-china-provinces-pypkgpip install echarts-china-cities-pypkg
好的,我們安裝完後繼續!
納尼,
依舊顯示不出來地圖!~!~!
最後,經過我百般打探,試驗,終於發現了解決方法!!!
把這三個包刪除了,重新在安裝一遍,吐血
好的我們,第一期教學完成,研究了官方的例子,然後我們下期嘗試用自己的經緯度excel表和數據,然生成
推薦閱讀:
※賈寶玉和紅樓中的女人們——《紅樓夢》人物關係分析可視化
※詩豪:劉禹錫寫詩用字分析(唐代詩人寫詩用字分析之三)
※【R可視化】將薪比薪
※06.大雜燴 線性方程組 逆矩陣 列空間 零空間 非方陣
※2018年全球互聯網發展數據分析