1. 程式人生 > >[python] 幾行代碼也能玩轉世界地圖?

[python] 幾行代碼也能玩轉世界地圖?

2.6 圖表 ont 點擊 了解 tst 形式 tex pre

前些天收到某位大佬的求助,說是需要給根據數據給安徽省地市來繪制個圖,用不同顏色來直觀表示數據。當時就想到了Python提供一個繪制地圖的庫—— Pyecharts。

Pyecharts是一個用於生成echarts圖表的類庫, 它是百度開源的一個數據可視化 JS 庫。Echarts詳情點擊這裏。

安裝庫很簡單,大家只要在環境變量裏有添加過Python和其pip工具就OK。

pip install Pyecharts

當然有了該庫後還不夠,需要地圖文件,所以以下幾個需要按需安裝

  1. 全球國家地圖: echarts-countries-pypkg (1.9MB): 世界地圖和 213 個國家,包括中國地圖
  2. 中國省級地圖: echarts-china-provinces-pypkg (730KB):23 個省,5 個自治區
  3. 中國市級地圖: echarts-china-cities-pypkg (3.8MB):370 個中國城市
  4. 中國縣區級地圖: echarts-china-counties-pypkg (4.1MB):2882 個中國縣·區
  5. 中國區域地圖: echarts-china-misc-pypkg (148KB):11 個中國區域地圖,比如華南、華北。

如上使用pip install 命令完成安裝即可。

基本應用::基本地圖繪制

如果我們需要繪制一副安徽省的地圖,並且我們給每個地市一定的數據,讓地圖在著色上表現出其數據的差異,這時,pyecharts是特別方便的一個應用。

from pyecharts import Map 
city = [‘合肥市‘, ‘蕪湖市‘, ‘宿州市‘,‘淮北市‘,‘亳州市‘,‘阜陽市‘,‘蚌埠市‘,‘淮南市‘,‘滁州市‘,‘六安市‘,‘馬鞍山市‘,‘安慶市‘,‘銅陵市‘,‘宣城市‘,‘池州市‘,"黃山市"]
area = [11445.1, 6026.05, 9938.77, 2741.39, 8521.23, 10118.17,5950.72, 5532.30, 13515.99, 15450.82, 4049.13, 13537.96, 2922.60, 12312.55,8398.72, 9678.39]

# 繪制地圖
map_1 = Map("安徽省圖例-各地市面積",title_pos=‘center‘,width=1200, height=600)
# 地圖詳細信息
map_1.add("", city, area,maptype=‘安徽‘, is_visualmap=True, visual_range=[min(area), max(area)], visual_text_color=‘black‘, is_map_symbol_show=False, is_label_show=True)

# 輸出到當前文件夾下,保存名為 安徽省地圖,文件類型為html
map_1.render("安徽省地圖.html")

  

看看文件的結果如何:

技術分享圖片

這個簡直很完美好吧,

1.左側的顏色區間為漸變色,天空藍——黃——紅,表示的數據為由低到高;

2.數據的值並非手動分段,而是自動分段,故不一定是我們想要的;

3.鼠標放在某塊地市區域上時,會高亮顯示,並且會顯示詳細信息,這是一個可選項。

4…還是自己挖掘吧。

既然是由開源JS遷過來的,我們就必須要看看其網頁源代碼。

Woc,這個代碼行數和右邊的滾動塊根本不是我想要的比例好嗎!!看來期間那段js函數是一個大工程啊。

技術分享圖片

從參數option_xxxx可以看出,這些項基本為我們自己定義:如

title是一個字典,text值為我們標題值,這裏用的其他編碼所表示

left值為我們所設置的 title_pos= ‘center’

top,textStyle,subtextStyle為默認值,我們並未去修改。

技術分享圖片

挑一些重要的說:

mapType即為我們所想顯示的地圖,如我們選的安徽(不要帶上省市單位,如想顯示合肥市,則填合肥即可)

data是我們所選地市名稱和面積數據,所以在Python中我們也可以寫成字典形式

技術分享圖片

VisualMap基本就是地圖顯示的詳細信息了,

Type有兩個值可以選 continuous和piecewise,前者為連續後者為分段

Min,max是數據範圍,即Python中visual_range的參數

inRange內參數color即顏色範圍,可以選擇多項,當然可以用英文表示,如’skyblue’等

splitNumber是分段,自動分為5段,默認值為5

參數眾多,以上挑了一些比較重要的。

如果想要編輯這HTML文件,可以使用記事本打開,還有一個比較好用的文檔編輯器notepad++(適用於多種文檔),sublime text,Dreamweaver等文件。

如果想要了解更詳細的參數,訪問這裏。

官方文檔。

(PS:文檔是用word編輯,發表於本人公眾號的,超鏈接一律失效,圖片水印為公眾號名稱,支付寶搜索8282704領紅包)

[python] 幾行代碼也能玩轉世界地圖?