如何使用 matplotlib 在 Python 3 中绘制数据

news2024/10/17 9:25:38

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Python 在处理数据方面非常出色。通常,数据集会包括多个变量和许多实例,这使得很难理解数据的情况。数据可视化是帮助您识别数据模式的一种有用方式。

例如,假设您是一名房地产经纪人,您想要了解房屋的年龄与售价之间的关系。如果您的数据包括 5 栋房屋的数据,那么理解情况就不会太困难。但是,假设您想要使用整个镇上 500 栋房屋的数据,那么理解年龄如何影响价格就会变得非常困难。通过绘制售价与年龄的关系,对数据进行可视化肯定会阐明这两者之间的关系。

可视化是以一种通用方式快速传达概念的方法,特别是对于那些不熟悉您数据的人。每当我们处理数据时,可视化通常是分析的必要部分。

我们将使用 2D 绘图库 matplotlib,最初由 John D. Hunter 编写,自那以后已成为一个非常活跃的开源开发社区项目。它允许您生成高质量的折线图、散点图、直方图、条形图等。每个图以不同的方式呈现数据,通常在确定数据的最具信息量的图之前,尝试不同类型的图表是很有用的。要记住,可视化是艺术和科学的结合。

鉴于可视化的重要性,本教程将描述如何使用 matplotlib 在 Python 中绘制数据。我们将介绍如何使用一小组数据生成散点图,向图表添加标题和图例,并通过更改绘图点的外观来自定义图表。

完成本教程后,您将能够在 Python 中绘制数据!

先决条件

在进行本教程之前,您应该已经安装了 Python 3,并在计算机上设置了本地编程环境。如果不是这种情况,您可以按照适用于您操作系统的相应安装和设置指南进行设置。

步骤 1 — 导入 matplotlib

在我们开始在 Python 中工作之前,让我们再次检查 matplotlib 模块是否已安装。在命令行中,通过运行以下命令检查 matplotlib 是否已安装:

python -c "import matplotlib"

如果 matplotlib 已安装,此命令将顺利完成,我们可以开始了。如果没有安装,您将收到错误消息:

Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'matplolib'

如果收到错误消息,请使用 pip 下载该库:

pip install matplotlib

现在 matplotlib 已安装,我们可以在 Python 中导入它。首先,让我们创建我们将在本教程中使用的脚本:scatter.py。然后,在我们的脚本中,让我们导入 matplotlib。由于我们只会使用绘图模块(pyplot),因此在导入时让我们指定它。

import matplotlib.pyplot as plt

我们通过在 matplotlib 末尾添加 .pyplot 来指定我们希望导入的模块。为了在脚本中更容易地引用该模块,我们将其缩写为 plt。现在,我们可以继续创建和绘制我们的数据。

步骤 2 — 创建要绘制的数据点

在我们的 Python 脚本中,让我们创建一些要处理的数据。我们将使用 2D 数据,因此我们将需要每个数据点的 X 和 Y 坐标。

为了更好地理解 matplotlib 的工作原理,我们将把我们的数据与可能的现实场景联系起来。假设我们是一家咖啡店的老板,我们对一年中的平均天气和冰咖啡的总销量之间的关系感兴趣。我们的 X 变量将是每月销售的冰咖啡总数,我们的 Y 变量将是每个月的华氏平均温度。

在我们的 Python 脚本中,我们将创建两个列表变量:X(冰咖啡总销量)和 Y(平均温度)。我们各自列表中的每个项目将代表每个月的数据(一月到十二月)。例如,在一月份,平均温度为 32 华氏度,咖啡店卖出了 590 杯冰咖啡。

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

现在我们有了数据,我们可以开始绘图。

步骤 3 — 绘制数据

散点图非常适合用于确定两个变量之间的关系,因此我们将使用这种图表类型作为示例。要使用 matplotlib 创建散点图,我们将使用 scatter() 函数。该函数需要两个参数,分别表示 X 和 Y 坐标值。

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)
plt.show()

每次创建图表时,我们都必须使用 plt.show() 指定要显示图表。

在继续之前,让我们检查一下我们的脚本是否正常工作。保存脚本并通过命令行运行:

python scatter.py

如果一切顺利,应该会启动一个窗口显示图表,如下所示:

!Alt 散点图

这个窗口非常适合查看数据;它是交互式的,并包括几个功能,比如悬停显示标签和坐标、放大或缩小以及保存。

步骤 4 — 添加标题和标签

现在我们知道我们的脚本正常工作,我们可以开始向图表中添加信息。为了清楚地表明我们的数据代表什么,让我们在图表中包括一个标题以及每个轴的标签。

我们将从添加标题开始。我们在脚本的 plt.show() 行之前添加标题。

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.title('温度与冰咖啡销量之间的关系')

plt.show()

接下来,在 plt.title 行下方添加轴的标签:

...
plt.xlabel('售出的冰咖啡杯数')
plt.ylabel('华氏温度')
...

如果我们保存脚本并再次运行它,现在应该会得到一个更新的图表,更具信息性。我们的更新后的图表应该看起来像这样:

!Alt 带有标题和 X/Y 标签的散点图

步骤 5 — 自定义图表

我们处理的每个数据集都是独特的,能够自定义我们希望如何显示信息非常重要。记住,可视化也是一门艺术,所以可以在其中发挥创意!matplotlib 包括许多自定义功能,比如不同的颜色、点符号和大小。根据我们的需求,我们可能想尝试不同的比例,为我们的轴使用不同的范围。我们可以通过指定轴的新范围来更改默认参数,如下所示:

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.xlim(0,1000)
plt.ylim(0,100)

plt.title('温度与冰咖啡销量之间的关系')

plt.show()
...

原始图表中的点看起来有点小,蓝色可能不是我们想要的颜色。也许我们想要三角形而不是圆圈作为点的符号。如果我们想要更改点的实际颜色/大小/形状,我们必须在初始的 plt.scatter() 调用中进行这些更改。我们将更改以下参数:

  • s:点的大小,默认值为 20
  • c:颜色、序列或颜色序列,默认值为 ‘b’
  • marker:点符号,默认值为 ‘o’

可能的标记包括许多不同的形状,如菱形、六边形、星形等。颜色选择包括蓝色、绿色、红色和洋红色等。还可以提供 HTML 十六进制字符串作为颜色。请参阅 matplotlib 的文档,了解可能的标记和颜色的全面列表。

为了使我们的图表更易于阅读,让我们将点的大小加倍(s=60),将颜色更改为红色(c='r'),并将符号更改为三角形(marker='^')。我们将修改 plt.scatter() 函数:

plt.scatter(X, Y, s=60, c='red', marker='^')

在运行更新后的脚本之前,我们可以再次检查我们的代码是否正确。自定义图表的更新脚本应该看起来像这样:

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

#散点图

plt.scatter(X, Y, s=60, c='red', marker='^')

#更改坐标轴范围

plt.xlim(0,1000)
plt.ylim(0,100)

#添加标题

plt.title('温度与冰咖啡销量的关系')

#添加 x 和 y 轴标签

plt.xlabel('售出冰咖啡杯数')
plt.ylabel('华氏温度')

#显示图表

plt.show()

不要忘记在进行第 6 步之前保存你的脚本。

第 6 步 — 保存图表

现在我们已经完成了代码,让我们运行它来查看我们新定制的图表。

python scatter.py

现在应该会打开一个窗口显示我们的图表:

!Alt 带有标题和 X/Y 标签的最终散点图,并使用更大、红色、三角形点进行定制。

接下来,通过单击保存按钮(位于底部工具栏上的磁盘图标)来保存图表。请记住,图像将被保存为 PNG 格式,而不是交互式图表。恭喜你,现在你拥有自己定制的散点图!

结论

在本教程中,你学会了如何使用 Python 中的 matplotlib 绘制数据。现在你可以可视化数据并定制图表。

要继续练习 matplotlib,你可以参考我们的指南“如何使用 Python 3 和 matplotlib 绘制词频图”。

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

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

相关文章

2024国际潜水小姐大赛中国区总决赛盛典在广州举行,吉林选手张潇文获冠军!

传承“以美之名&#xff0c;保护海洋”的精神&#xff0c;2024年10月15日晚&#xff0c;2024国际潜水小姐大赛中国区总决赛盛典在广州渔民新村隆重举行&#xff01;来自全国多个城市&#xff0c;经过层层选拔产生的20位佳丽齐聚广州&#xff0c;以独特的女性水下之美和健康美&a…

初识算法 · 二分查找(1)

目录 前言&#xff1a; 二分查找 题目解析 算法原理 算法编写 搜索插入位置 题目解析 算法原理 算法编写 前言&#xff1a; 本文呢&#xff0c;我们从滑动窗口窗口算法移步到了二分查找算法&#xff0c;我们简单了解一下二分查找算法&#xff0c;二分查找算法是一个十…

安科瑞末端组合式智慧用电装置在高校宿舍中的应用

1相关背景 学校宿舍用电隐患 安全用电历来都是学校安全工作的一个重点&#xff0c;然而每年因此发生的人身伤害以及火灾事故却在继续&#xff0c;究其原因&#xff0c;主观上是我们的防患意识淡薄&#xff0c;客观上则是由于学生在宿舍使用违规电器、乱拉电线造成的。 现代的…

Java IO 基础知识

IO 流简介 IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因此称为 IO 流。IO 流在…

java关于如何实现读取各种类型的文件核心属性方法,比如获取标题和作者、主题等;附带远程的https的地址文件读取方法;

有两种方法&#xff1a; 通过提供的现成api进行调用读取pdf文件&#xff0c;或doc、xlsx、pptx文件&#xff1b;可能商业需要付费 https://www.e-iceblue.cn/pdf_java_document_operation/set-pdf-document-properties-in-java.html Spire.PDF for Java import com.spire.pdf…

为什么SSH协议是安全的?

SSH的传输层协议&#xff08;Transport Layer Protocol&#xff09;和用户鉴权协议&#xff08;Authentication Protocol&#xff09;确保数据的传输安全&#xff0c;这里只介绍传输层协议&#xff0c;是SSH协议的基础。 本文针对SSH2协议。 1、客户端连接服务器 服务器默认…

基于springboot实习管理系统

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…

k8s use-context是什么

kubectl 的 use-context 命令用于在 Kubernetes 集群中切换上下文&#xff08;context&#xff09;&#xff0c;从而方便地在多个集群或命名空间之间进行操作。一个上下文定义了 kubectl 使用的 集群、用户 和 命名空间 的组合。 use-context 的作用&#xff1a; 每个上下文&…

msql事务隔离级别 线上问题

1. 对应代码 解决方式&#xff1a; 在事务隔离级别为可重复读&#xff08;RR&#xff09;时&#xff0c;数据库确实通常会记录当前数据的快照。 在可重复读隔离级别下&#xff0c;事务在执行期间看到的数据是事务开始时的数据快照&#xff0c;即使其他事务对数据进行了修改&am…

考研前所学c语言02(2024/10/16)

1.一个十进制的数转化为二进制的就是不断除二取余&#xff0c;得到的余数从下到上取 比如123&#xff1a; 结果为&#xff1a; 同理其他的十进制转八进制&#xff0c;十六进制就除八&#xff0c;除十六即可 再比如123转十六进制&#xff1a; 因为余数是11&#xff0c;十六进…

超详细的finalshell安装数据库以及数据库的基本操作

一、下载 MySQL Enterprise Edition Downloads | Oraclehttps://www.oracle.com/mysql/technologies/mysql-enterprise-edition-downloads.html 这边有不同的版本&#xff0c;要看你的操作系统&#xff08;centos7 / centos8&#xff09;安装的是哪个版本 我把连接提取出来了&…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

stm32 F4和F7的硬件CRC保持一致的设置

stm32F4系列的CRC没什么设置选项 逆向一下算法&#xff1a;http://www.ip33.com/crc.html 在stm32F7里面&#xff0c;CRC设置很丰富&#xff0c;如下设置可以和f4算出来的保持一致

HCIP——以太网交换安全(四)DHCP Snooping

目录 一、DHCP Snooping的知识点 二、DHCP Snooping实验拓扑 三、总结 一、DHCP Snooping的知识点 1.1、DHCP snooping 概述&#xff1a; ①DHCP Snooping使能DHCP的一种安全特性&#xff0c;用于保证DHCP客户端从合法的DHCP服务端获取IP地址。DHCP服务器记录DHCP客户端IP…

沐风老师3DMAX地形散布插件TerrainScatter使用方法详解

3DMAX地形散布插件TerrainScatter&#xff0c;根据画定的区域范围和地形起伏&#xff0c;一键种植树木、批量摆放建筑等&#xff0c;对于熟练3dmax的用户&#xff0c;也可以使用TerrainScatter插件制作屋顶摆放瓦片的效果。该插件工作方式是将源对象的副本放置到闭合曲线范围内…

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—大连理工大学专场!!!(暨全额奖学金政策)

香港科技大学广州&#xff5c;可持续能源与环境学域博士招生宣讲会—大连理工大学专场&#xff01;&#xff01;&#xff01;&#xff08;暨全额奖学金政策&#xff09; ⏰时间&#xff1a;2024年10月24日&#xff08;星期四&#xff09;16:00 &#x1f3e0;地点&#xff1a;…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一&#xff1a;暴力O(N^2)1.2.2 思路二&#xff1a;hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

操作系统实验一:Linux进程管理及其扩展

实验目的&#xff1a; 通过实验&#xff0c;加深理解进程控制块、进程队列等概念&#xff0c;了解进程管理的具体实施方法。 实验内容&#xff1a; 1. 阅读并分析Linux内核源代码&#xff0c;了解进程控制块、进程队列等数据结构&#xff1b; 2. 实现一个系统调用&#xff…

基于springboot留守儿童爱心网站

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…

C++核心编程和桌面应用开发 第十一天(静态转换 动态转换 常量转换 重新解释转换)

目录 1.静态类型转换 1.1语法 1.2用法 2.动态类型转换 2.1语法 2.2用法 3.常量类型转换 3.1语法 3.2用法 4.重新解释转换 4.1语法 1.静态类型转换 1.1语法 static_cast<目标转换类型>(待转换变量) 1.2用法 可用于基本数据类型之间的转换。比如int和char之…