【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.rhkb.cn/news/238281.html

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

相关文章

嘴尚绝卤味:健康卤味风潮来袭,引领卤味市场新变革!

随着生活水平的提高,人们对食品的需求已不再满足于基本的口感和饱腹,健康、营养成为越来越多人关注的焦点。在这种背景下,健康卤味理念应运而生,并迅速在卤味市场引发了一场深刻的变革。 健康卤味理念强调选用优质、健康的食材&am…

SpringBoot3 WebFlux 可观测最佳实践

前言 链路追踪是可观测性软件系统的一个非常好的工具。它使开发人员能够了解应用程序中和应用程序之间不同交互发生的时间、地点和方式。同时让观测复杂的软件系统变得更加容易。 从Spring Boot 3开始,Spring Boot 中用于链路追踪的旧 Spring Cloud Sleuth 解决方…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型,并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类,从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料,希望能对你有所帮助。 封面图片: Dalle3 …

docker/华为云cce 部署nacos 2.3.0 集群模式

镜像地址 https://hub.docker.com/r/nacos/nacos-server 版本 nacos/nacos-server:v2.3.0-slim 关键环境变量 使用mysql数据源 变量值备注MODEcluster启用集群模式MYSQL_SERVICE_DB_NAME数据库名MYSQL_SERVICE_USER数据库用户名MYSQL_SERVICE_PASSWORD数据库密码SPRING_D…

WPF 布局

了解 WPF中所有布局如下,我们一一尝试实现,本文档主要以图形化的形式展示每个布局的功能。 布局: Border、 BulletDecorator、 Canvas、 DockPanel、 Expander、 Grid、 GridView、 GridSplitter、 GroupBox、 Panel、 ResizeGrip、 Separat…

API设计:从基础到最佳实践

1*vWvkkgG6uvgmJT8GkId98A.png 在这次深入探讨中,我们将深入了解API设计,从基础知识开始,逐步进阶到定义出色API的最佳实践。 作为开发者,你可能对许多这些概念很熟悉,但我将提供详细的解释,以加深你的理解…

13、Redis高频面试题

1、项目中为什么用Redis 我们项目中之所以选择Redis,主要是因为Redis有下面这些优点: 操作速度快:Redis的数据都保存在内存中,相比于其它硬盘类的存储,速度要快很多数据类型丰富:Redis支持 string&#x…

【题解】—— 每日一道题目栏

2024.1 【题解】—— LeetCode一周小结1 1. 1599. 经营摩天轮的最大利润 2. 466. 统计重复个数 3. 2487. 从链表中移除节点 4. 2397. 被列覆盖的最多行数 5. 1944. 队列中可以看到的人数 6. 2807. 在链表中插入最大公约数 7. 383. 赎金信 【题解】—— LeetCode一周小…

易安联参与制定的《面向云计算的零信任体系》行业标准即将实施

中华人民共和国工业和信息化部公告2023年第38号文件正式发布行业标准:YD/T 4598.2-2023《面向云计算的零信任体系 第2部分:关键能力要求》及YD/T 4598.3-2023《面向云计算的零信任体系 第3部分:安全访问服务边缘能力要求》,并于20…

代码随想录 Leetcode242. 有效的字母异位词

题目&#xff1a; 代码&#xff08;首刷看解析 2024年1月14日&#xff09;&#xff1a; class Solution { public:bool isAnagram(string s, string t) {int hash[26] {0};for(int i 0; i < s.size(); i) {hash[s[i] - a];}for(int i 0; i < t.size(); i) {hash[t[i]…

【零基础入门Python数据分析】Anaconda3 JupyterNotebookseaborn版

目录 一、安装环境 python介绍 anaconda介绍 jupyter notebook介绍 anaconda3 环境安装 解决JuPyter500&#xff1a;Internal Server Error问题-CSDN博客 Jupyter notebook快捷键操作大全 二、Python基础入门 数据类型与变量 数据类型 变量及赋值 布尔类型与逻辑运算…

【2024】OAK智能深度相机校准教程

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

求幸存数之和 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 给一个正整数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1 的数字,该数被敲出,并从该点起跳,以此类推,直到幸存left个数为止。…

212. 单词搜索 II(字典树的另一种类型)

大致思路是&#xff1a; 根据words列表建立字典树&#xff0c;其中注意在单词末尾&#xff0c;将原来的isEnd变量换成存储这个单词的变量&#xff0c;方便存储到ans中&#xff0c;另外&#xff0c;字典树的字节点由原来的Trie数组变为hashmap&#xff0c;方便检索字母。 建立…

《DAMA数据管理知识体系指南》05—第5章 数据建模和设计 知识点记录

第5章 数据建模和设计 5.1 引言 1.数据建模概要&#xff1a; 1&#xff09;本章将描述数据模型的用途、数据建模中的基本概念和常用词汇以及数据建模的目标和原则。本章将使用一组与教育相关的数据作为案例来说明用各种数据建模的方法&#xff0c;并介绍它们之间的差异。 2&a…

flutter 文件下载及存储路径

flutter 文件下载及存储路径 前言一、下载进度条二、文件路径二、文件上传总结 前言 日常开发中&#xff0c;经常会遇到下载文件的功能&#xff0c;往往我们在需要保存文件的路径上去调试&#xff0c;比如Android中的路径&#xff0c;有些会报错在SD卡中&#xff0c;但是有些手…

【REST2SQL】05 GO 操作 达梦 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 信创要求用国产数据库&#xff0c;刚好有项目用的达梦&#xff0c;研究一下go如何操作达梦数据库 1 准备工作 1.1 安…

第三次面试总结 - 吉云集团 - 全栈开发

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ&#xff1b;) 专栏 —— 本人真实面经&#xff0c;更多真实面试经验&#xff0c;中大厂面试总结等您挖掘 目录 总结&#xff08;非详细&#xff09; 面试内…

常见TCP和UDP端口号

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

SV-7041T 30W网络有源音箱校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱

SV-7041T 30W网络有源音箱 校园教室广播音箱&#xff0c;商场广播音箱&#xff0c;会议广播音箱&#xff0c;酒店广播音箱&#xff0c;工厂办公室广播音箱 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将…