【python实战】 pyecharts绘制地图

最近研究python作图,看了一些作图的第三方库,发现作不同的图用不同的第三方库的效果不同,例如,如果要作出如下带中国地图+条形图的样式,pyecharts这个库还是很不错的。虽然有个硬伤,就是渲染成图片,花费的时间较长,一张图渲染花费了大概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

# 地图
# 模拟数据
data={
        "data": [
            {"name": "台湾", "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}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)
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=['样本数量',''],
    # 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='{b}:{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轴及标签
            yaxis_opts=opts.AxisOpts(is_show=True,is_inverse=True,axislabel_opts=opts.LabelOpts(is_show=False),#不显示y轴标签
                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轴线设置
            visualmap_opts=opts.VisualMapOpts(is_calculable=True,dimension=0,#设置dimension,条形图每个itme和visualmap对应
    min_=min(values),
    max_=max(values),
    # type_='color',
    pos_right='100',
    pos_top='center',
    range_text=['样本数量',''],
    # 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版本,相关文档见pyecharts,里面关于配置项和相关函数介绍的还是很详细的,前期是看网上的样例写的,后期要修改细节啥的,就是看着相关文档进行修改。

如果不是大批量的要求速度快的生成图片,这个库生成的图片以及在设置上的灵活性还是很不错的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348