用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年全球互聯網發展數據分析

TAG:Python | 可視化 | 數據分析 |