当前位置 : 主页 > 编程语言 > python >

【Python 教程】Matplotlib 数据类型汇总

来源:互联网 收集:自由互联 发布时间:2022-06-15
Matplotlib 是一个用于数据可视化的 Python 模块。Matplotlib 和 Pandas 可作为互补工具,因为前者内建了大量的图表库,进一步提高了数据的可视性。这篇教程虽然没有办法完全介绍 Matplotli

【Python 教程】Matplotlib 数据类型汇总_数据分析

Matplotlib 是一个用于数据可视化的 Python 模块。Matplotlib 和 Pandas 可作为互补工具,因为前者内建了大量的图表库,进一步提高了数据的可视性。 这篇教程虽然没有办法完全介绍 Matplotlib 的每一个细节,但我们还是可以尝试覆盖 Matplotlib 的各种基础功能,包括几个比较有趣的进阶项目。 阅读这篇教程需要具有一定的 Python 和 Pandas 基础,如果之前对 Python 完全没有任何了解,欢迎查看我们之前的相关教程: ​​【Python 核心库】Numpy 实景教程与练习​​

​​【Python 教程】使用 Pandas 整理数据​​


基础线形图

创建最简单的线形图只需要一行代码,随后通过 ​​plt.show()​​ 展示图表即可:

import matplotlib.pyplot as plt

# 绘图
plt.plot([1, 2, 3, 4, 10])
plt.show()

【Python 教程】Matplotlib 数据类型汇总_数据分析_02

基础散点图

绘制散点图前,我们先来看看 ​​plt.plot()​​ 的参数内容:(x, y, 格式)。这个格式其实是颜色、标记、线条的缩写。举个例子:

​​'go-'​​ 为绿色(green)、圆点、无线条,那样输出的图形便是散点图。

​​'r*--'​​ 为红色(red)、星形、虚线

​​'ks.'​​ 为黑色(black)、方形(square)、点线

​​'bD-.'​​ 为蓝色(blue)、菱形(diamond)、点划线

这些例子无需硬背,有需要的时候输入并运行 ​​help(plt.plot)​​ 即可。

# 'go' 表示绿点
plt.plot([1,2,3,4,5], [1,2,3,4,10], 'go')
plt.show()

【Python 教程】Matplotlib 数据类型汇总_python_03

复合图形

功能强大的 Matplotlib 自然不会满足于单个图形,接下来这段将分为两个部分:在同一图表中绘制多个数据以及在同一窗口中绘制多个不同的图表。


在同一图表中绘制多个数据

这个其实很简单,只需要重复编写 ​​plt.plot()​​ 就可以了。加上标题、标签名称和图例即可输出以下效果:

plt.plot([1,2,3,4,5], [1,2,3,4,10], 'go', label='GreenDots')
plt.plot([1,2,3,4,5], [2,3,4,5,11], 'b*', label='Bluestars')
plt.title('A Simple Scatterplot')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='best') # 图例文本取自标签,图例是集中于图表一侧的指标说明
plt.show()

【Python 教程】Matplotlib 数据类型汇总_数据分析_04

绘制多个不同的图表

我们在 Matplotlib 中绘制图表时,其实是在一个类似画布的 ​​figure​​ 中加入各种各样的元素,而这里面的子图被称之为 ​​axes​​(与 XY axis 轴并不相同)。一般而言,一个图表至少拥有一个子图。当我们有多个子图时,这些图表就会通过行列排序。

如果我们要在同一个画布中绘制多个子图,应使用的函数为 ​​plt.subplots(1, 2)​​。其中,数字 1、2 分别表示子图代号,原本的 ​​plt.plot()​​ 需要分别改成 ​​ax1.plot()​​ 和 ​​ax2.plot()​​。

# 创建画布与子图
fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10,4), sharey=True, dpi=120)

# 绘制图表
ax1.plot([1,2,3,4,5], [1,2,3,4,10], 'go') # greendots
ax2.plot([1,2,3,4,5], [2,3,4,5,11], 'b*') # bluestar

# 设定标签与上限
ax1.set_title('Scatterplot Greendots'); ax2.set_title('Scatterplot Bluestars')
ax1.set_xlabel('X'); ax2.set_xlabel('X') # x 标签
ax1.set_ylabel('Y'); ax2.set_ylabel('Y') # y 标签
ax1.set_xlim(0, 6) ; ax2.set_xlim(0, 6) # x 轴上限
ax1.set_ylim(0, 12); ax2.set_ylim(0, 12) # y 轴上限

# ax2.yaxis.set_ticks_position('none')
plt.tight_layout()
plt.show()

【Python 教程】Matplotlib 数据类型汇总_数据_05

在 ​​plt.subplots()​​ 设置 ​​sharey=True​​ 能让两个子图在 Y 轴上平行,而 dpi 则可以调整图标的清晰度。


进阶图形

Matplotlib 的图库远比点线图丰富,即使是更多的图表、曲线图都不在话下,我们甚至还可以调整各种参数修改图表大小和背景颜色等。由于篇幅限制,这里只放出几个进阶图形的参考图,有需要的小伙伴可以通过代码传送门​​在线查看 Python 代码​​,也可以参考 ​​Matplotlib 的官方文档​​。


绘制多个图表

这一组图表使用了 numpy 模块的 ​​randint​​ 随机数和 ​​for​​ 循环实现:

【Python 教程】Matplotlib 数据类型汇总_python_06

打开 ​​fourPlots.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com


绘制曲线图(正余弦波)

【Python 教程】Matplotlib 数据类型汇总_Matplotlib_07

打开 ​​sincosWave.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com


调整背景颜色

Matplotlib 自带的样式代码:

plt.style.available# ['seaborn-dark', 'seaborn-darkgrid', 'seaborn-ticks', 'fivethirtyeight',
# 'seaborn-whitegrid', 'classic', '_classic_test', 'fast', 'seaborn-talk',
# 'seaborn-dark-palette', 'seaborn-bright', 'seaborn-pastel', 'grayscale',
# 'seaborn-notebook', 'ggplot', 'seaborn-colorblind', 'seaborn-muted',
# 'seaborn', 'Solarize_Light2', 'seaborn-paper', 'bmh', 'tableau-colorblind10',
# 'seaborn-white', 'dark_background', 'seaborn-poster', 'seaborn-deep']

【Python 教程】Matplotlib 数据类型汇总_python_08

打开 ​​plotBackground.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com


添加注释

​​plt.text​​ 和 ​​plt.annotate​​ 可以分别为图表添加文本和注释。如果你想要添加多个注释,还可以通过 for 多次循环 ​​plt.text()​​ 函数。

【Python 教程】Matplotlib 数据类型汇总_python_09

打开 ​​plotAnnotate.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com


调整子图大小

我们可通过 Matplotlib 自带的两个函数绘制多子图的布局,即 ​​plt.subplot2grid​​ 和 ​​plt.GridSpec​​。

【Python 教程】Matplotlib 数据类型汇总_数据分析_10

我们甚至还可以在主图上添加子图:

【Python 教程】Matplotlib 数据类型汇总_数据分析_11

打开 ​​subplotSize.py​​ 及 ​​plotinPlot.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com


泡沫图、柱状图、箱型图和时间序列

我们可以通过 ​​plt.scatter()​​ 函数动态改变某个点的颜色和大小,形成泡沫图的效果,甚至还可以关联 pandas 数据。

【Python 教程】Matplotlib 数据类型汇总_数据_12

此外,我们还可以通过 ​​plt.step()​​、​​plt.hist()​​、​​plt.boxplot()​​、​​plt.bar()​​ 绘制不同的图表效果:

【Python 教程】Matplotlib 数据类型汇总_数据_13

打开 ​​bubblePlot.py​​ 及 ​​assortedPlot.py​​ 项目查看代码:https://55911a1851-share.lightly.teamcode.com

本篇介绍的图形应用场景各有不同,大家可以根据自己的需求进行尝试。如果你对 ​​TeamCode​​ 的其他文章感兴趣,欢迎查看:

​​怎么看待 Python(PyScript) 可以做浏览器前端开发语言?​​

​​使用 Python Turtle 制作贪吃蛇游戏​​

​​学习 Python 爬虫,手把手通过 Python 入门爬取网页信息​​


上一篇:Python-函数(副本传参)
下一篇:没有了
网友评论