Python 数据可视化:Matplotlib库的使用

简介: Matplotlib是一个第三方python 2D绘图库,利用它可以画出许多高质量的图像。只需几行代码即可生成直方图,条形图,饼图,散点图等。Matplotlib库的名字来源于MATLAB,模仿MATLAB构建,语法也十分相似。
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 数据可视化:Matplotlib库的使用

1.Matplotlib库简介

Matplotlib是一个第三方python 2D绘图库,利用它可以画出许多高质量的图像。只需几行代码即可生成直方图,条形图,饼图,散点图等。

Matplotlib库的名字来源于MATLAB,模仿MATLAB构建,语法也十分相似。


2.Matplotlib库安装

因为 Matplotlib库是第三方库,所以我们要先进行安装。

我们可以使用pip命令来直接安装:

pip install matplotlib
但这里我推荐直接安装 Anaconda,一个开源的 Python 发行版本,其包含了 Python、NumPy、Matplotlib 等180多个科学包及其依赖项。
官网地址: https://www.anaconda.com/

3.pyplot

pyplotMatplotlib库中最基础的模块,本篇文章主要展示 pyplot的使用。

我们平常使用时通常以如下形式导入库:

import matplotlib.pyplot as plt

3.1 基本绘图流程

使用Matplotlib库绘图一般遵循以下流程:

  1. 创建画布(可选)
  2. 创建子图并选定子图(可选)
  3. 为图像添加标题、设定图像参数
  4. 绘制图像
  5. 添加图例
  6. 保存图像或显示图像

3.2 常用方法

3.2.1 创建画布

使用 plt.figure()方法可以创建一块画布,可以通过参数指定它的大小和背景颜色:
plt.figure(figsize=None, facecolor=None)

3.2.2 创建子图并选定子图

使用 plt.subplot()方法可以在全局绘图区域中创建一个子图,它的语法格式如下:
plt.subplot(nrows, ncols, index, **kwargs)
plt.subplot(pos, **kwargs)
plt.subplot(**kwargs)
plt.subplot(ax)

一共4种创建方式:

  • 第一种是用3个参数,分别代表网格的行数 nrows,列数 ncols,索引号index。它们都是位置参数。
  • 第二种是用一个3位数的整数,每一位分别代表网格的行数,列数 ,索引号。pos也是是位置参数。
  • 第三种会用默认值创建一个子图。
  • 第四种则以一个axes为参数,创建子图。

除此之外,我们还可以用plt.axes(rect,axisbg='w')方法创建一个坐标系风格的子图:

plt.axes(rect,axisbg='w')
rect参数指定位置,用 axisbg参数指定背景颜色。

3.2.3 为图像添加标题、设定图像参数

首先, Matplotlib库默认是不支持中文的,使用中文会产生乱码,如果要使用中文可以在导入库后加入下列两行代码来临时修改配置文件:
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体为黑体
plt.rcParams["axes.unicode_minus"]=False # 防止负号乱码
我们可以用 plt.title()方法为子图添加标题,也可以使用 plt.suptitle()方法为当前绘图区域添加中心标题。

使用plt.xlabel(s)plt.ylabel(s)方法可以分别设置当前x轴和y轴的标签。

使用plt.grid()方法可以设置图表中的网格线:

plt.grid(b=None, which='major', axis='both', **kwargs)

参数说明:

  • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
  • which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。
  • axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向。
  • **kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

图像参数还有许多,更多请参见官方手册:https://matplotlib.org/

3.2.4 绘制图像

Matplotlib库可以绘制许多类型的图,这里以绘制曲线图为例。

使用plt.plot()方法可以绘制曲线图,语法结构如下:

plt.plot(x, y, format_string, **kwargs)

参数说明:

  • x:可选,表示X轴数据,类型为列表或数组。
  • y:表示Y轴数据,类型为列表或数组。
  • format_string:可选,由颜色字符、线条字符、标记字符组成。
  • **kwargs:多组(x,y,format_string),绘制多条曲线。

其中常用颜色字符有:

颜色字符 颜色
'b' 蓝色
'g' 绿色
'r'
'c' 青色
'm' 品红
'y' 黄色
'k'
'w' 白色
'#008000' RGB某颜色
'0.8' 灰度值
常用线条字符有:
线条字符 线条
'‐' 实线
'‐‐' 破折线
'‐.' 点划线
':' 虚线
''' ' 无线条
常用标记字符有:
标记字符 标记
"."
"," 像素点
"o" 实心圆
"v" 下三角
"^" 上三角
"<" 左三角
">" 右三角
"1" 下三叉
"2" 上三叉
"3" 左三叉
"4" 右三叉
"8" 八角形
"s" 正方形
"p" 五边形
"P" 加号(加粗)
"*" 星号
"h" 竖六边形
"H" 横六边形
"+" 加号
"x" 乘号 x
"X" 乘号(加粗)
"D" 菱形
"d" 瘦菱形
"|" 竖线
"_" 横线
'$...$' 渲染指定的字符。例如 "$f$" 以字母 f 为标记。
除了常用的曲线图外, Matplotlib库还可以绘制许多其他种类的图:
函数 说明
plt.plot() 绘制折线图
plt.scatter() 绘制散点图
plt.bar() 绘制柱状图
plt.barh() 绘制横向柱状图
plt.stem() 绘制火柴图
plt.step() 绘制阶梯图
plt.hist() 绘制直方图
plt.boxplot() 绘制箱线图
plt.errorbar() 绘制误差条图
plt.violinplot() 绘制小提琴图
plt.eventplot() 绘制尖峰栅格图
plt.hist2d() 绘制二维直方图/散点密度图
plt.hexbin() 绘制Hexbin散点图
plt.pie() 绘制扇形图
具体用法和参数,请参见官方手册: https://matplotlib.org/

3.2.5 添加图例

我们可以用 plt.legend()方法为子图添加图例,也可以使用 plt.figlegend()方法为全局绘图区域添加图例,传入一个列表参数来给每条线命名。

3.2.6 保存图像或显示图像

使用 plt.savefig()方法可以保存当前图像,参数为文件保存路径及文件名。

使用plt.show()方法可以显示当前图像。


4.代码实例

用我们所学的方法绘制一张曲线图吧:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体为黑体
plt.rcParams["axes.unicode_minus"]=False # 防止负号乱码

plt.figure(figsize=(16, 9))
plt.suptitle("图表")

f1 = lambda x:x**0.5
f2 = lambda x:x
f3 = lambda x:x**2

x = list(range(0,6))
y1 = [f1(i) for i in x]
y2 = [f2(i) for i in x]
y3 = [f3(i) for i in x]

plt.subplot(221)
plt.plot(x,y1,'b-v')
plt.title("y=√x")

plt.subplot(222)
plt.plot(x,y2,'g--1')
plt.title("y=x")

plt.subplot(223)
plt.plot(x,y3,'r-.s')
plt.title("y=x^2")

plt.subplot(224)
plt.plot(x,y1,'b-v')
plt.plot(x,y2,'g--1')
plt.plot(x,y3,'r-.s')
plt.title("对比图")
plt.legend(["√x","x","x^2"])

plt.figlegend(["√x","x","x^2"])

plt.show()
效果图:
图表
目录
相关文章
|
13天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
11天前
|
数据可视化 数据挖掘 定位技术
Python和Geopandas进行地理数据可视化
【10月更文挑战第22天】本文介绍了如何使用Python和Geopandas进行地理数据可视化和分析,涵盖从准备工作、加载数据、数据探索与处理、地理数据可视化、空间分析与查询到交互式地理数据可视化等内容。通过丰富的代码示例和案例演示,帮助读者掌握地理数据分析的基本方法,为实际应用提供支持。
52 19
|
7天前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
10天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
26 4
|
10天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
22 2
|
15天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
36 7
|
14天前
|
数据可视化 JavaScript 前端开发
Python中交互式Matplotlib图表
【10月更文挑战第20天】Matplotlib 是 Python 中最常用的绘图库之一,但默认生成的图表是静态的。通过结合 mpld3 库,可以轻松创建交互式图表,提升数据可视化效果。本文介绍了如何使用 mpld3 在 Python 中创建交互式散点图、折线图和直方图,并提供了详细的代码示例和安装方法。通过添加插件,可以实现缩放、平移和鼠标悬停显示数据标签等交互功能。希望本文能帮助读者掌握这一强大工具。
43 5
|
8天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
15天前
|
文字识别 自然语言处理 API
Python中的文字识别利器:pytesseract库
`pytesseract` 是一个基于 Google Tesseract-OCR 引擎的 Python 库,能够从图像中提取文字,支持多种语言,易于使用且兼容性强。本文介绍了 `pytesseract` 的安装、基本功能、高级特性和实际应用场景,帮助读者快速掌握 OCR 技术。
32 0
|
2月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。