100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战

文章目录

  • 专栏导读
  • 1. 热力图介绍
  • 2. 基础热力图
  • 3. 添加色块数值
  • 4. 添加热力标尺
  • 5. 修改色块颜色
  • 6. 不同区间颜色
  • 7. 炫酷模块1
  • 8. 炫酷模块2

专栏导读

本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

1. 热力图介绍

  • 热力图(Heat Map)是一种基于色彩对数据集进行可视化的方法,可表现出数据空间内各点之间的相关性,从而揭示影响结果的因素的变化趋势。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。
  • 从数据结构来划分,热力图一般分为两种。第一,表格型热力图,也称色块图。它需要 2 个分类字段和 1 个数值字段,分类字段确定 x、y 轴,将图表划分为规整的矩形块。数值字段决定了矩形块的颜色。第二,非表格型热力图,或曰平滑的热力图,它需要 3 个数值字段,可绘制在平行坐标系中(2个数值字段分别确定x、y轴,1个数值字段确定着色)。

特点:热力图的最大特点就是能够穿透和揭示大量数据之间的空间关系,将复杂的结果可视化。它以色调的方式展示变量之间的关系,不同的色调对应着不同的值范围,渐变的颜色向着更多的变量、密集的空间和复杂的表现形式揭示变量之间的关系。

应用场景

  • 热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。
  • 热力图在各行业有着广泛的应用,尤其是在市场营销、数据分析及空间数据处理领域,比如用热力图可以分析航班的晚间到达率,可以分析疾病的集中地区,可以整理出某个行业的流行程度等。

2. 基础热力图

上述代码中,首先创建了一个data列表,其中每个元素代表一个数据点,包括x轴坐标、y轴坐标和数值。然后创建了一个HeatMap实例,并使用add_xaxis()和add_yaxis()方法设置x轴和y轴的标签,同时将数据传入add_yaxis()方法中。 最后在jupyter notebook中渲染图表:

from pyecharts import options as opts
from pyecharts.charts import HeatMap

# 构造热力图数据
data = [
    [0, 0, 5],
    [0, 1, 10],
    [0, 2, 20],
    [1, 0, 15],
    [1, 1, 25],
    [1, 2, 30],
    [2, 0, 35],
    [2, 1, 40],
    [2, 2, 45],
]

heatmap = (
    HeatMap()
    .add_xaxis(['A', 'B', 'C'])
    .add_yaxis("series0", ['1', '2', '3'], data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基本热力图示例"),
        visualmap_opts=opts.VisualMapOpts(is_show=False), # 不显示热力标尺
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不显示数字
)

# 在jupyter notebook中渲染图表
heatmap.render_notebook()

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第1张图片

3. 添加色块数值

opts.LabelOpts()函数中is_show=True的时候,每个色块上显示对应的数值:

from pyecharts import options as opts
from pyecharts.charts import HeatMap

# 构造热力图数据
data = [
    [0, 0, 5],
    [0, 1, 10],
    [0, 2, 20],
    [1, 0, 15],
    [1, 1, 25],
    [1, 2, 30],
    [2, 0, 35],
    [2, 1, 40],
    [2, 2, 45],
]

heatmap = (
    HeatMap()
    .add_xaxis(['A', 'B', 'C'])
    .add_yaxis("series0", ['1', '2', '3'], data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基本热力图示例"),
        visualmap_opts=opts.VisualMapOpts(is_show=False),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 设置显示数字
)

# 在jupyter notebook中渲染图表
heatmap.render_notebook()

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第2张图片

4. 添加热力标尺

opts.VisualMapOpts()函数中is_show=True的时候,会在旁边添加热力标尺,拖动热力标尺会突出对应色块:

from pyecharts import options as opts
from pyecharts.charts import HeatMap

# 构造热力图数据
data = [
    [0, 0, 5],
    [0, 1, 10],
    [0, 2, 20],
    [1, 0, 15],
    [1, 1, 25],
    [1, 2, 30],
    [2, 0, 35],
    [2, 1, 40],
    [2, 2, 45],
]

heatmap = (
    HeatMap()
    .add_xaxis(['A', 'B', 'C'])
    .add_yaxis("series0", ['1', '2', '3'], data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基本热力图示例"),
        visualmap_opts=opts.VisualMapOpts(is_show=True), # 显示热力标尺
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 显示数字
)

# 在jupyter notebook中渲染图表
heatmap.render_notebook()

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第3张图片

5. 修改色块颜色

在Pyecharts模块中,在visualmap_opts=opts.VisualMapOpts()函数可以使用range_color=[]参数来设置颜色范围。range_color参数接受一个包含颜色值的列表,用于定义热力图中不同数值对应的颜色。以下是一些常用的颜色值示例:

使用预定义的颜色名称:

  • ‘red’: 红色
  • ‘blue’: 蓝色
  • ‘green’: 绿色
  • ‘yellow’: 黄色
  • ‘orange’: 橙色
  • ‘purple’: 紫色

使用RGB颜色值:

  • ‘#FF0000’: 红色
  • ‘#0000FF’: 蓝色
  • ‘#00FF00’: 绿色
  • ‘#FFFF00’: 黄色
  • ‘#FFA500’: 橙色
  • ‘#800080’: 紫色

以下是一个示例代码,展示如何使用range_color参数设置颜色范围:

from pyecharts import options as opts
from pyecharts.charts import HeatMap

# 构造热力图数据
data = [
    [0, 0, 5],
    [0, 1, 10],
    [0, 2, 20],
    [1, 0, 15],
    [1, 1, 25],
    [1, 2, 30],
    [2, 0, 35],
    [2, 1, 40],
    [2, 2, 45],
]

heatmap = (
    HeatMap()
    .add_xaxis(['A', 'B', 'C'])
    .add_yaxis("series0", ['1', '2', '3'], data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基本热力图示例"),
        visualmap_opts=opts.VisualMapOpts(is_show=True, range_color=['#0000FF','#00FF00']), # 显示热力标尺
       
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 显示数字
)

# 在jupyter notebook中渲染图表
heatmap.render_notebook()

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第4张图片

6. 不同区间颜色

要绘制根据数值分割颜色,你可以使用visualmap_opts参数中的is_piecewise属性来实现。is_piecewise属性为True时,热力图会根据特定的区间范围设置不同的颜色,以突出区间。以下是一个示例代码:

from pyecharts import options as opts
from pyecharts.charts import HeatMap

# 构造热力图数据
data = [
    [0, 0, 5],
    [0, 1, 10],
    [0, 2, 20],
    [1, 0, 15],
    [1, 1, 25],
    [1, 2, 30],
    [2, 0, 35],
    [2, 1, 40],
    [2, 2, 45],
]

heatmap = (
    HeatMap()
    .add_xaxis(['A', 'B', 'C'])
    .add_yaxis("series0", ['1', '2', '3'], data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基本热力图示例"),
        visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            is_piecewise=True,
            pieces=[
                {"min": 20, "color": "red"},
                {"max": 20, "color": "green"},
            ]), # 显示热力标尺
       
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 显示数字
)

# 在jupyter notebook中渲染图表
heatmap.render_notebook()

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第5张图片

7. 炫酷模块1

import random
from pyecharts import options as opts
from pyecharts.charts import HeatMap
from pyecharts.faker import Faker

# 生成热力图数据
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]

# 创建 HeatMap 对象
c = (
    HeatMap()
    .add_xaxis(Faker.clock)  # 设置 x 轴数据
    .add_yaxis(
        "series0",  # 设置系列名称
        Faker.week,  # 设置 y 轴数据
        value,  # 设置热力图数据
        label_opts=opts.LabelOpts(is_show=True, position="inside"),  # 设置标签样式
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="HeatMap-Label 显示"),  # 设置标题
        visualmap_opts=opts.VisualMapOpts(),  # 设置视觉映射配置项
    )
   
)

# 在jupyter notebook中渲染图表
c.render_notebook() 

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第6张图片

8. 炫酷模块2

import pyecharts.options as opts
from pyecharts.charts import HeatMap

hours = [
    "12a",
    "1a",
    "2a",
    "3a",
    "4a",
    "5a",
    "6a",
    "7a",
    "8a",
    "9a",
    "10a",
    "11a",
    "12p",
    "1p",
    "2p",
    "3p",
    "4p",
    "5p",
    "6p",
    "7p",
    "8p",
    "9p",
    "10p",
    "11p",
]
days = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"]

data = [
    [0, 0, 5],
    [0, 1, 1],
    [0, 2, 0],
    [0, 3, 0],
    [0, 4, 0],
    [0, 5, 0],
    [0, 6, 0],
    [0, 7, 0],
    [0, 8, 0],
    [0, 9, 0],
    [0, 10, 0],
    [0, 11, 2],
    [0, 12, 4],
    [0, 13, 1],
    [0, 14, 1],
    [0, 15, 3],
    [0, 16, 4],
    [0, 17, 6],
    [0, 18, 4],
    [0, 19, 4],
    [0, 20, 3],
    [0, 21, 3],
    [0, 22, 2],
    [0, 23, 5],
    [1, 0, 7],
    [1, 1, 0],
    [1, 2, 0],
    [1, 3, 0],
    [1, 4, 0],
    [1, 5, 0],
    [1, 6, 0],
    [1, 7, 0],
    [1, 8, 0],
    [1, 9, 0],
    [1, 10, 5],
    [1, 11, 2],
    [1, 12, 2],
    [1, 13, 6],
    [1, 14, 9],
    [1, 15, 11],
    [1, 16, 6],
    [1, 17, 7],
    [1, 18, 8],
    [1, 19, 12],
    [1, 20, 5],
    [1, 21, 5],
    [1, 22, 7],
    [1, 23, 2],
    [2, 0, 1],
    [2, 1, 1],
    [2, 2, 0],
    [2, 3, 0],
    [2, 4, 0],
    [2, 5, 0],
    [2, 6, 0],
    [2, 7, 0],
    [2, 8, 0],
    [2, 9, 0],
    [2, 10, 3],
    [2, 11, 2],
    [2, 12, 1],
    [2, 13, 9],
    [2, 14, 8],
    [2, 15, 10],
    [2, 16, 6],
    [2, 17, 5],
    [2, 18, 5],
    [2, 19, 5],
    [2, 20, 7],
    [2, 21, 4],
    [2, 22, 2],
    [2, 23, 4],
    [3, 0, 7],
    [3, 1, 3],
    [3, 2, 0],
    [3, 3, 0],
    [3, 4, 0],
    [3, 5, 0],
    [3, 6, 0],
    [3, 7, 0],
    [3, 8, 1],
    [3, 9, 0],
    [3, 10, 5],
    [3, 11, 4],
    [3, 12, 7],
    [3, 13, 14],
    [3, 14, 13],
    [3, 15, 12],
    [3, 16, 9],
    [3, 17, 5],
    [3, 18, 5],
    [3, 19, 10],
    [3, 20, 6],
    [3, 21, 4],
    [3, 22, 4],
    [3, 23, 1],
    [4, 0, 1],
    [4, 1, 3],
    [4, 2, 0],
    [4, 3, 0],
    [4, 4, 0],
    [4, 5, 1],
    [4, 6, 0],
    [4, 7, 0],
    [4, 8, 0],
    [4, 9, 2],
    [4, 10, 4],
    [4, 11, 4],
    [4, 12, 2],
    [4, 13, 4],
    [4, 14, 4],
    [4, 15, 14],
    [4, 16, 12],
    [4, 17, 1],
    [4, 18, 8],
    [4, 19, 5],
    [4, 20, 3],
    [4, 21, 7],
    [4, 22, 3],
    [4, 23, 0],
    [5, 0, 2],
    [5, 1, 1],
    [5, 2, 0],
    [5, 3, 3],
    [5, 4, 0],
    [5, 5, 0],
    [5, 6, 0],
    [5, 7, 0],
    [5, 8, 2],
    [5, 9, 0],
    [5, 10, 4],
    [5, 11, 1],
    [5, 12, 5],
    [5, 13, 10],
    [5, 14, 5],
    [5, 15, 7],
    [5, 16, 11],
    [5, 17, 6],
    [5, 18, 0],
    [5, 19, 5],
    [5, 20, 3],
    [5, 21, 4],
    [5, 22, 2],
    [5, 23, 0],
    [6, 0, 1],
    [6, 1, 0],
    [6, 2, 0],
    [6, 3, 0],
    [6, 4, 0],
    [6, 5, 0],
    [6, 6, 0],
    [6, 7, 0],
    [6, 8, 0],
    [6, 9, 0],
    [6, 10, 1],
    [6, 11, 0],
    [6, 12, 2],
    [6, 13, 1],
    [6, 14, 3],
    [6, 15, 4],
    [6, 16, 0],
    [6, 17, 0],
    [6, 18, 0],
    [6, 19, 0],
    [6, 20, 1],
    [6, 21, 2],
    [6, 22, 2],
    [6, 23, 6],
]
data = [[d[1], d[0], d[2] or "-"] for d in data]


c = (
    HeatMap()  # 创建热力图对象
    .add_xaxis(xaxis_data=hours)  # 添加 x 轴数据
    .add_yaxis(  # 添加 y 轴数据
        series_name="Punch Card",
        yaxis_data=days,
        value=data,
        label_opts=opts.LabelOpts(  # 设置标签样式
            is_show=True, color="#fff", position="bottom", horizontal_align="50%"
        ),
    )
    .set_series_opts()  # 设置系列配置项
    .set_global_opts(  # 设置全局配置项
        legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
        xaxis_opts=opts.AxisOpts(  # 设置 x 轴配置项
            type_="category",
            splitarea_opts=opts.SplitAreaOpts(  # 设置分割区域样式
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        yaxis_opts=opts.AxisOpts(  # 设置 y 轴配置项
            type_="category",
            splitarea_opts=opts.SplitAreaOpts(  # 设置分割区域样式
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        visualmap_opts=opts.VisualMapOpts(  # 设置视觉映射配置项
            min_=0, max_=10, is_calculable=True, orient="horizontal", pos_left="center"
        ),
    )
)

c.render_notebook()  # 在 Jupyter Notebook 中渲染图表

运行结果:
100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战_第7张图片

你可能感兴趣的:(python,直方图,Pyecharts,可视化)