从头开始的可视化数据 matplotlib:初学者努力绘制数据图

news2025/1/16 19:56:06

从头开始学习使用 matplotlib 可视化数据,对于初学者来说,可能会有些挑战,但 matplotlib 的核心理念非常清晰:绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。

在这里插入图片描述

1. 安装 matplotlib

在开始之前,请确保你已经安装了 matplotlib。如果没有,可以通过以下命令安装:

pip install matplotlib

2. matplotlib 的基本构造

matplotlib 中最常见的绘图库是 pyplot 模块,它提供了类似于 MATLAB 的接口。我们通常这样引入它:

import matplotlib.pyplot as plt

3. 绘制第一个简单的图表

我们先从一个非常简单的折线图开始:

import matplotlib.pyplot as plt

# 数据:x轴和y轴
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加标题和标签
plt.title("Simple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • plt.plot(x, y):使用 plot() 函数绘制折线图,xy 是数据点的坐标。
  • plt.title():为图表添加标题。
  • plt.xlabel()plt.ylabel():为 x 轴和 y 轴添加标签。
  • plt.show():显示图表。

这段代码将会生成一个简单的线性关系的图表,x 轴是 1 到 5,y 轴是它们对应的平方值。

4. 绘制散点图

如果你想展示数据点之间的关系而不是使用折线,可以绘制散点图。

import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建散点图
plt.scatter(x, y)

# 添加标题和标签
plt.title("Simple Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • plt.scatter(x, y)scatter() 函数用于绘制散点图,每个 (x, y) 对应一个点。

5. 绘制柱状图 (Bar Chart)

柱状图非常适合展示分类数据。例如,我们可以绘制一组学生考试成绩的柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
scores = [85, 90, 78, 92]

# 创建柱状图
plt.bar(categories, scores)

# 添加标题和标签
plt.title("Student Scores")
plt.xlabel("Student")
plt.ylabel("Score")

# 显示图表
plt.show()
代码解读:
  • plt.bar(categories, scores)bar() 函数用于创建柱状图,categories 是柱的分类,scores 是柱的高度。

6. 绘制直方图 (Histogram)

直方图可以帮助你可视化数据的分布。例如,以下示例展示了生成的随机数据的分布。

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个正态分布的随机数据
data = np.random.randn(1000)

# 创建直方图
plt.hist(data, bins=30)

# 添加标题和标签
plt.title("Histogram of Random Data")
plt.xlabel("Value")
plt.ylabel("Frequency")

# 显示图表
plt.show()
代码解读:
  • np.random.randn(1000):生成1000个正态分布的随机数。
  • plt.hist(data, bins=30)hist() 函数用于绘制直方图,bins 参数定义了区间的数量。

7. 自定义样式

matplotlib 提供了大量自定义选项。你可以修改颜色、线型、点样式等。

示例:自定义线型和颜色
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 自定义折线图的线型和颜色
plt.plot(x, y, color='green', linestyle='--', marker='o')

plt.title("Customized Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()
代码解读:
  • color='green':线条的颜色设为绿色。
  • linestyle='--':线条类型设为虚线。
  • marker='o':数据点的标记设为圆点。

8. 添加多个数据集

你还可以在同一个图表中绘制多个数据集。

import matplotlib.pyplot as plt

# 两组数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]

# 绘制第一组数据
plt.plot(x, y1, label="y = x^2")

# 绘制第二组数据
plt.plot(x, y2, label="y = x")

# 添加图例
plt.legend()

plt.title("Multiple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • label="y = x^2"label="y = x":为每条线设置标签。
  • plt.legend():在图表中显示图例。

9. 子图 (Subplots)

如果你想在一个窗口中展示多个图表,可以使用 subplots() 方法。

import matplotlib.pyplot as plt

# 创建1行2列的子图
fig, axs = plt.subplots(1, 2)

# 第一个子图
axs[0].plot([1, 2, 3], [1, 4, 9])
axs[0].set_title("Subplot 1")

# 第二个子图
axs[1].plot([1, 2, 3], [1, 2, 3])
axs[1].set_title("Subplot 2")

# 显示图表
plt.tight_layout()
plt.show()
代码解读:
  • plt.subplots(1, 2):创建一个包含1行2列的图表。
  • axs[0]axs[1]:分别表示两个子图。
  • plt.tight_layout():自动调整子图之间的间距。

10. 保存图表

最后,如果你想将图表保存为图片,可以使用 savefig() 函数。

plt.plot([1, 2, 3], [1, 4, 9])
plt.title("Example Plot")

# 保存为PNG格式
plt.savefig("plot.png")

# 显示图表
plt.show()

总结

这只是 matplotlib 的一个入门介绍。通过这些简单的例子,你可以:

  • 创建各种类型的图表(折线图、散点图、柱状图、直方图等)。
  • 使用 plt.plot()plt.scatter()plt.bar() 等函数绘制图表。
  • 自定义颜色、线型、点样式等。
  • 在一个图表中展示多个数据集或子图。

随着你对 matplotlib 的熟悉,你可以探索更多高级功能,比如动画、三维图表等。如果有任何问题或想要进一步了解特定功能,随时提问!

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

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

相关文章

小程序底部导航按钮实现

商城小程序需要四个底部导航按钮,遂记录一下实现过程 最终实现效果如下所示 新建一个小程序项目,我是创建了JS模板,项目创建完成后需要新建五个文件夹,其中四个(page子文件夹)用于存放pages文件&#xff0…

探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士

在现代社会,不间断电源(UPS)系统已成为保障关键设备和数据安全的关键设施,广泛应用于企业数据中心、家庭电子设备等场景。UPS能在电力中断或波动时提供稳定电力,确保设备持续运行。而在这套系统中,光耦&…

C# 使用S7netplus读取西门子PLC的DB块-S7协议

在工业的设备监控领域,S7协议使用比较普遍下面简单教大家使用 1、添加包 2、添加帮助类(读写数据就研究该类即可,具体的理论就不多说了) //plc中类型与c#类型 bool > Bit //Byte > byte //word > ushort //DWord > uint //Int > short …

【AI知识点】三种不同架构的大语言模型(LLMs)的区别

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI大项目】【AI应用】 在自然语言处理(NLP)中,预训练语言模型(LLMs, Large Language Models)通常基于不同的架构,如仅编码器的模型(Enc…

Java开发中知识点整理

正则表达式 测试网址 Git 分支和主分支有冲突 先checkout origin/分支把origin/master pull进本地分支 修改冲突MergeCommit and Push

Apache SeaTunnel 介绍

SeaTunnel是一个非常易用、超高性能的分布式数据集成平台,支持实时海量数据同步。 每天可稳定高效同步数百亿数据,已被近百家企业应用于生产。 为什么需要 SeaTunnel​ SeaTunnel专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问…

【OSCP Proving Grounds 靶场系列】Slort

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

121页满分PPT | XX集团SAP ERP业务蓝图规划方案

这份PPT是德勤的集团SAP ERP业务蓝图规划方案的详细介绍,涵盖了项目背景、总体目标、ERP总体蓝图规划、总体规划路线设计以及风险与保障措施。方案强调了在煤炭市场疲软的宏观背景下,集团如何通过ERP系统实施来加强管控、提升业财管理一体化,…

VSCode esp-idf环境搭建 报错 ERROR_INVALID_PIP

例如我的报错提示 D:\APP\Espressif\idf531\Espressif\tools\idf-python\3.11.2\python.exe -m pip" is not valid. (ERROR_INVALID_PIP)找到目录位置D:\APP\Espressif\idf531\Espressif\tools\idf-python\3.11.2 使用下面的指令更新pip python -m ensurepippython -m …

二叉搜索树(超详细+通俗易懂)

二叉搜索树定义: 二叉搜索树又被称为二叉排序树/二叉搜索树,为什么会被起这样的名字呢?我们先来看一张二叉搜索树的图片 这张图片里面的树就是二叉搜素树,那么二叉树有什么性质呢?我们从图中可以发现,每一个子树都是…

Flink05 Windows 操作轻松应对复杂的场景

Flink Windows 操作 上篇文章介绍了Flink 几种类型 Windows 本文介绍窗口操作相关API,以及各自使用场景 。 本期Flink Windows 相关操作apply/union/join/collect/CoMap/CoFlatMap Windows apply 通过实现WindowFunction或AllWindowFunction接口来完成的&#x…

工具篇:(三)MacOS 两种方式下载 Node.js 并进行测试教程

MacOS 两种方式下载 Node.js 并进行测试教程 1.Node.js 官网 下载 步骤 1: 访问 Node.js 官网 打开浏览器,访问 Node.js 的官方网站:https://nodejs.org。 在首页,你会看到两个版本可供下载: LTS(长期支持版本&…

从0到1封装一个image/pdf预览组件

目录结构 content.vue <template><div class"no-content-block"><i class"iconfont icondocument large-file" /><div class"text-wrapper">{{ t(__ui__.siPreview.previewSupported) }}</div><div class&quo…

【CSS in Depth 2 精译_049】7.2 CSS 响应式设计中的媒体查询原则(下):响应式列的添加

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 【第七章 响应式设计】&#xff08;概述&#xff09; 7.1 移动端优先设计原则&#xff08;上篇&#xff09; 7.1.1 创建移动端菜单&#xff08;下篇&#xff09;7.1.2 给视口添加 meta 标签&#xf…

RabbitMQ 核心功能详解

引言 在现代分布式系统中&#xff0c;消息队列已经成为一种不可或缺的组件。它不仅能够实现应用之间的解耦&#xff0c;还能提高系统的灵活性和可扩展性。RabbitMQ 是一款基于 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息中间件&#xff0c;以其…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 &#xff08;AIHCIR 2024&#xff09;将于2024年11月在中国香港举行&#xff0c;聚焦AI、人机交互与机器人领域&#xff0c;邀请知名学者演讲&#xff0c;促进学术交流。论文经评审后提交EI检索&#xff0c;投稿需全英文&#xf…

图解Redis 04 | Set数据类型的原理及应用场景

介绍 Redis 的 Set 类型是一个不允许重复元素的集合&#xff0c;元素存储的顺序不按照插入的顺序&#xff0c;因此属于无序集合。一个 Set 最多可以存储 2^32 - 1 个元素&#xff0c;这与数学中的集合概念类似。Set 类型不仅支持增、删、改、查等操作&#xff0c;还支持多个Se…

微软的 Drasi:一种轻量级的事件驱动编程方法

微软的开源数据变化处理平台有望提供一种全新的方式来构建和管理可产生持续事件流的云应用程序。 Microsoft Azure 孵化团队是微软超大规模云中比较有趣的组成部分之一。它介于传统软件开发团队和研究组织之间&#xff0c;致力于构建大规模分布式系统问题的解决方案。 这些解决…

使用拖拽生成活动海报(vue项目)

<template><div class"poster-editor"><div class"toolbar" v-if"edit 1"><div style"text-align: center;font-size: 14px;font-weight: 700;margin-bottom: 10px;">工具栏</div><div class"…

WPF组件的自定义模板和触发器全面解析

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软提供的一个用于构建桌面客户端应用程序的UI框架。其依赖于XAML&#xff08;Extensible Application Markup Language&#xff09;进行用户界面设计&#xff0c;提供了一套强大的控件和组件模型。在WPF开发中&…