❤【纯干货】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/29915.shtml

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

相关文章

vue脚手架 笔记08

目录 01 vuex的四大辅助函数的使用 mapState使用方式: mapMutations的使用方式: mapGetters的使用方式: mapActions的使用方式: 02 vuex中的模块化 vuex的modules模块化的使用: modules模块化的使用: 01 vuex的四大辅助函数的使用 帮助我们把vuex里面的数据映射到当前组件里…

资料合集|SmartX 虚拟化特性解读、迁移实践与用户案例

面对 VMware 的种种变动,不少用户开始探索新的出路。但对于虚拟化平台这一核心组件的替换,一些用户仍处于观望状态,主要是出于以下担忧: 新的虚拟化平台是否具备与 VMware 虚拟化相当的能力?替代 VMware 虚拟化平台涉…

【微服务网关——负载均衡】

1. 四大负载均衡策略 随机负载 随机挑选目标服务器IP 轮询负载 ABC三台服务器,ABCABC依次轮询 加权负载 给目标设置访问权重,按照权重轮询 一致性hash负载 请求固定URL访问指定IP 2.随机负载均衡 可以通过random函数来随机选择一个ip 2.1 代码实现 …

陶建辉入选 2023 年度“中国物联网行业卓越人物榜”

在这个技术飞速发展的时代,物联网行业作为推动社会进步的重要力量,正在不断地演化和革新。近日,中国智联网生态大会暨“2023 物联之星”年度榜单颁奖典礼在上海浦东举行。现场公布了拥有物联网行业奥斯卡奖之称的 ——“物联之星 2023 中国物…

「51媒体」上海电视台媒体邀约专访怎么做?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 电视台专访通常会对一些热门话题,行业热点,或者新闻焦点,邀请嘉宾进行访谈。企业如果想要在电视台进行专访,通常要有合适的时机和选题。 下…

【面试干货】Java方法重写的规则

【面试干货】Java方法重写的规则 1、Java方法重写的规则2、示例代码3、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,方法重写(Overriding)是面向对象编程中的一个核心概念,它…

结硬寨:联想服务器的向前之路

曾国藩曾经将自己的战略思想,总结为“结硬寨,打呆仗”。 这种稳健的策略,往往在真实的产业发展中能收获奇效。我们喜欢听颠覆性的产业创新,却往往忽视稳扎稳打,把每一个优势聚集起来形成整体优势,可能才是市…

在Python项目中自定义日志工具

在Python项目中自定义日志工具 日志记录是软件开发中的一个关键部分,它可以帮助开发人员调试代码、监控运行状况以及记录重要事件。在Python中,logging 模块提供了强大的日志记录功能。本文将介绍如何创建一个日志工具,使其能够同时将日志输…

通义灵码使用笔记

通义灵码使用笔记 通义灵码使用指南代码智能生成⾏级/函数级实时续写自然语言生成代码生成单元测试、代码优化建议、代码注释、代码解释选中代码后,一键触发功能 通义灵码使用指南 通义灵码是一种智能编码助手,可以在你进行编码工作时,为你提…

【ajax基础02】URL详解

目录 一:什么是URL 二:URL组成 协议 ​编辑 域名(在url中必须写) 资源路径 三:URL查询参数 定义: 语法格式: 如何利用axios实现特定数据查询: 语法格式: 案例&#xff1a…

springboot-自动配置

一、自动配置的原理 Spring Boot 的自动配置基于以下几个核心概念: 条件注解 (Conditional Annotations):Conditional 系列注解用于根据特定条件判断是否加载某个配置类或 Bean。 自动配置类 (Auto-configuration Classes):这些类通过 META-…

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢 强耐水UV胶水的粘接强度与普通UV胶水相比,具有显著的优势。以下是详细的比较和归纳: 固化方式: 两者都是通过紫外线(UV)照射进行固化,但强耐水UV…

2024年全球架构师峰会(ArchSummit深圳站)

前言 ArchSummit全球架构师峰会是极客邦科技旗下InfoQ中国团队推出的重点面向高端技术管理者、架构师的技术会议,54%参会者拥有8年以上工作经验。 ArchSummit聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的…

程序员学CFA——经济学(三)

经济学(三) 总产出、价格水平和经济增长总产出、总收入和总支出总产出、总收入和总支出的概念及联系国内生产总值国内生产总值(GDP)的定义GDP的衡量方法GDP的相关概念GDP的核算方法 总需求、总供给和市场均衡总需求总需求及其假设…

React.FC`<ChildComponentProps>`解释

代码场景 ParentComponent.tsx import React, { useState } from react; import ChildComponent from ./ChildComponent;function ParentComponent() {const [childData, setChildData] useState<string>();const handleChildData (data: string) > { // 可以直接…

MyBatis的缓存功能总结

MyBatis的缓存功能总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 缓存概述 MyBatis的缓存功能是为了提高数据库访问效率而设计的。通过缓存&#xff…

Netty中Reactor线程的运行逻辑

Netty中的Reactor线程主要干三件事情&#xff1a; 轮询注册在Reactor上的所有Channel感兴趣的IO就绪事件。 处理Channel上的IO就绪事件。 执行Netty中的异步任务。 正是这三个部分组成了Reactor的运行框架&#xff0c;那么我们现在来看下这个运行框架具体是怎么运转的~~ 这…

【八股系列】怎么处理项目中的异常捕获行为?(js)

文章目录 1. 基本的try-catch-finally结构2. 全局异常处理3. 自定义错误类4. 使用Promise的catch5. 异步函数中的try-catch6. 记录日志7. 用户友好的错误提示 在 JavaScript项目中&#xff0c;合理地处理异常捕获对于提高程序的健壮性和用户体验至关重要。以下是一些关键实践和…

设计模式-结构型-06-桥接模式

1、传统方式解决手机操作问题 现在对不同手机类型的不同品牌实现操作编程&#xff08;比如&#xff1a;开机、关机、上网&#xff0c;打电话等&#xff09;&#xff0c;如图&#xff1a; UML 类图 问题分析 扩展性问题&#xff08;类爆炸&#xff09;&#xff1a;如果我们再…

shell脚本内使用ifconfig命令

脚本在定时任务中没有取出ip&#xff0c;说明ifconfig命令没有执行成功&#xff0c;就是没有找到ifconfig&#xff0c;与PATH环境变量有关&#xff0c;PATH环境变量在/etc/profile文件中设置&#xff0c;而定时任务却是以nologin方式调用脚本&#xff0c;不会加载/etc/profile,…