【Python数据可视化】matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图

文章传送门

Python 数据可视化
matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图
matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值
matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果
matplotlib之设置子图:绘制子图、子图共享x轴坐标
matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图
matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

目录

  • 简述 / 前言
  • 1. 散点图
  • 2. 热力图
  • 3. 等值线图
  • 4. 极坐标图

简述 / 前言

前面介绍了一些常用技巧和常见的图形(折线图、柱状图(条形图)、饼图和直方图),这篇分享一下如何绘制一些高级图形:散点图、热力图、等值线图、极坐标图。


1. 散点图

关键方法:.scatter(),需要搭配 matplotlib.pyplot.subplots 一起使用,因为需要创建 figure 对象。

  • 普通散点图一般用法:.scatter(l_x, l_y, s=s, alpha=alpha, color=color)

  • 频率散点图一般用法:.scatter(l_x, l_y, s=quantities * 100, alpha=alpha, color=color)

  • 各参数含义如下:

    参数含义
    l_x散点在x轴的位置
    l_y散点在y轴的位置
    quantities统计量(当要显示每个点的频率时使用)
    s每个散点的大小(普通的散点图s可以为固定值,如果要显示每个点的频率,可以修改此处)
    alpha透明度,取值范围:[0, 1],值越小越透明
    color每个散点的颜色
  • 普通散点图
    示例:

    import matplotlib.pyplot as plt
    import numpy as np# 新建figure对象
    fig, ax = plt.subplots()
    x = np.random.randn(100)
    y = np.random.randn(100)
    ax.scatter(x, y, s=50, alpha=0.7, color='g')
    # 设置标题
    plt.title("普通散点图", fontdict={'fontname': 'FangSong', 'fontsize': 'xx-large', 'fontweight': 'bold'})
    plt.xlabel('x轴', fontdict={'fontname': 'FangSong', 'fontsize': 20})
    plt.ylabel('y轴', fontdict={'fontname': 'FangSong', 'fontsize': 20})
    plt.grid()
    plt.show()
    

    输出:
    请添加图片描述

  • 频率散点图
    示例:

    import matplotlib.pyplot as plt
    import numpy as np# 新建figure对象
    fig, ax = plt.subplots()
    ages = np.arange(18, 28, 1)
    papers = np.array([1, 5, 3, 7, 9, 18, 15, 3, 30, 35])
    quantities = np.array([2, 3, 5, 9, 3, 10, 15, 30, 22, 39])
    ax.scatter(ages, papers, s=quantities * 100, alpha=0.7, color='g')
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文
    # 设置标题
    plt.title("青少年完成的项目数量统计散点图", fontsize='xx-large', fontweight='bold')
    plt.xlabel('年龄')
    plt.ylabel('完成的项目数量')
    plt.grid()
    plt.show()
    

    输出:
    请添加图片描述

2. 热力图

  • 热力图
    • 关键方法:.inshow()

    • 一般用法:.inshow(data, cmap=cmap),各参数含义如下:

      参数含义
      data输入的数据
      cmap指定填充风格,有内置颜色,也可以自定义颜色,内置的风格有:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, inferno, inferno_r, jet, jet_r, magma, magma_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, turbo, turbo_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, winter, winter_r
    • 添加右侧颜色刻度表关键方法:.colorbar()

示例:

from matplotlib import pyplot as plt# 定义热图的横纵坐标
xLabel = ['class1', 'class2', 'class3', 'class4', 'class5']
yLabel = ['1月', '2月', '3月', '4月']
# 前4个月的盈利数据
data = [[12, 45, 94, 65, 32], [65, 64, 89, 12, 46], [32, 46, 97, 31, 33], [96, 84, 32, 79, 45]]
fig = plt.figure()
# 定义子图
ax = fig.add_subplot(111)
# 定义横纵坐标的刻度
ax.set_yticks(range(len(yLabel)))
ax.set_yticklabels(yLabel)
ax.set_xticks(range(len(xLabel)))
ax.set_xticklabels(xLabel)
# 选择颜色的填充风格,这里选择 summer_r
im = ax.imshow(data, cmap='summer_r')
# 添加颜色刻度条
plt.colorbar(im)
# 添加中文标题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("各部门盈利情况")
plt.xlabel('部门名称')
plt.ylabel('盈利')
plt.show()

输出:
请添加图片描述

  • 另外一种常用方法:.inshow(data, cmap=cmap, interpolation=interpolation),各参数含义如下(datacmap 含义和上面一样,这里只介绍 interpolation):
    参数含义
    interpolation插值方法,用于控制图像的平滑程度和细节程度。可以选择:antialiased, none, nearest, bilinear, bicubic, spline16, spline36, hanning, hamming, hermite, kaiser, quadric, catrom, gaussian, bessel, mitchell, sinc, lanczos, blackman

示例:

from matplotlib import pyplot as plt# 定义热图的横纵坐标
xLabel = ['class1', 'class2', 'class3', 'class4', 'class5']
yLabel = ['1月', '2月', '3月', '4月']
# 前4个月的盈利数据
data = [[12, 45, 94, 65, 32], [65, 64, 89, 12, 46], [32, 46, 97, 31, 33], [96, 84, 32, 79, 45]]
fig = plt.figure()
# 定义子图
ax = fig.add_subplot(111)
# 定义横纵坐标的刻度
ax.set_yticks(range(len(yLabel)))
ax.set_yticklabels(yLabel)
ax.set_xticks(range(len(xLabel)))
ax.set_xticklabels(xLabel)
# 选择颜色的填充风格,这里选择hot
im = ax.imshow(data, cmap='summer_r', interpolation='bicubic')
# 添加颜色刻度条
plt.colorbar(im)
# 添加中文标题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("各部门盈利情况")
plt.xlabel('部门名称')
plt.ylabel('盈利')
plt.show()

输出:
请添加图片描述

3. 等值线图

生成等值线图关键方法:.contour()

但是在生成等值线图前,我们需要拿到一圈圈的数据,这时候会用到 .meshgrid() 方法!

一般用法:.contour(gridX, gridY, Z, cmap=cmap),各参数含义如下:

参数含义
gridX, gridY一圈圈网格线数据
Z要绘制等值线的函数
cmap指定填充风格,有内置颜色(具体内置样式见上面),也可以自定义颜色

示例(画出 Z = x*x + y*y 的等值线图):

import numpy as np
import matplotlib.pyplot as pltx = np.arange(-20, 20, 0.1)
y = np.arange(-20, 20, 0.1)
# 用两个坐标轴上的点在平面上画网格
gridX, gridY = np.meshgrid(x, y)
# 定义绘制等值线的函数
Z = gridX * gridX + gridY * gridY
# 画等值线,用渐变色来区分
contour = plt.contour(gridX, gridY, Z, cmap='summer_r')
# 标记等值线
plt.clabel(contour, inline=1)
plt.show()

输出:
请添加图片描述

4. 极坐标图

关键参数:projection='polar'

示例:

import matplotlib.pyplot as plt
import numpy as nptheta = np.arange(0, 2*np.pi, 0.01)
ax = plt.subplot(111, projection='polar')
ax.plot(theta, theta/10, linestyle='-', lw=5, color='g')
plt.show()

输出:
请添加图片描述

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

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

相关文章

全自动洗衣机什么牌子好?内衣洗衣机便宜好用的牌子推荐

随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高度除菌,而小小的内…

基于python的深度神经网络原理与实践

理论基础 什么是神经网络 我们知道深度学习是机器学习的一个分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。而深度神经网络又是深度学习的一个分支,它在 wikipedia 上的解释如下: 深度神经网络(Deep N…

Vue中keep-alive缓存的详解(深度理解)

文章目录 一、Keep-alive 是什么二、使用场景三、原理分析四、思考题:缓存后如何获取数据beforeRouteEnteractived 参考文献 一、Keep-alive 是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM ke…

四搭建dockerhub私有仓库

搭建dockerhub私有仓库 很多场景下,我们需使用私有仓库管理Docker镜像。相比Docker Hub,私有仓库有以下优势: 节省带宽,对于私有仓库中已有的镜像,无需从Docker Hub下载,只需从私有仓库中下载即可&#x…

MySQL篇—通过Clone插件进行远程克隆数据(第三篇,总共三篇)

在介绍 Clone 最终篇之前,我们先简要回顾一下前面所讲的内容。在第一篇中,我们探讨了 Clone 的用途、使用的前提条件、存在的限制,以及它的备份原理。Clone 是一种用于复制和备份数据的工具,它能够快速高效地创建数据的精确副本。…

Spark原理——逻辑执行图

逻辑执行图 明确逻辑计划的边界 在 Action 调用之前,会生成一系列的RDD,这些RDD之间的关系,其实就是整个逻辑计划 val conf new SparkConf().setMaster("local[6]").setAppName("wordCount_source") val sc new SparkContext(conf)v…

JVM篇--Java内存区域高频面试题

java内存区域 1 Java 堆空间及 GC? 首先我们要知道java堆空间的产生过程: 即当通过java命令启动java进程的时候,就会为它分配内存,而分配内存的一部分就会用于创建堆空间,而当程序中创建对象的时候 就会从堆空间来分…

2024--Django平台开发-Redis集群(十一)

内容回顾 主从复制。 哨兵:实例启动了,哨兵节点没启动,Python通过redis-py连接报错。一定要确保实例节点和哨兵节点都启动了。 搭建集群用的是虚拟机的多台centos服务器,你在跟着学习的时候,一定要全部都是虚拟机&am…

5.矩阵分析

矩阵分析 文章目录 矩阵分析一、方阵范数1.1 矩阵范数1.2 与矩阵乘积相容的矩阵范数【定义】自相容范数 / 方阵范数 1.3 与向量范数相容的矩阵范数【定义】矩阵范数与向量范数相容【定理】任意自相容范数必存在与它相容的向量范数 二、算子范数2.1 方阵的算子范数【定理】由向量…

PVE虚拟机安装qemu guest agent

pve虚拟机安装guest agent,使web平台可以直接显示虚拟机的ip,方便管理。 一、虚拟机需开启Qemu代理 首先,虚拟机需开启Qemu代理,需要关闭虚拟机再启动虚拟机并安装agent。网上有些文章说要把网卡配置为virtio,经测试是…

可协作植物管理工具HortusFox

什么是 HortusFox ? HortusFox 是一个自托管的协作植物管理系统,您可以在自己的环境中使用它来管理所有的植物。您可以添加植物,并附带各种详细信息和照片,并将它们分配到环境中的位置。系统提供了一个仪表板,显示所有…

小程序系列--6.全局配置

一. 全局配置文件及常用的配置项 二、window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样…

Git 使用与问题记录 二(公司快速上手版)

写在前面 记录自己学习的内容,方便后面忘记的时候查看。给像我一样的新手提供一点参考 正文 上一章已经安装好了Git,如何使用呢。我这里会分享两种办法,第一种是在VS2022中克隆代码,修改和提交;第二种是用命令提交。…

【计算机网络】TCP原理 | 可靠性机制分析(四)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 这里写目录标题 &#x1…

C函数详解 | 函数的作用、定义与声明、函数的调用、函数与指针

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

RISC-V是如何与X86、ARM三分天下

目录 1.行业CPU指令集格局 2.汽车中的RISC-V进展 2.1 国际进展 2.2 国内进展 3.小结 2023年3月2日,在平头哥牵头举办的玄铁RISC-V生态大会上,工程院院士倪光南表示,基于RISC-V模块化、可扩展、容易定制、不受垄断制约等优势,…

电商API接口|Javascript抓取京东、淘宝商品数据

“ 不知怎么建站?就找怎么建站! ” 背景: EDI许可证网站和ICP许可证网站需要有丰富的商品数据来应付EDI、ICP许可证下证审核。下面介绍的这种方法是我之前主要的抓取数据的方法,大概用了一年多。这几天又对这个方法进行了一些优…

11.云原生分布式数据库之TIDB

云原生专栏大纲 文章目录 为什么使用TIDB后端视角运维视角基础架构视角 TiDB Operator 简介软件版本要求部署tidbTIDB工具helm常用命令TIDB学习推荐资料 为什么使用TIDB 从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可…

学习Java API(二):基础知识点一文通✅

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读正则表达式正则表达式语法捕获组和分组matches 和 lookingAt 方法split方法r…

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…