❤【纯干货】Matplotlib总结,任何项目都用得到呦❤

 Matplotlib 在很多人眼里是无敌的存在,而且可以说是无敌的存在。

走过数据科学的路,路上必然有Matplotlib 的风景在你周围。

如果同一个项目,你的用了matplotlib 不仅有基本图形、定制化图形、多个坐标轴、3D绘图,还有动态交互绘图、绘制地图、绘制统计图表,甚至还有地图分布!那么谁的更吸引人呢?收藏备用,一定用的上!

Matplotlib是一个功能强大且广泛使用的数据可视化工具,特别适用于科学计算、数据分析和数据科学领域。

下面是关于 Matplotlib 的一些主要特点和组成部分的介绍:

1、图表类型:包括折线图、散点图、柱状图、饼图、等高线图、热图、直方图等。这使得使用者可以根据不同的数据和需求创建不同类型的可视化图表。

2、简单易用:Matplotlib 设计简单,容易上手。用户可以使用它的基础功能来创建简单的图表,同时也可以通过自定义配置和调整来创建高度定制化的图表。

3、面向对象的接口:Matplotlib 提供了一个面向对象的接口,允许用户以程序化的方式创建和修改图表。这种接口的优点是可以更灵活地控制图表的各个组成部分,如轴、标签、标题等。

4、多种输出格式:Matplotlib 支持将图表以多种格式保存,包括图像文件(如PNG、JPEG、SVG等)和交互式图表,使用户能够在不同的场景中分享和使用图表。

5、扩展性:Matplotlib 可以通过各种插件和扩展库进行扩展,以满足更高级的数据可视化需求。例如,Seaborn、Pandas 和 Plotly 都是建立在 Matplotlib 基础之上的库。

6、跨平台:Matplotlib 可以在多个操作系统上运行,包括 Windows、Linux 和 macOS,因此适用于各种开发环境。

本文将从绘制基本图形、定制化图形、多个坐标轴、3D绘图、动态交互绘图、绘制地图、绘制统计图表等等方面进行全方位介绍!

大家伙如果觉得还不错!可以点赞、收藏支持一下谢谢。

目录

1、绘制基本图形

2、定制化图形

3、支持多个坐标轴

4、3D绘图

5、动态交互绘图

6、绘制地图

7、绘制统计图表

最后


1、绘制基本图形

Matplotlib 可以绘制许多基本的图形,包括但不限于以下类型:

  1. 折线图(Line Plot):用于显示数据随时间或其他连续变量的变化趋势。

  2. 散点图(Scatter Plot):用于展示两个变量之间的关系,通常用于观察数据的分布和离群点。

  3. 柱状图(Bar Plot):用于比较不同类别的数据,通常用于展示离散数据的分布。

  4. 饼图(Pie Chart):用于表示数据的相对部分,展示各部分在整体中的比例。

  5. 直方图(Histogram):用于展示数据的分布情况,特别适用于连续数据的分布分析。

  6. 箱线图(Box Plot):用于显示数据的统计信息,包括中位数、上下四分位数和离群值等。

  7. 等高线图(Contour Plot):用于可视化二维数据集中的等高线,通常在地理信息系统和物理学领域中使用。

  8. 热图(Heatmap):用于显示数据的热度或相关性,通常以颜色编码方式表示数值。

下面演示一个直方图:

import numpy as np
import matplotlib.pyplot as plt# 生成大数据量(随机生成)
data = np.random.randn(100000)# 配置图形和颜色
plt.figure(figsize=(10, 6))  # 设置图形大小
plt.hist(data, bins=50, color='skyblue', edgecolor='black')  # 绘制直方图
plt.title('Histogram of Large Data')  # 设置标题
plt.xlabel('Value')  # 设置X轴标签
plt.ylabel('Frequency')  # 设置Y轴标签# 显示图形
plt.show()

上述代码创建了一个直方图,包括以下特点:

  • 使用 np.random.randn 生成了大量随机数据,模拟了大数据量。

  • 通过 plt.figure 来设置图形的大小。

  • 使用 plt.hist 创建直方图,配置了颜色为天蓝色 ('skyblue'),边缘颜色为黑色 ('black'),并设置了数据分组的数量 (bins)。

  • 添加了标题、X轴标签和Y轴标签。

  • 最后,通过 plt.show() 显示图形。

实际情况中,可以根据需要自定义图形的颜色、样式、标签等属性,以满足具体的可视化需求。

2、定制化图形

Matplotlib 提供了丰富的选项来自定义图形,包括颜色、线型、标签、标题和图例等。

下面演示如何使用 Matplotlib 定制化一个图形,分别单独调整这些属性。

我们绘制一个简单的折线图,并对其进行定制化:

import numpy as np
import matplotlib.pyplot as plt# 创建数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)# 创建图形
plt.figure(figsize=(10, 6))  # 设置图形大小# 绘制两个曲线,分别定制化颜色、线型、标签
plt.plot(x, y1, color='blue', linestyle='-', linewidth=2, label='Sine Wave')
plt.plot(x, y2, color='red', linestyle='--', linewidth=2, label='Cosine Wave')# 设置标题和坐标轴标签
plt.title('Customized Sine and Cosine Waves')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 添加图例,并设置位置、标题
plt.legend(loc='upper right', title='Legend')
plt.grid(True)  # 添加网格线# 注释一些特殊点
plt.annotate('Peak', xy=(np.pi / 2, 1), xytext=(np.pi / 2, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)
plt.annotate('Trough', xy=(3 * np.pi / 2, -1), xytext=(3 * np.pi / 2, -1.5),arrowprops=dict(facecolor='black', shrink=0.05),)# 设置坐标轴范围
plt.xlim(0, 2 * np.pi)
plt.ylim(-2, 2)# 显示图形
plt.show()

上述代码创建了一个折线图:

  • color='blue':设置折线的颜色为蓝色。

  • linestyle='--':设置折线的线型为虚线。

  • linewidth=2:设置折线的宽度为2。

  • label='Sine Wave':设置图例的标签为"Sine Wave"。

  • plt.titleplt.xlabelplt.ylabel 分别用于设置标题、X轴标签和Y轴标签。

  • plt.legend(loc='upper right'):添加图例并指定位置为右上角。

通过类似的方式,可以进一步定制化其他类型的图形,例如散点图、柱状图等,并根据需求调整颜色、线型、标签、标题和图例等属性。

Matplotlib 提供了丰富的选项,完全可以满足各种数据可视化需求。

3、支持多个坐标轴

Matplotlib是一个强大的Python数据可视化库,允许在同一个图中使用多个坐标轴,创建更加灵活和丰富的图形。

下面的示例中,创建一个包含主轴和次轴的复杂图形,展示Matplotlib中多个坐标轴的使用方法。

这个示例图形将包括一条正弦曲线和一条余弦曲线,它们使用不同的刻度和坐标轴。

import matplotlib.pyplot as plt
import numpy as np# 创建新的图形和主要坐标轴
fig, ax1 = plt.subplots()# 设置主要坐标轴的标签和标题
ax1.set_xlabel('X-axis')
ax1.set_ylabel('Primary Axis - Sine Curve', color='tab:blue')# 生成X轴数据
x = np.linspace(0, 10, 100)
# 生成正弦曲线的Y轴数据
y1 = np.sin(x)# 在主要坐标轴上绘制正弦曲线
ax1.plot(x, y1, color='tab:blue')# 创建共享相同X轴的次要坐标轴
ax2 = ax1.twinx()# 设置次要坐标轴的标签
ax2.set_ylabel('Secondary Axis - Cosine Curve', color='tab:red')# 生成余弦曲线的Y轴数据
y2 = np.cos(x)# 在次要坐标轴上绘制余弦曲线
ax2.plot(x, y2, color='tab:red')# 添加图例
ax1.legend(['Sine Curve'], loc='upper left')
ax2.legend(['Cosine Curve'], loc='upper right')# 添加网格线
ax1.grid()plt.title('Primary and Secondary Axis Example')
plt.show()

在这个示例中,首先创建了一个包含主轴(ax1)的Figure,并绘制了正弦曲线。

然后,我们创建了一个共享X轴的次轴(ax2),并在次轴上绘制了余弦曲线。

还对每个轴设置了标题、标签、颜色,并添加了图例和网格线,以增强图形的可读性。

这个示例展示了使用多个坐标轴创建的图形,实际使用中可以根据自己的需求进一步自定义和扩展图形。

4、3D绘图

Matplotlib是一个用于数据可视化的Python库,它支持绘制各种类型的图形,包括三维图形。

在Matplotlib中,比如可以使用mpl_toolkits.mplot3d模块来创建和绘制三维图形。

下面绘制一个简单的三维表面图,包括主轴和次轴,大家可以简单看下,明白其中的原理。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np# 创建一个三维图形的figure
fig = plt.figure()# 创建一个三维坐标轴
ax = fig.add_subplot(111, projection='3d')# 创建数据
# 这里我们以一个二维的网格为例,生成X和Y坐标,然后使用一个函数来计算Z坐标
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))# 绘制表面图
surf = ax.plot_surface(X, Y, Z, cmap='viridis')# 添加颜色条
fig.colorbar(surf)# 设置坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')# 显示图形
plt.show()

上述代码中,首先创建了一个figure,然后在该figure上创建了一个三维坐标轴ax

接下来,生成了X、Y坐标的网格数据,并使用一个简单的函数计算Z坐标。

然后,使用plot_surface方法绘制了表面图,并使用cmap参数设置了颜色映射。

最后,我们添加了颜色条和坐标轴标签,并显示了图形。

Matplotlib提供了丰富的功能和选项来创建各种类型的三维图形,以展示更复杂的数据关系。

5、动态交互绘图

Matplotlib还可以用于创建静态和动态交互图形。

这个知识点中,简要介绍如何使用Matplotlib创建一个允许用户进行交互操作的动态图形。

接下来,我们将使用Matplotlib的FuncAnimation类来创建一个动态图形,同时也会使用IPython的display函数来在Jupyter Notebook中实时显示动画。

这里绘制一个简单的正弦波,并且可以通过滑块来控制波的频率。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from IPython.display import display, clear_output# 创建一个空白图形
fig, ax = plt.subplots()# 定义正弦波的参数
x = np.linspace(0, 2 * np.pi, 1000)
freq = 1.0  # 初始频率# 初始绘制正弦波
line, = ax.plot(x, np.sin(freq * x))# 添加滑块用于控制频率
from ipywidgets import interactive
import ipywidgets as widgetsdef update(freq=1.0):# 更新正弦波的频率line.set_ydata(np.sin(freq * x))ax.set_ylim(-1.5, 1.5)ax.set_title(f'Sine Wave (Frequency: {freq:.2f} Hz)')display(fig)# 创建交互式滑块
slider = widgets.FloatSlider(value=1.0, min=0.1, max=5.0, step=0.1, description='Frequency')
interactive_plot = interactive(update, freq=slider)# 显示动态图形
display(interactive_plot)# 如果在Jupyter Notebook中使用,你会看到一个滑块,通过滑块可以调整正弦波的频率。

可以通过滑块来调整波的频率。

在Jupyter Notebook中执行这段代码,然后通过滑动滑块来与图形进行交互。

FuncAnimation类用于创建动画效果,interactive函数用于创建交互式滑块。

可以使用Matplotlib创建各种类型的交互式图形,以满足具体的需求。

6、绘制地图

Matplotlib 还可以绘制地图和等高线图。

如果要绘制一个复杂一些的等高线图,需要使用一些额外的库,比如 NumPy 和 Cartopy(用于地图投影)。

下面演示如何使用 Matplotlib、NumPy 和 Cartopy 来绘制一个地理高程的等高线图。

除了Matplotlib、NumPy,记得需要把 Cartopy 安装好。

pip install cartopy

然后,使用以下示例代码来绘制等高线图:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature# 创建一个地图投影
projection = ccrs.PlateCarree()# 创建一个 Matplotlib 图形窗口
fig, ax = plt.subplots(subplot_kw={'projection': projection}, figsize=(10, 8))# 创建一些示例数据(高程数据)
# 这里使用 NumPy 创建一个 2D 数组,表示高程值
# 你可以根据你的数据替换这些值
lats = np.linspace(-90, 90, 360)
lons = np.linspace(-180, 180, 720)
lons, lats = np.meshgrid(lons, lats)
elevation_data = np.sin(np.radians(lats)) * np.cos(np.radians(lons)) * 1000# 添加等高线图
contour = plt.contourf(lons, lats, elevation_data, levels=20, cmap='terrain')# 添加海岸线和国界线
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS, linestyle=':')# 添加颜色条
cbar = plt.colorbar(contour, ax=ax, shrink=0.8, orientation='horizontal')
cbar.set_label('Elevation (m)')# 设置地图范围(中国)
ax.set_extent([73, 135, 8, 53], crs=projection)# 添加标题
plt.title('Elevation Contour Map')# 显示图形
plt.show()

上述代码创建了一个基本的等高线图,使用了 Cartopy 进行地图投影和地图要素的添加,以及 Matplotlib 进行绘图和图形设置。

如果显示范围是世界地图的话,修改这里的设置即可!

# 设置地图范围
ax.set_extent([-180, 180, -90, 90], crs=projection)

7、绘制统计图表

Matplotlib 也可以绘制统计图表,包括箱线图(Box Plot),也称为盒图或箱型图。

箱线图是一种可视化数据分布的方式,它显示了数据的中位数、四分位数、异常值等信息。

下面是一个使用Matplotlib绘制箱线图的示例:

import matplotlib.pyplot as plt
import numpy as np# 创建示例数据
data = [np.random.normal(0, std, 100) for std in range(1, 5)]# 创建箱线图
plt.figure(figsize=(8, 6))
plt.boxplot(data, vert=True, patch_artist=True, labels=['A', 'B', 'C', 'D'], notch=True)# 添加标题和标签
plt.title('Box Plot Example')
plt.xlabel('Groups')
plt.ylabel('Values')# 自定义箱线的填充颜色
box_colors = ['lightblue', 'lightgreen', 'lightpink', 'lightyellow']
for box, color in zip(plt.boxplot(data, vert=True, patch_artist=True)['boxes'], box_colors):box.set_facecolor(color)# 添加网格线
plt.grid(True, linestyle='--', alpha=0.7)# 显示图形
plt.show()

首先创建了一些示例数据,其中包括四组具有不同标准差的正态分布数据。

然后,我们使用plt.boxplot函数绘制箱线图。参数解释如下:

  • data:包含数据的列表,每个列表对应一个箱线图。

  • vert:设置为True以垂直绘制箱线图。

  • patch_artist:设置为True以允许自定义箱线图的样式。

  • labels:用于指定每个箱线图的标签。

  • notch:设置为True以在箱线图的中位数处添加缺口。

还自定义了箱线的填充颜色,并添加了标题、标签和网格线。

这个示例中的箱线图是一个简单示例,你可以根据实际情况对其进行更复杂的定制。

最后

总的来说,Matplotlib 是一个强大而灵活的 Python 数据可视化工具,可用于创建各种类型的图表,帮助用户更好地理解和呈现数据。如果你需要在数据分析和可视化中使用 Python,Matplotlib 是一个不可或缺的工具之一。

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

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

相关文章

DNSlog环境搭建

阿里云域名公网VPS地址 购买阿里云域名后设置“自定义DNSHOST” DNS服务器填写ns1和ns2 如:ns1.aaa.com IP地址填写你的VPS地址 如:1.1.1.1 填写解析记录,一个A记录、一个NS记录 NS记录就是*.域名指向记录值ns1.域名 如:*.aaa…

服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程

服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程。 一、问题概述 服务器远程桌面无法连接是日常运维中常见的问题之一。它可能由多种原因造成,如网络问题、服务器配置错误、远程桌面服务未启动等。本教程将指导您逐步排查并解决这些问题。…

计算机算法中的数字表示法——原码、反码、补码

目录 1.前言2.研究数字表示法的意义3.数字表示法3.1 无符号整数3.2 有符号数值3.3 二进制补码(Twos Complement, 2C)3.4 二进制反码(也称作 1 的补码, Ones Complement, 1C)3.5 减 1 表示法(Diminished one System, D1)3.6 原码、反码、补码总结 1.前言 昨天有粉丝让我讲解下定…

手推车式电缆故障定位系统

武汉凯迪正大一体化电缆故障高压发生器用于测试各种型号的380V,600V,10kV,35kV,110kV,220kV,380kV电压等级的铜铝芯电力电缆、同轴通信电缆和市话电缆的各类故障,如电缆全长、开路、短路、断线、低阻故障、高阻故障、高阻泄露、高低阻抗接地、接地故障、铠装接地故障…

工控一体机7寸显示器电容触摸屏(YR07JK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 1.1 YR07JK介绍 YR07JK工控机是我公司推出的一款新型 Cortex-A17 架构,主频达1.8GHz、具有高性能低能耗的工业控制板卡…

甩掉接口文档烦恼!Spring Boot 集成 Knife4j,轻松玩转 API 可视化

一、引言:跟接口文档说拜拜 👋 作为一名 Java 开发者,你是否还在为编写繁琐的 API 文档而头疼?传统的手动编写方式不仅耗时费力,而且容易出错,难以维护。今天,我们就来介绍一款神器 Knife4j&am…

win10双网卡如何同时上内网和外网?

win10双网卡如何同时上内网和外网? Chapter1 win10双网卡如何同时上内网和外网?Chapter2 网络基础--win10双网卡设置成访问不同的网络 Chapter1 win10双网卡如何同时上内网和外网? 原文链接:https://www.jb51.net/os/win10/806585.html 场景:很多办…

【计算机毕业设计】388微信小程序足球赛事及队伍管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

QT7_视频知识点笔记_67_项目练习(页面以及对话框的切换,自定义数据类型,DB数据库类的自定义及使用)

视频项目:7----汽车销售管理系统(登录,品牌车管理,新车入库,销售统计图表)-----项目视频没有,代码也不全,更改项目练习:学生信息管理系统。 学生信息管理系统&#xff1…

大模型助力企业提效,九章云极DataCanvas公司联合腾讯搜狗输入法发布私有化解决方案

近日,九章云极DataCanvas公司与腾讯搜狗输入法的合作再次升级。在搜狗输入法开发者中心正式推出之际,九章云极DataCanvas公司作为搜狗输入法的首批开发合作伙伴,双方联合发布“企业知识管理助手”私有化解决方案。 “企业知识管理助手”整体私…

Facebook的魅力:数字时代的社交热点

在当今数字化时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中的巨头,一直以其独特的魅力吸引着全球数十亿用户。本文将深入探讨Facebook的魅力所在,以及它在数字时代的社交热点。 1. 社交网络的霸主&…

最新微信小程序面试题集结

1、微信小程序与H5的区别? 第一条是运行环境的不同 传统的HTML5的运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化&…

对于高速信号完整性,一块聊聊啊(17)

再来对前仿和后仿的仿真内容回顾一下: 从概念上有个根本的理解 前仿真又可以分为布局前仿真和布局后仿真。前者是在设计的最初阶段,建立和验证详细的电气拓扑结构并以此制定出详细的约束规则。后者是在布局完成的状态下,在布线过程中遇到的…

随机生成序列的某一排列

随机生成1~n的某一排列&#xff0c;要求生成每种可能的排列的概率相同 。 算法描述&#xff1a; 给定数值分别为1~n的序列a&#xff0c; 循环变量i从1到n&#xff0c;每次循环将a[i]与a[i]~a[n]中的随机某元素交换&#xff0c;最后a数组即为随机生成的某一排列。 #include <…

【2024】C/C++框架和库超全总结

本文分为2部分&#xff0c;第一部分&#xff1a;值得学习的C/C语言开源项目&#xff1b;第二部分是开源框架和库 粉丝福利&#xff0c; 免费领取C/C 开发学习资料包、技术视频/项目代码&#xff0c;1000道大厂面试题&#xff0c;内容包括&#xff08;C基础&#xff0c;网络编程…

MATLAB分类与判别模型算法:基于LVQ神经网络的乳腺肿瘤诊断分类程序【含Matlab源码 MX_003期】

说明 实现基于LVQ&#xff08;Learning Vector Quantization&#xff0c;学习向量量化&#xff09;神经网络的乳腺肿瘤诊断分类任务。LVQ是一种监督学习算法&#xff0c;通常用于模式识别和分类任务。 算法思路介绍&#xff1a; 导入数据&#xff1a; 加载名为"data.mat&…

2024下半年软考报名人数较去年减少,仅52.77万

2024下半年软考报名人数 2024年上半年软考考试共计报考52.77万人&#xff0c;其中&#xff0c;初级资格5.12万人、中级资格24.37万人、高级资格23.28万人。 根据往年报名人数&#xff0c;本次考试人数是减少了的&#xff0c;原因分析如下&#xff1a; 1、原来报名热门专业系…

C++的unique_ptr::release

释放给调用方返回的存储指针的所有权&#xff0c;并将存储的指针值设置为nullptr。 使用 release接管unique_ptr存储的原始指针的所有权。 调用方负责返回的指针的删除。 unique-ptr设置为空的默认构造状态。 在调用到release后&#xff0c;您可以将兼容类型的另一个指针分配到…

SSL证书申请需要多久?

SSL证书作为一种重要的网络安全工具&#xff0c;能够确保网站数据传输的安全&#xff0c;保护用户隐私和企业数据不受侵害。本文将详细介绍SSL证书的申请流程以及所需时间&#xff0c;帮助用户更好地规划和实施网络安全策略。 SSL证书&#xff0c;也称为TLS证书或HTTPS证书&am…

rest_asyncio 简化和管理异步python编程中的 REST API 调用

简介 rest_asyncio 是一个 Python 库,用于简化和管理异步编程中的 REST API 调用。它结合了 aiohttp 和 asyncio,提供了一种高效的方式来处理网络请求和响应,特别是在需要大量并发请求的场景下,例如爬虫、批量数据获取或实时数据处理。 以下是 rest_asyncio 的主要功能和…