少年乘勇气,百战过乌孙。这篇文章主要讲述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()
基础散点图绘制散点图前,我们先来看看 ??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()
复合图形功能强大的 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()
绘制多个不同的图表
我们在 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()
在 ??plt.subplots()?
? 设置 ??sharey=True?
? 能让两个子图在 Y 轴上平行,而 dpi 则可以调整图标的清晰度。
进阶图形Matplotlib 的图库远比点线图丰富,即使是更多的图表、曲线图都不在话下,我们甚至还可以调整各种参数修改图表大小和背景颜色等。由于篇幅限制,这里只放出几个进阶图形的参考图,有需要的小伙伴可以通过代码传送门??在线查看 Python 代码??,也可以参考 ??Matplotlib 的官方文档??。
绘制多个图表
这一组图表使用了 numpy 模块的 ??randint?
? 随机数和 ??for?
? 循环实现:
打开 ??fourPlots.py?
? 项目查看代码:https://55911a1851-share.lightly.teamcode.com
绘制曲线图(正余弦波)
打开 ??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]
打开 ??plotBackground.py?
? 项目查看代码:https://55911a1851-share.lightly.teamcode.com
添加注释
??plt.text?
? 和 ??plt.annotate?
? 可以分别为图表添加文本和注释。如果你想要添加多个注释,还可以通过 for 多次循环 ??plt.text()?
? 函数。
打开 ??plotAnnotate.py?
? 项目查看代码:https://55911a1851-share.lightly.teamcode.com
调整子图大小
我们可通过 Matplotlib 自带的两个函数绘制多子图的布局,即 ??plt.subplot2grid?
? 和 ??plt.GridSpec?
?。
我们甚至还可以在主图上添加子图:
打开 ??subplotSize.py?
? 及 ??plotinPlot.py?
? 项目查看代码:https://55911a1851-share.lightly.teamcode.com
泡沫图、柱状图、箱型图和时间序列
【Python 教程Matplotlib 数据类型汇总】我们可以通过 ??plt.scatter()?
? 函数动态改变某个点的颜色和大小,形成泡沫图的效果,甚至还可以关联 pandas 数据。
此外,我们还可以通过 ??plt.step()?
?、??plt.hist()?
?、??plt.boxplot()?
?、??plt.bar()?
? 绘制不同的图表效果:
打开 ??bubblePlot.py?
? 及 ??assortedPlot.py?
? 项目查看代码:https://55911a1851-share.lightly.teamcode.com
本篇介绍的图形应用场景各有不同,大家可以根据自己的需求进行尝试。如果你对 ??TeamCode?? 的其他文章感兴趣,欢迎查看:
??怎么看待 Python(PyScript) 可以做浏览器前端开发语言???
??使用 Python Turtle 制作贪吃蛇游戏??
??学习 Python 爬虫,手把手通过 Python 入门爬取网页信息??
推荐阅读
- linux之Ansible快速入门
- Clojure环境安装与QuickStart
- Springboot使用velocity模板引擎
- 交换两个数组的元素使之总和的差值最小
- Clojure使用Java方法
- C/C++快速排序
- 道德经
- C++中四种类型转换符(static_castdynamic_castreinterpret_cast和const_cast要点解析)
- 目遇