如何在 Matplotlib 中绘制平滑曲线?2025年1月5日 | 阅读 5 分钟 折线图通常由一些分散的数据列表生成,导致图形看起来像连接点的直线,或者数据点非常密集,使得图表显得杂乱无章。 Matplotlib 的 pyplot.plot() 方法默认情况下通过直线连接数据中的两个相邻点来创建曲线,因此对于数据点范围较窄的数据,它不会生成平滑曲线。 示例程序说明 此 Python 程序利用 NumPy 和 Matplotlib 模块生成了一个基本的折线图。数据集中包含两个 NumPy 数组:'x' 表示 x 轴上的值,'y' 表示 y 轴上的值。然后,程序使用 Matplotlib 创建一条连接 (x, y) 对所指示点的曲线。生成的图表显示了带有“x”和“y”轴标签以及标题“使用给定点绘制的曲线”。通过图形化地表示 x 和 y 值之间的关系,该图表简要概述了数据集及其反映的趋势。 输出 ![]() 由于底层数据本身并不遵循一条平滑的直线,因此您可以看到绘制的曲线并不平滑。为了创建平滑曲线,我们首先将一条样条曲线拟合到数据上,然后利用这条曲线来确定间隔非常小的 x 值对应的 y 值。绘制这些间隔极小的数据点将得到一条平滑的曲线。 生成平滑曲线的技术对于此数据集,我们可以使用以下技术来生成平滑曲线: 1. 使用 PyPlot 绘制平滑样条曲线它使用 scipy.interpolate.make_interp_spline() 函数来确定样条曲线的系数,然后再绘制平滑的样条曲线。为了使曲线看起来平滑,我们首先使用提供的数据点来估计样条曲线的系数。然后,我们使用这些系数来获取非常密集间隔的 x 值的 y 值。在这种情况下,将使用 np. linspace() 函数,该函数生成在给定区间内计算的等间距样本。num 参数是可选的,表示要在 start 和 stop 范围之间生成的样本数量。该值必须是非负的,默认值为 50。 为了生成平滑曲线,我们需要这个参数有一个足够大的值。为了绘制曲线,让我们选择 500 个在最小值和最大值之间的 x 轴上等间距的样本。 语法 示例 程序说明 此 Python 程序利用 scipy.interpolate 模块中的 make_interp_spline 类来创建平滑的曲线图。它通过使用 NumPy、SciPy 和 Matplotlib 库来实现。数据集由两个 NumPy 数组组成:'x' 表示 x 轴上的值,'y' 表示 y 轴上的值。然后,程序利用 make_interp_spline 函数(可以利用提供的数据创建平滑曲线)来构建样条插值。接着,利用 linspace 函数在更精细间隔的 x 值范围内进行插值计算。最后,使用 Matplotlib 显示平滑曲线。生成的图表显示了标记的 x 和 y 轴以及标题“使用 scipy.interpolate.make_interp_spline() 类绘制平滑曲线”。 输出 ![]() 2. 使用三次插值绘制样条曲线使用 scipy.interpolate. interp1d 类,它创建一条三次插值曲线,然后使用该曲线来计算密集间隔的 x 值的 y 值,从而生成平滑曲线。在这种情况下,同样会使用 np. linspace() 技术,该技术生成在给定区间内计算的等间距样本。为了绘制曲线,我们将从最小值到最大值之间选择 500 个等间距的 x 轴样本。您可以更改第三个参数 (num) 的值来获得所需的曲线平滑度。 语法 示例 程序说明 此 Python 程序采用 scipy.interpolate 模块中的 interp1d 类进行三次插值,以生成平滑曲线图。它通过使用 NumPy、SciPy 和 Matplotlib 库来实现。数据集由两个 NumPy 数组组成:'x' 表示 x 轴上的值,'y' 表示 y 轴上的值。接下来,程序使用 interp1d 函数和“cubic”(三次)作为插值类型,构建一个三次插值模型,使其能够生成通过提供数据点的平滑曲线。然后,使用 linspace 函数在更精细间隔的 x 值范围内测试插值模型。最后,使用 Matplotlib 绘制平滑曲线,并显示带有标题“使用 scipy.interpolate.interp1d 类绘制平滑曲线”的图表。带有 x 和 y 标签。 输出 ![]() |
Python 嵌套 if 语句 嵌套 if 语句在 Python 中是一种结构,其中一个语句位于另一个 if 和 else 子句中。这被称为嵌套,并且可以有多层语句,以便程序员能够更有效地评估多个条件...
阅读 4 分钟
什么是高斯分布或正态分布?当我们绘制数据集(例如直方图)时显示的形状称为其分布。钟形曲线,也称为高斯分布或正态分布,是连续值的形式,它...
阅读 4 分钟
引言 对于数学、计算机科学等复杂问题,一种非常有用的策略是称为“分而治之”的方法,即将问题分解成更小的、更容易管理的部分。这可能是解决各种问题最常用的方法之一……
阅读 12 分钟
在本教程中,我们将学习名人问题。我们将使用各种方法解决这个问题。这是一个重要的编程问题,可能在技术面试中出现。本教程将帮助您学习如何有效地解决它。让我们来理解一下……
阅读9分钟
计算机视觉的核心任务之一是图像分类,旨在根据其内容对输入图像进行分类或标记。医疗图像分析、物体识别和面部识别等众多领域都可以从这项工作中受益。高级神经网络架构,例如...
阅读 4 分钟
数据值以键值对的形式存储在字典中。在本教程中,我们将学习如何将字典写入文件。目前,我们只能将字符串写入文件。要写入字典对象,我们必须对其进行序列化或使用 JSON 来...
阅读 3 分钟
引言 Python以其简洁性和可读性而闻名;它具有许多使开发人员喜欢它的特性。其一个通常被忽视但对于理解和使用Python函数至关重要的特性是函数签名。函数...
7 分钟阅读
手部检测和手势控制是计算机视觉中新奇的学科,可以实现常规人机交互。在这个项目中,我们将制作一个亮度控制框架,它利用手部动作根据手部的感知位置或估计动态调整亮度。我们将使用 OpenCV...
阅读 6 分钟
? 在学习数据组织和编程的未开发进步方面,有两个常见名称出现:SQL(结构化查询语言)和 Python。SQL 是用于维护和控制关系数据库的标准方言,而 Python 可能是一种灵活的高级编程方言,以其...
5 分钟阅读
在这个问题中,我们参加一个派对。派对上有 N 个人。派对上可能有一个名人;因此,每个人都认识他或她。然而,派对上的那个人不认识任何人……
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India