Python Matplotlib库:基本绘图补充

简介: 上期我们讲了 Matplotlib 库的基本语法,并以折线图为例,绘制了我们的第一幅图表。这期我们来说说如何用 Matplotlib 库绘制其他常用图表。plot()是 Matplotlib 库中绘制折线图的方法,而绘制散点图,我们会使用scatter()。在 Matplotlib 库中,我们使用bar()方法来绘制柱状图。使用stem()方法来绘制火柴图。使用step()方法来绘制阶梯图。使用fill_between()方法来填充一段区间。

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。

🥭本文内容:Python Matplotlib库:基本绘图补充

@[TOC]


1.引言

上期我们讲了 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 其他参数。

代码实例:

统计各班身高体重分布:
```python
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()

>效果图:
![散点图](https://ucc.alicdn.com/images/user-upload-01/d9c22a86f18c4f9a98057edc8ea3b1dd.png)
---
# 3.柱状图
>在 **Matplotlib** 库中,我们使用``bar()``方法来绘制柱状图,它的语法格式如下:

```python
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 位置为中心,这是默认值。
'edge':将柱形图的左边缘与 x 位置对齐。
要对齐右边缘的条形,可以传递负数的宽度值及 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 位置为中心,这是默认值。
'edge':将柱形图的左边缘与 y 位置对齐。
要对齐上边缘的条形,可以传递负数的宽度值及 align='edge'。
**kwargs|其他参数。

代码实例:

对比参赛人员的表现分:
```python
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()

>效果图:
![柱状图](https://ucc.alicdn.com/images/user-upload-01/f0706573def9498a94cf3ed5220ab6ac.png)
---
# 4.火柴图
>在 **Matplotlib** 库中,我们可以使用``stem()``方法来绘制火柴图,它的语法格式如下:

```python
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()

效果图:
填充

目录
相关文章
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
2321 103
|
12月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
2312 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
12月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
1011 0
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
11月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
696 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
11月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
976 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
860 20
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
931 51
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
741 18
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
1066 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程

推荐镜像

更多