如何使用 NumPy 和 Matplotlib 进行数据可视化

news/2024/10/27 17:06:26/

如何使用 NumPy 和 Matplotlib 进行数据可视化

在数据科学领域,NumPyMatplotlib 是 Python 中最常用的两个库。NumPy 用于科学计算和数据处理,而 Matplotlib 提供了丰富的图表工具来展示数据。本文将介绍如何将这两个库结合使用,轻松进行数据可视化。


一、环境准备

确保已安装以下库:

pip install numpy matplotlib

引入必要模块:

import numpy as np
import matplotlib.pyplot as plt

二、使用 NumPy 生成数据

我们可以用 NumPy 快速创建一系列数据,进行数据分析或可视化。下面通过一些常见的 NumPy 功能生成数据:

# 生成 0 到 10 的等间距数组,共 100 个点
x = np.linspace(0, 10, 100)# 创建正弦和余弦函数数据
y_sin = np.sin(x)
y_cos = np.cos(x)

上面生成了两个简单的波形数据,可以用来展示 折线图 的绘制。


三、使用 Matplotlib 进行基础绘图

1. 绘制折线图(Line Plot)

plt.plot(x, y_sin, label='Sine Wave', linestyle='-', marker='o')
plt.plot(x, y_cos, label='Cosine Wave', linestyle='--')# 添加标题和标签
plt.title('Sine and Cosine Waves')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 显示图例
plt.legend()# 展示图表
plt.show()

在这里插入图片描述

输出效果:

这是一个带有标记、线条和图例的折线图。plt.legend() 会在图表中显示曲线的标签。


2. 绘制散点图(Scatter Plot)

# 生成 50 个随机点
x_random = np.random.rand(50)
y_random = np.random.rand(50)# 绘制散点图
plt.scatter(x_random, y_random, color='r', marker='x')# 添加标题和标签
plt.title('Random Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 展示图表
plt.show()

在这里插入图片描述

输出效果:

散点图可用于展示数据点的分布情况,通常用于数据聚类分析。


3. 绘制柱状图(Bar Plot)

# 生成数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]# 绘制柱状图
plt.bar(categories, values, color='skyblue')# 添加标题
plt.title('Bar Plot Example')# 展示图表
plt.show()

在这里插入图片描述

输出效果:

柱状图适合展示分类数据的对比,直观地显示每个类别的值。


4. 绘制直方图(Histogram)

# 从正态分布中生成 1000 个随机数
data = np.random.randn(1000)# 绘制直方图
plt.hist(data, bins=30, alpha=0.7, color='g')# 添加标题和标签
plt.title('Histogram Example')
plt.xlabel('Value')
plt.ylabel('Frequency')# 展示图表
plt.show()

在这里插入图片描述

输出效果:

直方图用于展示数据的分布情况,特别是查看数据的偏度和峰度。


四、组合多个图表

Matplotlib 支持在一个画布中展示多个子图,这对于复杂的数据分析非常有用。

fig, axs = plt.subplots(2, 2, figsize=(10, 8))# 子图 1:正弦曲线
axs[0, 0].plot(x, y_sin, color='b')
axs[0, 0].set_title('Sine Wave')# 子图 2:余弦曲线
axs[0, 1].plot(x, y_cos, color='r')
axs[0, 1].set_title('Cosine Wave')# 子图 3:散点图
axs[1, 0].scatter(x_random, y_random, color='g')
axs[1, 0].set_title('Random Scatter Plot')# 子图 4:直方图
axs[1, 1].hist(data, bins=30, alpha=0.7, color='purple')
axs[1, 1].set_title('Histogram')# 调整子图之间的布局
plt.tight_layout()# 展示图表
plt.show()

在这里插入图片描述

输出效果:

这个例子展示了如何通过 plt.subplots() 在一个画布中展示多个图表,每个子图展示不同类型的数据。


五、结论

通过本文的示例,我们学习了如何利用 NumPy 生成数据,并使用 Matplotlib 进行数据可视化。无论是折线图、散点图、柱状图,还是直方图,Matplotlib 都能帮助我们直观展示数据,揭示数据背后的趋势和规律。

这些基础技能可以进一步扩展到更复杂的数据分析任务。如果你需要进行更高级的可视化,如交互式图表,可以考虑引入 SeabornPlotly 等库。


http://www.ppmy.cn/news/1542385.html

相关文章

最长子序列模型二(二分优化版)

文章目录 提高课题解一、拦截导弹二、导弹防御系统三、最长公共上升子序列四、二分函数速写 基础课题解五、最长上升子序列 II 提高课题解 一、拦截导弹 题目链接 第一问非常简单,直接用之前最长上身子序列模板就行 第二问就有难度了,我们要用最少的递…

qt 滚动条 美化

qt QScrollBar 滚动条分为竖直与水平滚动条,两者设置上类似,但也有一些不同,下面主要讲述美化及注意事项。 一、竖直滚动条 竖直滚动条分为7个部分: sub-line、 up-arrow 、sub-page、 hanle、 add-line、 dow-arrow、 add-pag…

【Android】多渠道打包配置

目录 简介打包配置签名配置渠道配置配置打包出来的App名称正式包与测试包配置 打包方式开发工具打包命令行打包 优缺点 简介 多渠道打包 是指在打包一个 Android 应用时,一次编译生成多个 APK 文件,每个 APK 文件针对一个特定的渠道。不同的渠道可能代表…

从0到1学习node.js(npm)

文章目录 一、NPM的生产环境与开发环境二、全局安装三、npm安装指定版本的包四、删除包 五、用npm发布一个包六、修改和删除npm包1、修改2、删除 一、NPM的生产环境与开发环境 类型命令补充生产依赖npm i -S uniq-S 等效于 --save -S是默认选项npm i -save uniq包的信息保存在…

论文略读Fewer Truncations Improve Language Modeling

ICML 2024 1 背景 在传统LLM训练过程中,为了提高效率,通常会将多个输入文档拼接在一起,然后将这些拼接的文档分割成固定长度的序列。 ——>会造成一个重大问题——文档截断(document truncation),损害…

qt 序列化和反序列化

序列化:QByteArray buffer; QBuffer bufferDevice(&buffer); bufferDevice.open(QIODevice::WriteOnly); QDataStream out(&bufferDevice); out.setVersion(QDataStream::Qt_5_13); 反序列化: void deserialize(const QByteArray &buffer) {…

【计算机网络 - 基础问题】每日 3 题(五十五)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

笔记整理—linux驱动开发部分(2)模块信息与编译

对于linux而言,.ko文件为驱动文件,在终端可以使用lsmod列出已经安装的模块,使用insmod xxx.ko安装所需要的模块,modinfo xxx.ko打印某个模块提供的信息,rmmod xxx卸载某个不需要的模块。 insmod与module_init宏。在源代…