【python實(shí)戰(zhàn)】 pyecharts繪制地圖

最近研究python作圖台夺,看了一些作圖的第三方庫(kù),發(fā)現(xiàn)作不同的圖用不同的第三方庫(kù)的效果不同媒区,例如靡砌,如果要作出如下帶中國(guó)地圖+條形圖的樣式已脓,pyecharts這個(gè)庫(kù)還是很不錯(cuò)的。雖然有個(gè)硬傷通殃,就是渲染成圖片度液,花費(fèi)的時(shí)間較長(zhǎng),一張圖渲染花費(fèi)了大概20多s。

圖片效果如下:

grid_chart.png

代碼如下:

#繪制地圖用pyecharts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
# 使用 snapshot-selenium 渲染圖片恨诱,圖片渲染慢媳瞪,一張圖要20多秒
# 要裝chromedrive
from snapshot_selenium import snapshot
import numpy as np 
from pyecharts.charts import Map,Bar,Grid
from pyecharts import options as opts

# 地圖
# 模擬數(shù)據(jù)
data={
        "data": [
            {"name": "臺(tái)灣", "value": 183},
            {"name": "香港", "value": 54},
            {"name": "江蘇", "value": 34},
            {"name": "上海", "value": 22},
            {"name": "山東", "value": 45},
            {"name": "遼寧", "value": 12},
            {"name": "廣東", "value": 56},
            {"name": "四川", "value": 87},
            {"name": "河南", "value": 98},
            {"name": "黑龍江", "value":23},
            {"name": "湖北", "value":2},
            {"name": "廣西", "value":3}
        ],
    }

areas=[d["name"] for d in data['data']]
values=[d["value"] for d in data['data']]

#排序,用于條形圖
data_sort=[list(z) for z in zip(areas, values)]
data_sort.sort(key=lambda x:(x[1]),reverse=True)
areas=[x[0] for x in data_sort]
values=[x[1] for x in data_sort]

# 地圖
map_chart=Map()
map_chart.add(series_name='',
    data_pair=[list(z) for z in zip(areas, values)],
    maptype='china',
    is_map_symbol_show=False)
map_chart.set_series_opts(label_opts=opts.LabelOpts(is_show=True,font_size=9)) # {a}(系列名稱(chēng))照宝,蛇受(區(qū)域名稱(chēng)),{c}(合并數(shù)值), 7byvoux(無(wú))
map_chart.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_calculable=True,dimension=0,
    min_=min(values),
    max_=max(values),
    # type_='color',
    pos_right='100',
    pos_top='center',
    range_text=['樣本數(shù)量',''],
    # range_color=["lightskyblue", "yellow", "orangered"],
    textstyle_opts=opts.TextStyleOpts(font_size=10)))

# 條形圖
bar=Bar()
bar.add_xaxis(xaxis_data=areas)
bar.add_yaxis(series_name="",
    yaxis_data=values,
    yaxis_index=1,
    label_opts=opts.LabelOpts(is_show=True,position='right',formatter='厕鹃:{c}',font_size=9))
bar.reversal_axis()
bar.set_global_opts(
            xaxis_opts=opts.AxisOpts(is_show=False,axislabel_opts=opts.LabelOpts(is_show=False)),#不顯示x軸及標(biāo)簽
            yaxis_opts=opts.AxisOpts(is_show=True,is_inverse=True,axislabel_opts=opts.LabelOpts(is_show=False),#不顯示y軸標(biāo)簽
                axistick_opts=opts.AxisTickOpts(is_show=False), #不顯示y軸tick
                axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='rgba(0,0,0,0.5)'))), #y軸線設(shè)置
            visualmap_opts=opts.VisualMapOpts(is_calculable=True,dimension=0,#設(shè)置dimension兢仰,條形圖每個(gè)itme和visualmap對(duì)應(yīng)
    min_=min(values),
    max_=max(values),
    # type_='color',
    pos_right='100',
    pos_top='center',
    range_text=['樣本數(shù)量',''],
    # range_color=["lightskyblue", "yellow", "orangered"],
    textstyle_opts=opts.TextStyleOpts(font_size=10)))

# 地圖+條形圖的組合圖
grid_chart=Grid()
grid_chart.add(bar, grid_opts=opts.GridOpts( pos_left="10", pos_right="80%", pos_top="70%", pos_bottom="5",is_contain_label=False))
grid_chart.add(map_chart,grid_opts=opts.GridOpts())

# 在工作目錄下生成html
grid_chart.render()
# 渲染成圖片
make_snapshot(snapshot, grid_chart.render(), "grid_chart.png") 

以上用的是pyecharts的v1版本,相關(guān)文檔見(jiàn)pyecharts剂碴,里面關(guān)于配置項(xiàng)和相關(guān)函數(shù)介紹的還是很詳細(xì)的把将,前期是看網(wǎng)上的樣例寫(xiě)的,后期要修改細(xì)節(jié)啥的忆矛,就是看著相關(guān)文檔進(jìn)行修改察蹲。

如果不是大批量的要求速度快的生成圖片,這個(gè)庫(kù)生成的圖片以及在設(shè)置上的靈活性還是很不錯(cuò)的催训。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洽议,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漫拭,更是在濱河造成了極大的恐慌亚兄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件采驻,死亡現(xiàn)場(chǎng)離奇詭異审胚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)礼旅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)膳叨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人各淀,你說(shuō)我怎么就攤上這事懒鉴」罟遥” “怎么了碎浇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)璃俗。 經(jīng)常有香客問(wèn)我奴璃,道長(zhǎng),這世上最難降的妖魔是什么城豁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任苟穆,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雳旅。我一直安慰自己跟磨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布攒盈。 她就那樣靜靜地躺著抵拘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪型豁。 梳的紋絲不亂的頭發(fā)上僵蛛,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音迎变,去河邊找鬼充尉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛衣形,可吹牛的內(nèi)容都是我干的驼侠。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谆吴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泪电!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纪铺,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤相速,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鲜锚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體突诬,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年芜繁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旺隙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骏令,死狀恐怖蔬捷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榔袋,我是刑警寧澤周拐,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站凰兑,受9級(jí)特大地震影響妥粟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吏够,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一勾给、第九天 我趴在偏房一處隱蔽的房頂上張望滩报。 院中可真熱鬧,春花似錦播急、人聲如沸脓钾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惭笑。三九已至,卻和暖如春生真,著一層夾襖步出監(jiān)牢的瞬間沉噩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工柱蟀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留川蒙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓长已,卻偏偏與公主長(zhǎng)得像畜眨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子术瓮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350