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

从头开始学习使用 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 pltx = [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.mzph.cn/web/55126.shtml

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

相关文章

代码审计笔记-PHP

PHP 1.php的弱类型 PHP 的“弱类型”是指在这门编程语言中,变量的类型在赋值时会被自动推断,而不是在变量声明时显式地指定类型。这意味着在 PHP 中,您可以将不同类型的值赋给同一个变量,而不需要进行类型转换或重新声明变量。 举…

基于Opencv中的DNN模块实现图像/视频的风格迁移

一、DNN模块的介绍 1、简介 OpenCV中的DNN(Deep Neural Network)模块是一个功能强大的组件,它支持深度学习网络模型的加载和推理。虽然DNN模块不提供模型的训练功能,但它可以与主流的深度学习框架(如TensorFlow、Caf…

并行 parallel broadcast partition pruning 分区裁剪 optimizer_dynamic_sampling=7

insert into abc 没有PDML所以不是全部并行 只有select 的情况 全部并行,没有 px send broadcast ,所以rows没从103M变成103*8M select *from A,B where A.Pkey B.Pkey and A.Pkey XX A B表都会进行分区裁剪 ----并行为什么更…

Linux操作系统——外存的管理(实验报告)

实验 Linux系统外存管理 一、实验目的 熟练Linux系统外存管理的方法与命令。 二、实验环境 硬件:PC电脑一台,网络正常。 配置:win10系统,内存大于8G 硬盘500G及以上。 软件:VMware、Ubuntu16.04。 三、实验内容 …

pymobiledevice3 xonsh-afc shell使用介绍

1、进入xonsh-afc shell: pymobiledevice3 apps afc bundle_id 2、进入shell后默认的目录是:[com.apple.mobile.house_arrest:/]$,这个目录是指定bundle_id的沙盒目录。 3、沙盒目录中如果包含带有空格的文件夹,直接使用cd App…

《CUDA编程》8.共享内存的合理使用

共享内存是 一种可被程序员直接操控的缓存,主要作用有两个: ①减少核函数中对全局内存的访 问次数,实现高效的线程块内部的通信 ②提高全局内存访问的合并度 将通过两个具体的例子阐明共享内存的合理使用,一个数组归约的例子和讨矩…

Git上传命令汇总

进入企业,每日需要上传执行用例记录到gitlab平台上,本文记录了常用git上传命令, 并用github演示。 1、本地建立分支,克隆远程仓库 在gitlab中,每个人需要创建自己的分支,一般以自己的名字命名,…

三子棋(C 语言)

目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 (1)提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…

第二十七篇:传输层讲解,TCP系列一

一、传输层的功能 ① 分割与重组数据 传输层也要做数据分割,所以必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机,无法判断数据报文应该交给哪个应用,传输层给每个应用都设置了一个编号,这个编号就是端口&…

Midjourney官宣网页版免费用!前谷歌大佬祭出AI生图2.0,全网惊艳实测

Midjourney一度稳居AI生图的第一梯队,甚至是很多人心中的Top1。但是Ideogram 2.0的发布,抢夺了Midjourney的荣光,不仅一举拉高了图像生成质量,还打起了价格战。 曾经在AI图像生成领域无可匹敌的领导者Midjourney,终于…

3分钟学会下载 blender

1. blender简介 Blender是一款开源的3D创作套件,它由Blender Foundation维护,并得到了全球志愿者和专业开发者的支持。Blender广泛应用于3D模型的制作、动画、渲染、视频编辑、游戏创建、模拟、 composting以及3D打印等多个领域。 功能特点&#xff1a…

欧盟通过《网络弹性法案》保障联网产品安全

欧盟理事会通过了《网络弹性法案》(CRA),这是一项新法律,旨在使含有数字组件的消费产品更加安全使用。 CRA要求 CRA 概述了欧盟范围内针对数字产品的网络安全标准,即直接或间接连接到其他设备或网络的产品。 此类别…

Qt-QDockWidget浮动窗口相关操作(49)

目录 描述 使用 描述 在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗口⼀般是位于核心部件的周围,可以有多个。 使用 创建我们可以参考下面的语法格式 使用起来也很简单,不过只能创建一个 Q…

DAY47WEB 攻防-PHP 应用文件上传函数缺陷条件竞争二次渲染黑白名单JS 绕过

1、PHP-原生态-文件上传-检测后缀&黑白名单2、PHP-原生态-文件上传-检测信息&类型内容3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷4、PHP-原生态-文件上传-版本缺陷&配置缺陷 文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题…

05 django管理系统 - 部门管理 - 修改部门

04我们已经实现了新增部门的功能,下面开始修改部门模块的实现。 按道理来说,应该是做成弹框样式的,通过ajax悄咪咪的发数据,然后更新前端数据,但是考虑到实际情况,先用页面跳转的方式实现,后面…

TCP/IP相关

1、关于三次握手、四次挥手和TCP的11种状态: 记住这张图就行了: 2、关于慢启动、拥塞避免、超时重传、快速重传、快速恢复 记住这张图就行了: 一些名词解释: MSS:Maximum Segment Size,最大报文长度 RT…

鸿蒙开发之ArkUI 界面篇 三十四 容器组件Tabs 自定义TabBar

如果需要修改Tabs的图标和文字之间的距离我们该怎么办呢?好在tabBar是联合类型,提供了自定义tabBar,这里就可以显示特殊图标或者是文字图片,如下图: 这里定义了myBuilder的函数,用了 来修饰,没有…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1)目标 2)输入字词格式 3)每一次传入的词/字的个数是否就是评论的长度 4)一条评论如果超过32个词/字怎么处理? 5)一条评论如果…

【论文阅读】SRCNN

学习资料 论文题目:Learning a Deep Convolutional Network for Image Super-Resolution(学习深度卷积网络用于图像超分辨率)论文地址:link.springer.com/content/pdf/10.1007/978-3-319-10593-2_13.pdf代码:作者提出的…

zabbix报警设置

文章目录 I 通过脚本媒介,调用钉钉电话API。配置脚本设置脚本媒介II 配置发送邮件的信息案例:配置163邮箱配置接收媒介创建动作知识扩展DING 2.0 发钉钉钉机器人自定义webhookzabbix执行远程命令I 通过脚本媒介,调用钉钉电话API。 zabbix可以通过脚本调用钉钉电话API,需要…