【Python篇】matplotlib超详细教程-由入门到精通(上篇)

news2024/11/16 11:47:18

文章目录

  • 第一部分:基础概念与简单绘图
    • 1.1 `matplotlib` 简介
    • 1.2 创建第一个折线图
    • 1.3 图表的基本组成元素
  • 第二部分:图表样式与修饰
    • 2.1 修改图表样式
    • 2.2 添加图例
    • 2.3 调整坐标轴与刻度
  • 第三部分:绘制不同类型的图表
    • 3.1 散点图 (Scatter Plot)
    • 3.2 柱状图 (Bar Chart)
    • 3.3 饼图 (Pie Chart)
  • 第四部分:数据处理与可视化
    • 4.1 `pandas` 与 `matplotlib` 的结合
      • 示例:从 CSV 读取数据并绘制折线图
      • 解释:
      • 注意:
    • 4.2 绘制多个数据系列
      • 示例:绘制多条折线
      • 解释:
    • 4.3 创建子图布局
      • 示例:创建 2x1 的子图布局
      • 解释:
  • 第五部分:图表定制与高级功能
    • 5.1 自定义颜色和样式
      • 示例:使用自定义颜色和样式绘制图表
      • 解释:
    • 5.2 标注与注释
      • 示例:为特定数据点添加注释
      • 解释:

第一部分:基础概念与简单绘图

1.1 matplotlib 简介

matplotlib 是 Python 中最常用的绘图库之一。它提供了类似于 Matlab 的 API,方便用户创建各种类型的图表。我们主要使用其中的 pyplot 模块,它是绘制图表的核心工具。

# 在开始之前,请确保你安装了 matplotlib 库
pip install matplotlib

1.2 创建第一个折线图

从最简单的折线图开始,先理解 matplotlib 的基本概念。通过 pyplot 模块,我们可以很容易地创建图表并展示数据。

# 导入 matplotlib 库
import matplotlib.pyplot as plt

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

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

# 显示图表
plt.show()

在这里插入图片描述

1.3 图表的基本组成元素

每个 matplotlib 图表主要由以下几个元素组成:

  • 图形 (Figure):整个绘图区域。
  • 坐标轴 (Axes):图表中的数据区域,它可以包含多条曲线或数据点。
  • 曲线 (Line):用来展示数据的线段。
  • 刻度 (Ticks):坐标轴上显示的数据标记。
  • 标签 (Label):用于标识坐标轴含义的文字。
# 示例:为图表添加标题和坐标轴标签
plt.plot(x, y)

# 添加标题
plt.title("简单的折线图")

# 添加坐标轴标签
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 显示图表
plt.show()
  • 这里的方块是因为没有安装字体的缘故,在下一篇第六部分会讲到的

在这里插入图片描述


第二部分:图表样式与修饰

2.1 修改图表样式

我们可以通过设置不同的参数来修改图表的样式,比如线条的颜色、样式和粗细等。

# 创建折线图,设置线条颜色、线型和宽度
plt.plot(x, y, color='red', linestyle='--', linewidth=2)

# 显示图表
plt.show()

在这里插入图片描述

2.2 添加图例

如果图表中有多条数据线或多组数据,我们可以为每条数据添加图例,以便区分各组数据。

# 定义两组数据
x1 = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]

x2 = [1, 2, 3, 4, 5]
y2 = [2, 3, 5, 7, 11]

# 绘制两条折线,并分别添加图例
plt.plot(x1, y1, label='组1', color='blue')
plt.plot(x2, y2, label='组2', color='green')

# 显示图例
plt.legend()

# 显示图表
plt.show()

在这里插入图片描述

2.3 调整坐标轴与刻度

我们可以手动设置坐标轴的范围和刻度,使图表的显示更加清晰。

# 绘制图表
plt.plot(x, y)

# 设置坐标轴的范围
plt.xlim(0, 6)  # X 轴的范围
plt.ylim(0, 30)  # Y 轴的范围

# 设置 X 轴和 Y 轴的刻度
plt.xticks([1, 2, 3, 4, 5])
plt.yticks([0, 5, 10, 15, 20, 25])

# 显示图表
plt.show()

在这里插入图片描述


第三部分:绘制不同类型的图表

3.1 散点图 (Scatter Plot)

散点图用于展示数据的分布情况。

# 定义数据
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]

# 创建散点图
plt.scatter(x, y, color='red')

# 显示图表
plt.show()

在这里插入图片描述

3.2 柱状图 (Bar Chart)

柱状图用于展示分类数据的大小。

# 定义数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 7, 3, 8, 6]

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

# 显示图表
plt.show()

在这里插入图片描述

3.3 饼图 (Pie Chart)

饼图展示各分类数据的占比。

# 定义数据
labels = ['A', 'B', 'C', 'D']
sizes = [20, 30, 25, 25]

# 创建饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

# 显示图表
plt.show()
  • sizes:这是饼图的主要数据,即每个部分的相对大小。在饼图中,sizes 列表中的每个元素决定了饼图中各个部分的大小比例。matplotlib 会根据这些数值的比例自动计算每一部分的角度和面积。

  • labels:这是用来为饼图中的各个部分添加标签。我们通过 labels=labels 来指定标签列表。每个标签会显示在相应部分的旁边,标识出该部分代表的数据类别。

  • autopct=‘%1.1f%%’:这是用来设置饼图中每个部分的自动百分比显示的。它定义了显示百分比的格式:

  • %1.1f%% 表示在图中显示百分比,1.1f 意味着保留一位小数,%% 是百分比符号。这里是让每一部分的百分比在饼图上显示为 1 位小数的格式。

例如,如果某个部分占整个饼图的 25%,则在图中显示 25.0%。
在这里插入图片描述


第四部分:数据处理与可视化

4.1 pandasmatplotlib 的结合

在实际项目中,我们经常需要处理数据框 (DataFrame),例如从 Excel、CSV 等文件读取数据。pandasmatplotlib 的结合可以帮助我们快速地将数据可视化展示。

示例:从 CSV 读取数据并绘制折线图

首先,我们需要从 pandas 读取数据,然后用 matplotlib 可视化。假设我们有一个包含时间序列数据的 CSV 文件,内容如下:

日期,销售额
2023-01-01,200
2023-01-02,300
2023-01-03,150
2023-01-04,400
2023-01-05,250

我们将读取这个文件并绘制日期与销售额的折线图。

import pandas as pd
import matplotlib.pyplot as plt

# 从 CSV 文件读取数据
data = pd.read_csv('sales_data.csv')

# 绘制折线图
plt.plot(data['日期'], data['销售额'])

# 添加标题和坐标轴标签
plt.title('每日销售额')
plt.xlabel('日期')
plt.ylabel('销售额')

# 显示图表
plt.show()

解释:

  • pd.read_csv():从 CSV 文件读取数据,返回 DataFrame
  • data['日期']data['销售额']:从 DataFrame 中选择特定的列进行绘图。
  • plt.plot():基于数据创建折线图。

注意:

在实际项目中,你可能需要对数据进行预处理,例如处理缺失值、数据格式转换等。在进行可视化之前,确保数据是干净的。

4.2 绘制多个数据系列

有时候我们需要在同一个图表中展示多个数据系列,来进行对比或分析。我们可以通过在 matplotlib 中绘制多个数据线来实现这一点。

示例:绘制多条折线

假设我们有两个产品的销售数据,并想在同一个图表中展示。

import pandas as pd
import matplotlib.pyplot as plt

# 定义数据
日期 = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05']
产品A = [200, 300, 150, 400, 250]
产品B = [180, 260, 170, 380, 230]

# 创建折线图
plt.plot(日期, 产品A, label='产品A', color='blue')
plt.plot(日期, 产品B, label='产品B', color='green')

# 添加标题和坐标轴标签
plt.title('产品A与产品B的销售额比较')
plt.xlabel('日期')
plt.ylabel('销售额')

# 显示图例
plt.legend()

# 显示图表
plt.show()

解释:

  • plt.plot(日期, 产品A, label='产品A', color='blue'):创建产品A的折线图,蓝色表示该系列。
  • plt.legend():显示图例,以便区分不同的产品线。

通过这个例子,我们学会了如何在同一个图表中绘制多个数据系列,这在多维数据的分析中非常有用。

在这里插入图片描述

4.3 创建子图布局

当我们有多组数据想要展示在同一个窗口时,可以使用子图布局。在 matplotlib 中,子图功能允许我们将同一个图表窗口划分为多个区域,每个区域展示不同的数据。

示例:创建 2x1 的子图布局

假设我们要展示两组销售数据,但希望它们在上下两个子图中显示。

import matplotlib.pyplot as plt

# 定义数据
日期 = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05']
产品A = [200, 300, 150, 400, 250]
产品B = [180, 260, 170, 380, 230]

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

# 绘制第一个子图
ax[0].plot(日期, 产品A, color='blue')
ax[0].set_title('产品A的销售额')

# 绘制第二个子图
ax[1].plot(日期, 产品B, color='green')
ax[1].set_title('产品B的销售额')

# 显示图表
plt.tight_layout()  # 自动调整子图布局,避免重叠
plt.show()

解释:

  • plt.subplots(2, 1):创建两行一列的子图布局。
  • ax[0]ax[1]:分别表示第一个和第二个子图区域。
  • plt.tight_layout():自动调整子图之间的间距,防止标题、标签等内容重叠。

通过子图的布局,我们可以在同一个窗口内展示不同的数据集,这有助于比较不同的趋势。

在这里插入图片描述


第五部分:图表定制与高级功能

5.1 自定义颜色和样式

在很多情况下,我们希望图表能够符合品牌或特定设计要求。这时,可以自定义颜色、样式和字体,以生成美观的图表。

示例:使用自定义颜色和样式绘制图表

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [2, 3, 5, 7, 11]

# 创建图表,设置线条颜色、样式和标记
plt.plot(x, y1, color='red', linestyle='-', marker='o', label='红色线')
plt.plot(x, y2, color='blue', linestyle='--', marker='s', label='蓝色虚线')

# 添加标题和图例
plt.title('自定义样式示例')
plt.legend()

# 显示图表
plt.show()

解释:

  • color:指定线条颜色。
  • linestyle:定义线型(实线、虚线等)。
  • marker:设置数据点的标记(如圆圈 o,方块 s 等)。

通过这种方式,我们可以为不同的数据系列使用自定义颜色和样式,以确保图表符合特定的视觉需求。

在这里插入图片描述

5.2 标注与注释

有时候我们需要对图表中的某些点进行标注或注释,突出显示特定数据点。matplotlib 提供了 annotate() 函数,用于在图表上添加文本。

示例:为特定数据点添加注释

import matplotlib.pyplot as plt

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

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

# 为 (2, 4) 点添加注释
plt.annotate('这个点很重要', xy=(2, 4), xytext=(3, 10),
             arrowprops=dict(facecolor='black', shrink=0.05))

# 显示图表
plt.show()

解释:

  • plt.annotate():为图表中的特定点添加注释。
  • xy:指定要标注的点的坐标。
  • xytext:指定注释文本的位置。
  • arrowprops:设置箭头的样式。
  • shrink=0.05 表示箭头长度缩短 5%,这样箭头看起来不会完全覆盖注释的起点和终点,而是稍微缩短。
  • shrink 的值可以是 0 到 1 之间的小数,值越大箭头缩短得越多。

在这里插入图片描述


以上就是关于【Python篇】matplotlib超详细教程-由入门到精通(上篇)的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️

在这里插入图片描述

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

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

相关文章

使用 Homebrew 在 macOS 上安装 Conda

Homebrew 是一个流行的 macOS 包管理器,可以帮助你安装和管理各种软件包。 以下是使用 Homebrew 安装 Conda 的步骤: 1. 安装 Homebrew 如果你还没有安装 Homebrew,可以通过以下命令安装: /bin/bash -c "$(curl -fsSL htt…

《机器学习》—— XGBoost(xgb.XGBClassifier) 分类器

文章目录 一、XGBoost 分类器的介绍二、XGBoost(xgb.XGBClassifier) 分类器与随机森林分类器(RandomForestClassifier)的区别三、XGBoost(xgb.XGBClassifier) 分类器代码使用示例 一、XGBoost 分类器的介绍…

微信小程序 自定义组件

1. 微信小程序 自定义组件 微信小程序支持组件化开发,这有助于我们复用代码,提高开发效率。下面我将给出一个简单的微信小程序组件化示例,包括一个自定义组件的创建和使用。 1.1. 创建自定义组件 首先,在项目的 components 目录…

建筑二次供水的基本概念

什么是二次供水? 二次供水是城市供水的主要组成部分,是指集中式供水在入户之前经再度储存、加压和消毒后,通过管道输送给用户的供水方式。 为什么要使用二次供水? 由于市政供水的服务水压通常只能达到较低的楼层,而…

部分库函数及其模拟

前言:当我们学习c/c库函数的时候,我们可以用网站 cplusplus.com - The C Resources Network 来进行查阅,学习。 目录 库函数: 1.字符串函数 1.1求字符串长度 strlen 1.2长度不受限制的字符串函数 1.2.1strcpy 1.2.2strca…

“阡陌云旅”黄河九省文化旅游平台

“阡陌云旅”黄河九省文化旅游平台 GitHub地址:https://github.com/guoJiaQi-123/Yellow-River-Cloud-Journey 项目背景 “阡陌云旅”黄河九省文化旅游平台 “阡陌云旅” 黄河九省文化旅游平台是一个专注于黄河流域九省文化旅游资源整合与推广的项目。 黄河是中…

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理…

HomeAssistant添加HACS绑定米家与苹果HomeKit设备并实现远程管理

文章目录 前言1. 下载HACS源码2. 添加HACS商店3. 绑定米家设备 前言 之前介绍过如何实现在群晖NAS使用Docker部署HomeAssistant,通过内网穿透在户外控制家庭智能设备。本文将介绍如何在HA平台安装HACS插件商店,将米家,果家设备接入 Home Ass…

推荐清晖一套不错的讲解沟通的线上讲座

推荐清晖一套不错的讲解沟通的线上讲座,比较实际贴地,听完了推荐给大家: 《项目管理中的沟通策略,听出弦外之音,变身沟通达人》 地址:项目管理中的沟通策略,听出弦外之音,变身沟通达…

数据结构(1):ArrayList和顺序表

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 下面我们就开一个新坑,数据结构。数据结构,简单来说就是存放数据的方式,这些方式多种多样,我们来一点一…

Statcounter Global Stats 提供全球统计数据信息

Statcounter Global Stats 提供全球统计数据信息 1. Statcounter Global Stats2. Mobile & Tablet Android Version Market Share WorldwideReferences Statcounter Global Stats https://gs.statcounter.com/ Statcounter Global Stats are brought to you by Statcounte…

C++ 定时器

这是第一次独立设计一个模块,从接口定义,模块组合到多线程并发可能遇到的各种问题,虽然定时挺简单的,但是想设计精度高,并且能应对高并发似乎也不是很容易,当然,最后没有测试定时器的代码&#…

架构模式:MVC

引言 MVC,即 Model(模型)-View(视图)-Controller(控制器),是广泛应用于交互式系统中的典型架构模式,尤其在 GUI 和 Web 应用中。 MVC 的概念源自 GOF(Gang …

JS解密工具之**如何续期 Charles 的 SSL 证书**

本文由 jsjiami加密/一键JS解密 独家赞助 有问题请私聊加密官方客服 Charles 是一款常用的 HTTP 代理工具,用于调试网络请求。然而,Charles 的 SSL 证书会定期过期,如果 SSL 证书失效,你将无法对 HTTPS 请求进行抓包。本文将详细…

SQL语句中in条件超过1000怎么办?

博客主页: 南来_北往 系列专栏:Spring Boot实战 引言 当遇到SQL语句中IN条件超过1000个的情况时,可以采取以下几种策略来有效处理这一问题: 使用临时表:将IN列表中的值存储在临时表中,并将该临时表与查询表进行J…

【Python 千题 —— 算法篇】寻找最长回文子串

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 回文串是指一个字符串从左到右和从右到左读都是一样的。寻找一个字符串中的最长回文子串是许多经典算法问题之一,广泛应…

2024年9月最新界面:自己如何在电脑上注册新的Google谷歌账号,图文详解和关键点解析、常见问题

有一些朋友需要通过谷歌账号来工作、学习或娱乐(例如很多游戏需要用谷歌账号来注册和使用),但是不知道如何注册谷歌账号,或者知道如何注册,但是对于一些步骤或者注意事项不太熟悉,导致注册不成功&#xff0…

什么是LED智能会议一体机?COB超微小间距LED会议一体机大势所趋

LED智能会议一体机,作为现代会议室革新的核心装备,正逐步颠覆传统会议模式的界限。它不仅仅是一台集成了高清显示、触控互动、音视频处理及远程协作等功能于一体的智能设备,更是推动会议效率与体验双重飞跃的关键力量。随着技术的不断进步&am…

【重学 MySQL】十八、逻辑运算符的使用

【重学 MySQL】十八、逻辑运算符的使用 AND运算符OR运算符NOT运算符异或运算符使用 XOR 关键字使用 BIT_XOR() 函数注意事项 注意事项 在MySQL中,逻辑运算符是构建复杂查询语句的重要工具,它们用于处理布尔类型的数据,进行逻辑判断和组合条件…

【Protobuf】初识protobuf以及详细安装教程

W...Y的主页 😊 代码仓库分享 💕 目录 序列化概念 ProtoBuf是什么 ProtoBuf在window下的安装 下载ProtoBuf编译器 配置环境变量 ​编辑 检查是否配置成功 ​编辑 ProtoBuf在Linux下的安装 下载ProtoBuf 安装ProtoBuf 序列化概念 首先我们…