利用pyecharts绘制省市地图

思路

绘制省市地图应涵盖其市划分、省市的属性(人口,面积,GDP…),我们最终要实现的结果就是随着鼠标的移动可以明确显示其属性数据,同时层次分明,给与读者一目了然的感觉。

效果

安徽省

代码块

代码均作了注释,需要自取

from pyecharts.charts import Map, Geo
from pyecharts import options as opts
from pyecharts.globals import ChartType, SymbolType

# --------------------------------绘制省市地图----------------------------- #
city1 = ['宿州市', '合肥市', '芜湖市', '六安市', '安庆市', '马鞍山市', '宣城市', '黄山市',
         '淮南市', '蚌埠市', '滁州市', '亳州市', '阜阳市', '淮北市', '池州市', '铜陵市']
city2 = ['南京市', '扬州市', '苏州市', '南京市', '徐州市', '南通市', '泰州市', '无锡市', '镇江市',
         '常州市', '淮安市', '连云港市', '宿迁市', '张家港市', '昆山市', '高邮市','靖江市', '常熟市', '盐城市']
values1 = [10, 40, 45, 50, 67, 80, 100, 115, 130, 140, 155, 165, 175, 30, 90, 190]
value2 = [5, 10, 18, 25, 32, 39, 41, 49, 53, 62, 67, 70, 76, 83, 89, 91, 94, 99]
data_anhui = [list(z) for z in zip(city1, values1)]
data_jiangsu = [list(z) for z in zip(city2, value2)]

anhui_flink = "https://baike.baidu.com/item/%E5%AE%89%E5%BE%BD/37014"  # 副标题
anhui_zlink = "https://zh.wikipedia.org/wiki/%E5%AE%89%E5%BE%BD%E7%9C%81"  # 主标题

provience_anhui = (
    Map(init_opts=opts.InitOpts(width="1500px", height="900px", page_title='安徽省地图-NiKoJJ'))
        .add(
        '安徽',
        data_anhui,
        maptype='安徽',
        is_roam=True,
        is_selected=True,
        is_map_symbol_show=True  # 是否标记图形
    )
        #####
        # 注:这里添加两个省份的地图的话,会相互覆盖一部分,所以这里将江苏省的注释掉了
        ####
        # .add(
        #     '江苏',
        #     data_jiangsu,
        #     maptype='江苏',
        #     is_roam=True,
        #     is_selected=Truef
        # )
        .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-安徽省地图",
                                  title_link=anhui_link,  # 主标题跳转链接
                                  title_target="blank",  # 新窗口打开
                                  subtitle="安徽省市地图",  # 副标题
                                  subtitle_link=anhui_flink,
                                  subtitle_target="self"),  # 当前窗口打开

        visualmap_opts=opts.VisualMapOpts(is_show=True,  # 视觉映射配置
                                          max_=200,
                                          is_calculable=True,  # 是否显示拖拽用的手柄
                                          is_piecewise=True,  # 是否为分段型
                                          range_text=["High", "Low"],
                                          border_color="#000"),  # 两端文本

        tooltip_opts=opts.TooltipOpts(trigger="item",  # 触发类型
                                      trigger_on="mousemove|click",  # 提示框的触发条件
                                      formatter="{b}:{c} (权重)")  # 标签内容格式,这里采用的字符串模板
    )
        .set_series_opts(
        label_opts=opts.LabelOpts(is_show=True)
    )
        .render('provience_安徽.html')
)

更多内容请访问个人博客,链接:NiKoJJ‘s Blog
同时欢迎关注微信公众号,获取更多有趣内容!
在这里插入图片描述

好的,首先需要安装pyecharts和pandas库。可以使用以下命令进行安装: ``` pip install pyecharts pip install pandas ``` 接下来,我们需要准备数据。假设我们有一个包含四川各市之间流量的CSV文件,格式如下: ``` from,to,value 成都,绵阳,100 成都,南充,50 绵阳,德阳,80 ... ``` 接下来,我们可以使用以下代码生成地图和流向图: ```python import pandas as pd from pyecharts import options as opts from pyecharts.charts import Map, Geo, Graph # 读取数据并转换为节点和边的形式 df = pd.read_csv('data.csv') nodes = list(set(df['from'].tolist() + df['to'].tolist())) edges = [] for i in range(len(df)): edges.append((df.iloc[i]['from'], df.iloc[i]['to'], df.iloc[i]['value'])) # 生成地图 map_data = [(node, 0) for node in nodes] map_chart = Map().add('四川', map_data, '四川') map_chart.set_global_opts(title_opts=opts.TitleOpts(title='四川地图')) # 生成流向图 graph = Graph().add('', nodes, edges, repulsion=5000, is_legend_show=False, is_label_show=True) graph.set_global_opts(title_opts=opts.TitleOpts(title='四川流向图')) graph.set_series_opts(label_opts=opts.LabelOpts(position='right')) # 将地图和流向图放在一起显示 geo_chart = Geo().add_schema(maptype='四川').add('', [], tooltip_opts=opts.TooltipOpts(show=False)) geo_chart = geo_chart.overlap(map_chart) geo_chart = geo_chart.overlap(graph) geo_chart.render('sichuan.html') ``` 以上代码将生成一个名为`sichuan.html`的HTML文件,包含四川地图和各市之间流向的图表。你可以使用浏览器打开该文件并查看结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值