Python Matplotlib库:基本绘图补充

简介: 上期我们讲了 Matplotlib 库的基本语法,并以折线图为例,绘制了我们的第一幅图表。这期我们来说说如何用 Matplotlib 库绘制其他常用图表。plot()是 Matplotlib 库中绘制折线图的方法,而绘制散点图,我们会使用scatter()。在 Matplotlib 库中,我们使用bar()方法来绘制柱状图。使用stem()方法来绘制火柴图。使用step()方法来绘制阶梯图。使用fill_between()方法来填充一段区间。
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python Matplotlib库:基本绘图补充

@TOC


1.引言

上期我们讲了 Matplotlib 库的基本语法,并以折线图为例,绘制了我们的第一幅图表。(参见: Python 数据可视化:Matplotlib库的使用

这期我们来说说如何用 Matplotlib 库绘制其他常用图表。


2.散点图

plot()Matplotlib 库中绘制折线图的方法,而绘制散点图,我们会使用 scatter(),它的语法格式如下:
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

参数 说明
xy 长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
s 点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
c 点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。
marker 点的样式,默认小圆圈 'o'。
cmap Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。
norm Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
vminvmax 亮度设置,在 norm 参数存在时会忽略。
alpha 透明度设置,0-1 之间,默认 None,即不透明。
linewidths 标记点的长度。
edgecolors 颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。
plotnonfinite 布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
**kwargs 其他参数。

代码实例:

统计各班身高体重分布:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体为黑体
plt.rcParams["axes.unicode_minus"]=False # 防止负号乱码

plt.figure(figsize=(16, 9))
plt.suptitle("各班同学的身高体重分布图")

x1 = [60,42,56,44,60,38,55,48]
x2 = [61,51,55,46,81,44,66,51]
x3 = [70,45,75,60,63,58,71,49]
y1 = [163,153,164,156,165,156,168,157]
y2 = [170,159,171,159,171,160,172,161]
y3 = [178,165,178,165,180,168,180,168]

plt.subplot(221)
plt.scatter(x1,y1,c='b')
plt.title("一班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(222)
plt.scatter(x2,y2,c='g')
plt.title("二班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(223)
plt.scatter(x3,y3,c='r')
plt.title("三班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(224)
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='g')
plt.scatter(x3,y3,c='r')
plt.title("汇总图")
plt.xlabel("体重")
plt.ylabel("身高")
plt.legend(["一班","二班","三班"])

plt.show()
效果图:
散点图

3.柱状图

Matplotlib 库中,我们使用 bar()方法来绘制柱状图,它的语法格式如下:
plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:

参数 说明
x 浮点型数组,柱形图的 x 轴数据。
height 浮点型数组,柱形图的高度。
width 浮点型数组,柱形图的宽度。
bottom 浮点型数组,底座的 y 坐标,默认 0。
align 柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。<br/> 'edge':将柱形图的左边缘与 x 位置对齐。<br/>要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。
**kwargs 其他参数。
或者使用 barh()绘制横向的柱状图,语法格式如下:
plt.barh(y, width, height=0.8, left=None, *, align='center', **kwargs)

参数说明:

参数 说明
y 浮点型数组,柱形图的 y 轴数据。
width 浮点型数组,柱形图的宽度。
height 浮点型数组,柱形图的高度。
left 浮点型数组,底座的 x 坐标,默认 0。
align 柱形图与 y 坐标的对齐方式,'center' 以 y 位置为中心,这是默认值。<br/> 'edge':将柱形图的左边缘与 y 位置对齐。<br/>要对齐上边缘的条形,可以传递负数的宽度值及 align='edge'。
**kwargs 其他参数。

代码实例:

对比参赛人员的表现分:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))
plt.suptitle("参赛人员的表现分")

people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
performance = (4, 5, 8, 3, 6)

plt.bar(people, performance)

plt.show()
效果图:
柱状图

4.火柴图

Matplotlib 库中,我们可以使用 stem()方法来绘制火柴图,它的语法格式如下:
plt.stem([locs,] heads, linefmt=None, markerfmt=None, basefmt=None)

参数说明:

参数 说明
locs 对于垂直火柴图,为火柴的 x 坐标。对于水平火柴图,为火柴的 y 坐标。
heads 对于垂直火柴图,为火柴的 y 坐标。对于水平火柴图,为火柴的 x 坐标。
linefmt 线条格式字符,可指定线条的颜色和样式。
markerfmt 标记格式字符,可指定火柴头的颜色和样式。
basefmt 基线格式字符,可指定基线的颜色和样式。
orientation 默认为 'vertical',如果为 'vertical',将生成垂直火柴图,否则将生成水平火柴图。
bottom 默认为0,基线的 y/x 坐标(取决于方向)。
label 图例中火柴的标签。

代码实例:

对比参赛人员的表现分:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))
plt.suptitle("参赛人员的表现分")

x = ("张三", "李四", "王五", "赵六", "孙七")
y = (4, 5, 8, 3, 6)

plt.stem(x, y, linefmt="r-.",markerfmt="gs",basefmt="b-")

plt.show()
效果图:
火柴图

5.阶梯图

Matplotlib 库中,我们可以使用 step()方法来绘制阶梯图,它的语法格式如下:
plt.step(x, y, [fmt], *, data=None, where='pre', **kwargs)

参数说明:

参数 说明
xy 节点的 x,y 坐标值。
fmt 格式字符串,与plot()方法的format_string参数类似。
data 两个Iterables,包含已标记数据的标签名称。
where 设置阶梯所在位置,取值范围为{'pre', 'post', 'mid'},默认值为'pre'。
**kwargs plot()

代码实例:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))

x = list(range(1, 6))
y = (4, 5, 8, 3, 6)

plt.step(x, y, "b-.s")

plt.show()
效果图:
阶梯图

6.填充

Matplotlib 库中,我们可以使用 fill_between()方法来填充一段区间,它的语法格式如下:
plt.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)

参数说明:

参数 说明
x 节点的 x 坐标值。
y1 第一条曲线节点的 y 坐标值。
y2 第二条曲线节点的 y 坐标值。
where 排除填充区间。
**kwargs 其他参数。

代码实例:

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.plot(x,y1,'b-v')
plt.plot(x,y2,'g--1')
plt.plot(x,y3,'r-.s')
plt.fill_between(x,y1,y2,color='b',alpha=0.2)
plt.fill_between(x,y2,y3,color='r',alpha=0.2)
plt.title("对比图")
plt.legend(["√x","x","x^2"])

plt.show()
效果图:
填充
目录
相关文章
|
5天前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
5天前
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
13 0
|
6天前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
13 0
|
11天前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
27 0
|
11天前
|
算法 数据可视化 计算机视觉
Python中医学图像处理常用的库
在Python中,医学图像处理常用的库包括:ITK(及其简化版SimpleITK)、3D Slicer、Pydicom、Nibabel、MedPy、OpenCV、Pillow和Scikit-Image。这些库分别擅长图像分割、配准、处理DICOM和NIfTI格式文件、图像增强及基础图像处理等任务。选择合适的库需根据具体需求和项目要求。
22 0
|
11天前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
28 0
|
20天前
|
数据可视化 Python
Python 高级绘图:从基础到进阶的可视化实践
本文介绍了使用 Python 的强大绘图库 matplotlib 实现多种图表绘制的方法,包括简单的折线图、多条折线图、柱状图、饼图、散点图及 3D 图的绘制。通过具体代码示例展示了如何设置轴标签、标题、图例等元素,并指出了 matplotlib 支持更多高级绘图功能。来源:https://www.wodianping.com/app/2024-10/47112.html。
63 0
|
数据可视化 数据挖掘 API
《利用Python进行数据分析·第2版》第9章 绘图和可视化
第1章 准备工作第2章 Python语法基础,IPython和Jupyter第3章 Python的数据结构、函数和文件第4章 NumPy基础:数组和矢量计算第5章 pandas入门第6章 数据加载、存储与文件格式第7章 数据清洗和准备第8章 数据规整:聚合、合并和重塑 第9章 绘图和可视化第10章 数据聚合与分组运算第11章 时间序列第12章 pandas高级应用第13章 Python建模库介绍第14章 数据分析案例附录A NumPy高级应用附录B 更多关于IPython的内容(完) 信息可视化(也叫绘图)是数据分析中最重要的工作之一。
1848 0
|
数据可视化 数据挖掘 Python
python数据分析(十四)-matplotlib 绘图与可视化
尽管pandas的绘图函数可以处理很多普通的绘图任务,但是要使用高级功能的话需要学习matplotlib API。
1445 0
|
数据可视化 Python 编解码
Python之绘图和可视化
Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中。 可以使用plt.figure创建一个新的Figure,不能通过空Figure绘图,必须用add_subplot创建一个或多个subplot axes[0,1]可以通过sha
1328 0