文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

可视化 | 教你用Python实现热力图(一)

2023-09-04 13:44

关注

本文正在参与新星计划Python学习方向,详情请看:(93条消息) lifein的博客_CSDN博客-SQL SERVER,计算机三级——数据库领域博主

目录

一、导引

二、内容

(一)地图热力图:(动态地图)

1、环境搭建:

2、地图代码:(原始)


一、导引

        在可视化中,热力图可以使用颜色深浅或者指定颜色来直观的表示目前已有数据情况。热力图的表现形式不只有上面的地图热力图,在Pearson相关性系数的时候也同样会用到热力图。

        本文将会围绕地图热力图和Pearson相关性系数的可视化进行讲解(并附代码)。

二、内容

(一)地图热力图:(动态地图)

1、环境搭建:

如果没有下载相关绘图的包,需要先

pip install pyecharts
#pip install pyechartsfrom pyecharts import options as optsfrom pyecharts.charts import Mapimport pandas as pd

2、地图代码:(原始)

        1)初始化配置

class Map(    # 初始化配置项    init_opts: opts.InitOpts = opts.InitOpts())#Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))

        · theme: pyecharts内置提供了10+ 种不同的风格。

        2)添加数据:add() 

def add(    series_name: str,    data_pair: types.Sequence[types.Union[types.Sequence, opts.MapItem, dict]],    maptype: str = "china",    is_selected: bool = True,    # 是否开启鼠标缩放和平移漫游。    is_roam: bool = True,    # 当前视角的中心点,用经纬度表示    center: Optional[Sequence] = None,    # 参数用于 scale 地图的长宽比。    aspect_scale: types.Numeric = 0.75,    # 二维数组,定义定位的左上角以及右下角分别所对应的经纬度。    bounding_coords: types.Optional[types.Sequence[types.Numeric]] = None,    # 最小的缩放值。    min_scale_limit: types.Optional[types.Numeric] = None,    # 最大的缩放值。    max_scale_limit: types.Optional[types.Numeric] = None,    # 默认是 'name',针对 GeoJSON 要素的自定义属性名称,作为主键用于关联数据点和 GeoJSON 地理要素。    name_property: str = "name",    # 选中模式,表示是否支持多个选中,默认关闭,支持布尔值和字符串。    # 字符串取值可选'single'表示单选,或者'multiple'表示多选。    selected_mode: types.Union[bool, str] = False,    # 当前视角的缩放比例。    zoom: Optional[Numeric] = 1,    # 自定义地区的名称映射    name_map: Optional[dict] = None,    # 标记图形形状    symbol: Optional[str] = None,    # 多个拥有相同地图类型的系列会使用同一个地图展现。    # 如果多个系列都在同一个区域有值,ECharts 会对这些值统计得到一个数据。    # 这个配置项就是用于配置统计的方式,目前有:    # 'sum' 取和。    # 'average' 取平均值。    # 'max' 取最大值。    # 'min' 取最小值。    map_value_calculation: str = "sum",    # 是否显示标记图形    is_map_symbol_show: bool = True,    # pyecharts 暂时没有提供 left/top/right/bottom 的配置    # layoutCenter 和 layoutSize 提供了除了 left/right/top/bottom/width/height 之外的布局手段。    # 在使用 left/right/top/bottom/width/height 的时候    # 可能很难在保持地图高宽比的情况下把地图放在某个盒形区域的正中间,并且保证不超出盒形的范围。    # 此时可以通过 layoutCenter 属性定义地图中心在屏幕中的位置,layoutSize 定义地图的大小。    # 如下示例    # layoutCenter: ['30%', '30%'],    # // 如果宽高比大于 1 则宽度为 100,如果小于 1 则高度为 100,保证了不超过 100x100 的区域    # layoutSize: 100    layout_center: types.Optional[types.Sequence[str]] = None,    # 地图的大小,见 layoutCenter。支持相对于屏幕宽高的百分比或者绝对的像素大小。    layout_size: types.Union[str, types.Numeric] = None,    # 标签配置项,参考 `series_options.LabelOpts`    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),    # 提示框组件配置项,参考 `series_options.TooltipOpts`    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,    # 图元样式配置项,参考 `series_options.ItemStyleOpts`    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,    # 高亮标签配置项,参考 `series_options.LabelOpts`    emphasis_label_opts: Union[opts.LabelOpts, dict, None] = None,    # 高亮图元样式配置项,参考 `series_options.ItemStyleOpts`    emphasis_itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,)

        主要参数解释:

        · series_name:系列名称,用于 tooltip 的显示,legend 的图例筛选。

        · data_pair:数据项 (坐标点名称,坐标点值)

        · maptype:地图类型

        · is_selected:是否选中图例

        · aspect_scale:参数用于 scale 地图的长宽比

        · min_scale_limit:最小的缩放值

        · max_scale_limit:最大的缩放值

        · layout_size:地图的大小,支持相对于屏幕宽高的百分比或者绝对的像素大小。

        · label_opts:标签配置项

        3)MapItem:地图数据项

class MapItem(    # 数据所对应的地图区域的名称,例如 '广东','浙江'。    name: Optional[str] = None,    # 该区域的数据值。    value: Optional[Numeric] = None,    # 该区域是否选中。    is_selected: bool = False,    # 标签配置项,参考 `series_options.LabelOpts`    label_opts: Union[LabelOpts, dict, None] = None,    # 图元样式配置项,参考 `series_options.ItemStyleOpts`    itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,    # 提示框组件配置项,参考 `series_options.TooltipOpts`    tooltip_opts: Union[TooltipOpts, dict, None] = None,)

        4)设置系列配置项

.set_series_opts()

除了在.add()中设置部分配置项外,就是使用.set_series_opts()配置图元样式、文字样式、标签样式、点线样式等。

        5)设置全局配置项

.set_global_opts()

 配置标题、动画、坐标轴、图例等。

        6)案例

def china_map(data_pair):    Map(init_opts=opts.InitOpts(theme='white', width='1280px', height='720px')        ).add(  series_name="",                data_pair=data_pair,                maptype="china",                label_opts=opts.LabelOpts(is_show=True,position='inside',),is_map_symbol_show=False,    ).set_global_opts(        title_opts=opts.TitleOpts(            title="2022年6月各省票房排名 热力图",            pos_left="center",            pos_top="20",            title_textstyle_opts=opts.TextStyleOpts(                font_size=28,                font_family="Microsoft YaHei",),            subtitle='统计时间:2022年6月',            subtitle_textstyle_opts=opts.TextStyleOpts(                font_size=12, font_family="Microsoft YaHei"),        ),        tooltip_opts=opts.TooltipOpts(            is_show=True,            formatter="{b} : 现有票房{c}万元",        ),        visualmap_opts=opts.VisualMapOpts(            is_piecewise=True,            dimension=0,            pos_left="10",            pos_bottom="20",            pieces=[                {'max': 1, 'min': 0, 'label': '0-1', 'color': '#FFFFFF'},                {'max': 9, 'min': 1, 'label': '1-9', 'color': '#FFFFCC'},                {'max': 99, 'min': 10, 'label': '10-99', 'color': '#FFC4B3'},                {'max': 499, 'min': 100, 'label': '100-499', 'color': '#FF9985'},                {'max': 999, 'min': 500, 'label': '500-999', 'color': '#F57567'},                {'max': 4999, 'min': 1000, 'label': '1000-4999', 'color': '#E64546'},                {'max': 9999, 'min': 5000, 'label': '5000-9999', 'color': '#B80909'},                {'max': 49999, 'min': 10000, 'label': '10000-49999', 'color': '#8A0808'},                {'max': 99999, 'min': 50000, 'label': '>=50000', 'color': '#660000'}            ]        )    ).render('前100城市排名202206.html')if __name__ == '__main__':    df = pd.read_excel('filename')  # 利用pandas读取数据    City_list = df["省区市"] # 各省/区的名字列表    data_list = df["票房"] # 数据    data_pair = [x for x in zip(City_list, data_list)]china_map(data_pair)

有任何问题,欢迎在下方评论留言。

更多可视化内容,详见个人主页:

(97条消息) lifein的博客_CSDN博客-SQL SERVER,计算机三级——数据库领域博主

来源地址:https://blog.csdn.net/m0_60066036/article/details/129876085

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯