【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码

目录

1 值热力图(Value Heatmap):

2 密度热力图(Density Heatmap)

3 时间热力图(Time Heatmap):

4 空间热力图(Spatial Heatmap)

5 渐变热力图(Gradient Heatmap)

6 3D热力图


        Matplotlib 是一个Python数据可视化库,它提供了各种绘图工具和函数,用于创建多种类型的图表,包括热力图(Heatmap)。热力图是一种用颜色来表示数据值的分布和模式的可视化方式,通常用于研究数据的相关性、密度、趋势等。

1 Matplotlib绘制热力图步骤

  1. 导入库

    在开始之前,需要导入必要的库,包括Matplotlib和NumPy。NumPy通常用于生成或处理数据。

    import numpy as npimport matplotlib.pyplot as plt

  2. 准备数据

    在绘制热力图之前,需要准备数据。数据可以是二维数组或矩阵,其中每个元素表示某个位置的数值。

    data = np.random.rand(10, 10) # 示例数据,可以根据需求替换为你的数据

  3. 创建热力图

    使用Matplotlib的imshow函数来创建热力图。你可以指定颜色映射(colormap),以及其他可选的参数,如图例、坐标轴标签等。

    ​plt.imshow(data, cmap='viridis')  # 使用'viridis'颜色映射,可以根据需求选择其他颜色映射
    plt.colorbar()  # 添加颜色条
    plt.title('Heatmap Example')
    plt.xlabel('X Axis')
    plt.ylabel('Y Axis')

    显示热力图

           使用plt.show()函数来显示生成的热力图。

        这些步骤将生成一个基本的热力图,其中颜色表示数据值的大小和密度。你可以根据需要自定义图表的外观,例如调整颜色映射、添加注释、更改标签等。

        此外,Matplotlib还提供了其他绘制热力图的方法,例如pcolormeshimshow之外,你还可以使用heatmap等其他方法,以适应不同类型的数据和需求。

2 常用热力图类型

        值热力图(Value Heatmap):用不同的颜色和亮度表示数值的大小和密度。较高的数值通常以鲜艳和明亮的颜色表示,而较低的数值则以暗淡的颜色表示。

        密度热力图(Density Heatmap):用颜色强度表示数据点的集中程度和分布密度。较高的密度区域会显示为较深的颜色,较低的密度区域则显示为较浅的颜色。

        时间热力图(Time Heatmap):将时间作为一个维度,用颜色的强度表示特定时间段内的某种事件或指标的变化趋势。较高的值通常以深色显示,较低的值则以浅色显示。

        空间热力图(Spatial Heatmap):用颜色强度表示地理区域内的数据分布情况。可以按地理位置和对应的数值来绘制颜色强度的差异。

        渐变热力图(Gradient Heatmap):通过平滑过渡的颜色渐变来表示数值或密度的变化程度。使用渐变热力图可以更好地展示数据的变化趋势和分布情况。 

3 值热力图(Value Heatmap):

        值热力图通常用于表示数值大小和密度。较高的数值使用鲜艳的颜色,而较低的数值使用暗淡的颜色。

import numpy as np
import matplotlib.pyplot as plt# 创建示例数据
data = np.random.rand(10, 10)  # 生成一个10x10的随机数据矩阵# 创建值热力图
plt.imshow(data, cmap='YlOrRd', aspect='auto')  # 使用YlOrRd颜色映射
plt.colorbar()  # 添加颜色条
plt.title('Value Heatmap Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()

在这个示例中,我们执行了以下步骤:

  1. 导入必要的库,包括 NumPy 和 Matplotlib。
  2. 创建一个随机的 10x10 数据矩阵,你可以用自己的数据替代这个示例数据。
  3. 使用 imshow 函数来显示值热力图。参数 cmap 用于选择颜色映射,这里使用了 'YlOrRd' 颜色映射,但你可以根据需要选择其他颜色映射。aspect='auto' 参数用于自动调整图像的纵横比以适应数据。
  4. 使用 colorbar() 函数添加颜色条,以便查看颜色与数值之间的对应关系。
  5. 添加标题、坐标轴标签等可选的图形元素。
  6. 最后,使用 show() 函数来显示热力图。

4 密度热力图(Density Heatmap)

通常用来表示数据点的集中程度和分布密度,较高的密度区域会显示为较深的颜色,而较低的密度区域则显示为较浅的颜色。以下是一个使用 Matplotlib 创建密度热力图的示例和代码: 

import numpy as np
import matplotlib.pyplot as plt# 创建示例数据
x = np.random.randn(1000)  # 随机生成1000个数据点
y = np.random.randn(1000)# 创建密度热力图
plt.hist2d(x, y, bins=(50, 50), cmap='Blues')
plt.colorbar()  # 添加颜色条
plt.title('Density Heatmap Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()

在这个示例中,我们执行了以下步骤:

  1. 导入必要的库,包括 NumPy 和 Matplotlib。
  2. 创建两个随机数据数组 xy,这些数据点将用于创建密度热力图。
  3. 使用 hist2d 函数来创建密度热力图。参数 xy 是数据点的坐标,bins 参数用于指定在 x 和 y 方向上的直方图箱的数量。颜色映射使用 'Blues',你可以选择其他颜色映射。
  4. 使用 colorbar() 函数添加颜色条,以便查看颜色与密度之间的对应关系。
  5. 添加标题、坐标轴标签等可选的图形元素。
  6. 最后,使用 show() 函数来显示密度热力图。

5 时间热力图(Time Heatmap):

时间热力图将时间作为一个维度,用颜色的强度表示特定时间段内的某种事件或指标的变化趋势。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd# 创建示例数据
date_rng = pd.date_range(start='2023-01-01', end='2023-12-31', freq='D')
data = np.random.rand(len(date_rng), 24)  # 每天24小时的随机数据# 创建时间热力图
plt.imshow(data, cmap='YlGnBu', aspect='auto')
plt.colorbar()  # 添加颜色条
plt.title('Time Heatmap Example')
plt.xlabel('Hour of the Day')
plt.ylabel('Date')
plt.show()

 

6 空间热力图(Spatial Heatmap)

通常用于表示地理区域内的数据分布情况,其中颜色的强度表示数据的集中程度。

在这里,展示如何使用 Matplotlib 创建一个基本的空间热力图示例,其中我们将使用随机生成的地理坐标和值来演示。 

import numpy as np
import matplotlib.pyplot as plt# 创建示例数据
np.random.seed(0)  # 设置随机种子以确保结果可重复
num_points = 100  # 生成100个数据点
latitude = np.random.uniform(37.0, 42.0, num_points)  # 随机生成纬度坐标
longitude = np.random.uniform(-120.0, -115.0, num_points)  # 随机生成经度坐标
values = np.random.uniform(0, 1, num_points)  # 为每个点生成随机值# 创建空间热力图
plt.scatter(longitude, latitude, c=values, cmap='viridis', s=100)
plt.colorbar(label='Value')
plt.title('Spatial Heatmap Example')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()

 

在这个示例中,我们执行了以下步骤:

  1. 我们使用 NumPy 生成了100个随机的地理坐标点,包括纬度(latitude)和经度(longitude)坐标。
  2. 对于每个点,我们生成了一个随机的值(在0到1之间),这将用于表示数据点的强度。
  3. 使用 plt.scatter 函数绘制散点图,其中 c 参数表示颜色,我们使用 'viridis' 颜色映射来表示数据值的不同强度。
  4. 我们添加了颜色条(colorbar)以解释颜色与数值之间的关系。
  5. 添加标题和坐标轴标签以增强图形的可读性。

7 渐变热力图(Gradient Heatmap)

        渐变热力图(Gradient Heatmap)用平滑的颜色过渡来表示数值或密度的变化程度。

        以下是使用 Matplotlib 创建一个简单的渐变热力图示例,其中我们将使用 NumPy 生成一个二维的数值数据并将其可视化。

import numpy as np
import matplotlib.pyplot as plt# 创建示例数据
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)  # 这里使用一个简单的二维函数作为示例数据# 创建渐变热力图
plt.contourf(X, Y, Z, cmap='coolwarm', levels=20)
plt.colorbar(label='Value')
plt.title('Gradient Heatmap Example')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

在这个示例中,我们执行了以下步骤:

  1. 使用 NumPy 创建了一个网格点 (X, Y),其中 XY 分别是 xy 值的网格。
  2. 我们定义了一个简单的二维函数 Z,在这个示例中,我们使用了 sin(X) + cos(Y) 作为示例函数。
  3. 使用 plt.contourf 函数创建渐变热力图。我们使用 'coolwarm' 颜色映射来表示数值变化,levels 参数指定了渐变的级别数量。
  4. 我们添加了颜色条以解释颜色与数值之间的关系。
  5. 添加了标题和坐标轴标签以提高图形的可读性。

这个示例生成了一个渐变热力图,其中颜色的渐变表示数值的变化程度。你可以将示例数据替换为你自己的二维数据,以生成符合你需求的渐变热力图。

8 3D热力图

        通常使用密度分布来表示数据的三维分布。以下是一个使用Matplotlib创建3D密度热力图的示例,其中我们将使用NumPy生成数据并可视化它:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 创建示例数据
np.random.seed(0)
x = np.random.randn(1000)
y = np.random.randn(1000)# 创建3D图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 创建3D密度热力图
hist, xedges, yedges = np.histogram2d(x, y, bins=40)
xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25, indexing="ij")
xpos = xpos.ravel()
ypos = ypos.ravel()
zpos = 0
dx = dy = 0.5
dz = hist.ravel()ax.bar3d(xpos, ypos, zpos, dx, dy, dz, cmap='viridis')# 设置坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Density')# 显示图形
plt.show()

 

在这个示例中,我们执行了以下步骤:

  1. 我们使用NumPy生成了两个随机数据数组xy,共1000个数据点,这些数据点将用于创建3D密度热力图。

  2. 创建了一个包含3D子图的图形fig

  3. 使用histogram2d函数生成xy的二维直方图,将数据点分成40个箱子。

  4. 使用bar3d函数在3D子图中绘制3D密度热力图。我们使用'viridis'颜色映射来表示密度的变化。

  5. 设置了坐标轴标签。

  6. 最后,使用plt.show()函数来显示3D密度热力图。

这个示例生成了一个3D密度热力图,其中颜色深度表示数据点的密度分布。你可以将示例数据替换为自己的数据,以生成符合你需求的3D密度热力图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红黑树Java实现

文章目录 红黑树1. 概念性质2. 红黑树节点定义3. 红黑树的插入情况1情况2情况3其它细节问题插入代码实现 4. 红黑树的验证5.性能分析 红黑树 1. 概念性质 红黑树也是一种二插搜索树,每一个节点上比普通二插搜索树都增加了一个存储位置表示节点的颜色,可…

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…

openssl升级

参考 https://www.cnblogs.com/shareHistory/p/15850707.html 下载并安装依赖 wget https://www.openssl.org/source/openssl-3.0.5.tar.gz yum -y install perl-IPC-Cmd编译安装 ./config -Wl,-rpath/usr/local/openssl/lib -fPIC --prefix/usr/local/openssl --openssldir…

FPGA的主流技术与市场表现方面的调研报告

撰写简单的FPGA的主流技术与市场表现方面的调研报告,表达自己的认知和发展展望,500字,图片,表格除外 FPGA简介 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,是在PAL &#xff08…

maven解决报错:Could not transfer artifact net.bytebuddy:byte-buddy:jar:1.7.9

setting.xml使用如下配置 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…

【软件测试】测试中的风险有哪些?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; ​那么到底都有哪些风险要注意呢?如何解决呢?另外这些风险如何在计划中写明呢&#xff0c;不会写“张三…

苏宁滑块验证

网址&#xff1a;https://passport.suning.com/ids/login总结一下&#xff0c;别被他的表面现象给骗了&#xff0c;这玩意儿&#xff0c;个人认为&#xff0c;腾讯的都没法跟他比&#xff01;&#xff01;&#xff01; 难点&#xff1a;动态混淆&#xff0c;vmp&#xff0c;图片…

【每日一题】ARC158B - Sum-Product Ratio | 数学 | 中等

题目内容 原题链接 给定一个长度为 n n n 的数组&#xff0c;选择三个下标不同元素 x , y , z x,y,z x,y,z&#xff0c;问 x y z x y z \frac{xyz}{xyz} xyzxyz​ 的最大值和最小值是多少。 数据范围 1 ≤ n ≤ 2 ⋅ 1 0 5 1\leq n\leq 2\cdot 10^5 1≤n≤2⋅105 − 1 0 …

Django — 配置和路由

目录 一、项目的配置二、静态文件的配置三、路由1、概述2、代码实现2.1、后台管理页面2.2、子应用自定义页面2.3、子路由 3、路由解析顺序3.1、请求到达 Django 应用程序3.2、Django 根据 URL 路径查找匹配的路由3.3、第一个匹配的 URL 模式被选中3.4、相关联的视图函数被调用3…

flask中的跨域处理-方法二不使用第三方库

方法1(第三方库) pip install flask-cors from flask import Flask from flask_cors import CORSapp = Flask(__name__) CORS(app, resources={r"/api/*": {"origins": ["http://localhost:63342", "http://localhost:63345"]}})方…

Java由浅入深理解线程池设计和原理

目录 1 线程1.1 什么是线程&#xff1f;什么是进程&#xff1f;1.2 java中线程的实现方式有几种?1.3 线程的生命周期是什么&#xff1f; 2 线程存在的问题2.1 一个线程只能执行一个任务2.2 线程执行完后销毁,无法复用2.3 线程过多,导致JVM宕机 3 初识线程池3.1 了解J.U.C3.2 线…

追光者的梦

追光者的梦 鸿蒙中我茫然于世&#xff0c;你是钻入我心里的那束光 我所有的梦想都是和你热烈的拥抱 没有追到你时&#xff0c;我一直在路上 追到你时&#xff0c;我的人生就被你点燃 ——致所有的追光者 合肥先进光源国家重大科技基础设施项目及配套工程启动会刚开过&…

实现多线程的4种方式

实现多线程的4种方式 使用实现多线程有四种方式&#xff1a; 继承 Thread 类&#xff1b; 实现 Runnable 接口&#xff1b; 使用 Callable 和 FutureTask 实现有返回值的多线程&#xff1b; 使用 ExecutorService 和 Executors 工具类实现线程池(如果需要线程的返回值&…

JS获取经纬度, 并根据经纬度得到城市信息

在JavaScript中&#xff0c;获取经纬度通常需要使用定位服务&#xff0c;比如HTML5的Geolocation API。然而拿到坐标后&#xff0c;将经纬度转换为城市信息&#xff0c;则需要使用逆地理编码服务接口&#xff0c;比如百度或者高德的 API, 但是他们收费都很高, 我们可以使用一些…

【matlab程序】海图单位的度分格式

【matlab程序】海图单位的度分格式 海洋与大气科学 点击蓝字 关注我们 思路来源 阅读文献&#xff1a; 文献中图片的横纵坐标出现半分画法&#xff1a; 半分画法&#xff0c;甚至更为精细的坐标轴在小区域研究中更为重要。 图片 图片 01 一度间隔 图片 代码 % 01 运…

2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望

目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…

Ubuntu中无法git clone,一直连接不上的解决方法

我的环境 我的电脑是Windows的&#xff0c;CFW也装在Windows中。 解决思路 其实能ping通google就能git clone。 解决步骤 在CFW主页中安装服务模式打开TUN模式重启Ubuntu能ping通了

基因组注释(Annotation)

基因组组装完成后&#xff0c;或者是完成了草图&#xff0c;就不可避免遇到一个问题&#xff0c;需要对基因组序列进行注释。注释之前首先得构建基因模型&#xff0c;有三种策略&#xff1a; 从头注释(de novo prediction)&#xff1a;通过已有的概率模型来预测基因结构&#…

Java实验案例(一)

目录 案例一&#xff1a;买飞机票 案例二&#xff1a;开发验证码 案例三&#xff1a;评委打分 案例四&#xff1a;数字加密 案例五&#xff1a;数组拷贝 案例六&#xff1a;抢红包 案例七&#xff1a;找素数的三种方法 案例八&#xff1a;打印乘法口诀表 案例九&#x…

【360秋招笔试】编程题第二题:修改Web(C++的AC解法)

题目 先看样例&#xff1a; 6 1612*3 7*8*954 11122 4*6222 15712 11115n表示输入n行数据&#xff0c;下面每一行数据表示一个等式。如果能满足 在等式中添加任意一个数字 使得等式两边成立&#xff0c;则输出Yes&#xff0c;否则输出No。如果等式本来就相等&#xff0c;也输…