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

这篇具有很好参考价值的文章主要介绍了可视化 | 教你用Python实现热力图(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

目录

一、导引

二、内容

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

1、环境搭建:

2、地图代码:(原始)


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

一、导引

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

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

二、内容

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

1、环境搭建:

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

pip install pyecharts
#pip install pyecharts
from pyecharts import options as opts
from pyecharts.charts import Map
import 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)

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

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

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

(97条消息) lifein的博客_CSDN博客-SQL SERVER,计算机三级——数据库领域博主文章来源地址https://www.toymoban.com/news/detail-445777.html

到了这里,关于可视化 | 教你用Python实现热力图(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包