matplotlib教程

Matplotlib | 一文搞定Matplotlib从入门到实战演练! Matplotlib 是一个 Python 的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。官网https://matplotlib.org/\qquad学习Matplotlib 可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。Matplotlib是Python的库,又是开发中常用的库。 阅读详情

第一章 初识matplotlib

1.1 matplotlib概述

       matplotlib是由约翰 ⋅ \cdot ⋅亨特等人仿照MATLAB写的一种用于绘制2D、3D图表的工具。该工具不仅提供丰富的图表绘制函数,而且可以对图表样式和元素进行定制。目前,matplotlib支持numpy和pandas数据结构。为了方便操作,matplotlib官方提供3种API::pyplotAPI, object-oriented API、pylab API。
1. pyplot API
       pyplot API使用pyplot模块开发接口,该接口底层封装了一系列与MATLAB命令同名的函数,使得MATLAB用户可以快速绘制图表。当使用pyplotAPI绘图时,需要先使用“import matplotlib.pyplot as plt”语句导入pyplot模块,并使用该模块调用绘制函数可在当前的画布和绘图区域中绘制图表。
2. object-oriented API
       object-oriented API是面向对象的接口,该接口包含了一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才能完成绘制。当使用object-oriented API绘图时,首先创建画布(Figure类对象),再在该画布上添加拥有坐标系统的绘图区域(Axes类对象),最后在该绘图区域中调用绘图方法绘制图表。
3. pylab API
       pylab API是使用pylab模块开发的接口,最初是为了模仿MATLAB工作方式而设计的,包括pyplot、numpy模块及一些其他附加功能。matplot官方不建议使用pylab API进行开发,并在最新版中弃用了pylab API。

1.2 matplotlib绘制图形的层次结构

       matplotlib绘制图表和画素描类似,假设我们想画一幅素描,首先需要在画架上放置一个画板,然后在画板上固定一张素描纸,最后在素描纸上进行创作。同理,matlablib绘制的图形并非只有一一层结构,它也是由多层结构组成,以便对每层结构进行单独设置。
       matplotlib绘制的图形主要由三层结构组成:容器层、图像层和辅助显示层。
1. 容器层
       容器层主要由Canvas对象、Figure对象和Axes对象组成,其中Canvas对象充当画板的角色,位于底层;Figure对象充当素描纸的角色,即画布,它可以包含多个图表,位于Canvas对象上方,也就是用户操作的第一层;Axes对象充当画布中绘图区域的角色,它拥有独立的坐标系,可以将其看作一个图表,位于Figure对象的上方,也就是用户操作应用层的第二层。它们之间的关系如下图所示。

                                   图1-1 Canvas对象、Figure对象和Axes对象之间的关系
2. 图像层
       图像层是指在绘图区域内绘制的图形。
3. 辅助显示层
       辅助显示层是指在绘图区域内除绘制图形以外的元素,包括坐标轴、标题、注释文本等。

实例 1-1:
步骤一:创建画布

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布

步骤二:创建带坐标系的绘图区域

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
plt.show()
                                                                                       图1-2 坐标系绘图区域

步骤三:绘制曲线

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.plot(x, y)  # 绘制曲线
plt.show()
                                                                                       图1-3 绘制曲线

第二章 常见的绘图函数

2.1 折线图

        折线图是将数据标注成点,并通过直线将这些点按顺序连接而成的图表,主要用于反映事物延某个维度的变化趋势,例如数据增减趋势、速率和峰值等特征。plot()函数的语法格式如下:

plot(x, y, fmt, scalex=True, scaley=True, data=None, label=None, *args, *kwargs)
# x表示x轴的数据。
# y表示y轴的数据。
# fmt表示快速设置线条样式的格式字符串。
# label表示应用于图例的标签文本。

实例 2-1 见实例1-1。

2.2 散点图

        散点图又称X-Y图,是由若干个数据点组成的图表,主要用于判断两变量之间的相关性。若所有数据点在一条直线附近波动,说明变量之间是线性相关的;若所有数据点在曲线附近波动,说明变量之间是非线性相关的;若所有数据点没有显示任何关系,说明变量之间是不相关的。scatter()函数的语法格式如下:

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None)
# x表示x轴的数据。
# y表示y轴的数据。
# s表示数据点大小。
# c表示数据点颜色。
# marker表示数据点的样式,默认为圆点。
# cmap表示数据点的颜色映射表,仅当参数c为浮点数组时才能够使用。
# norm表示数据点的亮度,可以取值为0~1。
# vmin表示亮度的最小值。
# vmax表示亮度的最大值。
# alpha表示透明度。
# linewidths表示数据点边缘的宽度。
# edgecolors表示数据点边缘的颜色。

实例 2-2

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 30)
y = x ** 2

area = np.linspace(0, 10, 30) * 5
fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.scatter(x, y, s=area, c='tomato')  # 绘制散点图
plt.show()
                                                                                       图2-1 散点图

2.3 箱形图

        箱形图又称盒须图、箱线图,是一种利用数据中的5个统计量(最大值、上四分位数、中位数、下四分位数和最小值)来描述的图表,主要用于识别异常值、判断偏态与尾重、比较数据形状,箱形图的结构及异常值如下图所示。

                                                                                       图1-5 箱形图结构与异常值
        boxplot()函数的语法格式如下:

boxplot(x, notch=None, sym=None, vert=None, whis=None, position=None, widths=None, patch_artist=None, usermedians=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)
# x表示绘制箱形图的数据。
# sym表示异常值对应的符号,默认值为空心圆圈。
# vert表示是否将箱形图垂直摆放,默认为垂直摆放。
# whis表示箱形图上下与四分位的距离,默认为1.5倍四分位差。
# positions表示箱体的位置。
# widths表示箱体的宽度,默认为0.5。
# patch_artist表示是否填充箱体的颜色,默认不填充。
# meanline表示是否横跨箱体的线条标出中位数,默认不使用。
# showbox表示是否显示箱形图的箱体,默认显示。
# showcaps表示是否显示箱体顶部和底部的横线,默认显示。
# showfliers表示是否显示异常值,默认显示。
# labels表示箱形图的标签。

实例 2-3

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(100)

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.boxplot(x)  # 绘制箱线图
plt.show()
                                                                                       图2-2 箱线图

2.4 三维图表

        mplot3d是matplotlib中专门绘制3D图表的工具包,它主要包含一个继承自Axes的子类Axes3D,使用Axes3D类可以构建一个三维坐标系的绘图区域。
        在调用add_subplot()方法添加绘图区域时,为该方法传入projection=“3d”,即指定坐标系的类型为三维坐标系,返回一个Axes3D类对象。add_subplot()函数的语法格式如下:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

2.4.1 常见的三维图表

        常见的三维图表包括三维线框图、三维柱形图、三维散点图等。关于这些方法的说明如下表所示。

表2-1 Axes3D类常用的绘图方法说明
方法说明
plot()绘制3D线图
plot_wireframe()绘制3D线框图
plot_surface()绘制3D曲面图
bar3d()绘制3D柱形图
scatter3D()绘制3D散点图
plot_trisurf()绘制三面图
contour3D()绘制3D等高线图
contourf3D()绘制3D填充等高线图

1. 三维线框图

plot_wireframe(X, Y, Z, *args, **kwargs)

# X, Y, Z表示x, y, z轴的数据
# rcount, ccount表示每个坐标轴方向使用的最大样本量,默认50
# rstride, cstride表示采样密度,仅使用参数rstride或cstride中任意一个,则另外一个默认为0

实例 2-5

import numpy as np
import matplotlib.pyplot as plt

# 构造数据
x1 = np.arange(-5, 5, 0.25)
y1 = np.arange(-5, 5, 0.25)

X, Y = np.meshgrid(x1, y1)
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

ax.plot_wireframe(X, Y, Z, rstride=3, cstride=2)  # 绘制三维线框图
plt.show()
                                                                                       图2-3 三维线框图

第三章 图表辅助元素定制

3.1 图表常用的辅助元素

        常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格。为了便于理解,下面以折线图介绍图表常用辅助元素,如图3-1所示。

                                                                                       图3-1 图表常用辅助元素
        由图3-1显示,常用的辅助元素说明如下:

  • 坐标轴分为单坐标轴和双坐标轴,单坐标轴按不同的方向可分为水平坐标轴( x x x 轴)和垂直坐标轴( y y y 轴);
  • 标题用于说明图表主题;
  • 图例用于指出图表中图形的标识形式;
  • 网格是贯穿整个绘图区域的若干线条,用于作为估算图形所示值;
  • 参考线是坐标轴上特殊值的一条直线;
  • 参考区域是坐标轴上一块特殊范围的区域;
  • 注释文本是对图形中一些特殊点的注释和说明;
  • 表格是用于强调比较难理解数据的表格。

3.2 坐标轴

3.2.1 初识坐标轴

        坐标轴由轴脊、刻度标签、刻度线(主刻度线和次刻度线)和坐标轴标签组成,具体描述如图3-2所示。

                                                                                       图3-2 图表常用辅助元素

3.2.2 坐标轴设置

1. 设置x、y轴标签
        set_xlabel()和set_ylabel()函数的语法格式如下:

set_xlabel(xlabel, fontdict=None, labelpad=None, **kwargs)  # x轴标签
set_ylabel(ylabel, fontdict=None, labelpad=None, **kwargs)  # y轴标签

# xlabel表示x轴标签文本;
# ylabel表示y轴标签文本;
# fontdict表示控制标签文本样式的字典;
# labelpad表示标签与坐标轴边框(包括刻度和刻度标签)的距离。

2. 设置刻度范围
        set_xlim()和set_ylim()函数的语法格式如下:

set_xlim(left=None, right=None, emit=True, auto=False, *, xmin=None, xmax=None)  # x轴刻度范围
set_ylim(bottom=None, top=None, emit=True, auto=False, *, ymin=None, ymax=None)  # y轴刻度范围

# left表示x轴刻度取值区间的左位数;
# right表示一周刻度取值区间的右位数;
# emit表示是否通知限制变化的观察者,默认True;
# auto表示是否允许自动缩放x轴,默认为True;
# xmin表示x轴刻度的最小值;
# xmax表示x轴刻度的最大值。

3. 设置刻度线位置和标签
        set_xticks()和set_yticks()函数的语法格式如下:

set_xticks(ticks=None, labels=None, **kwargs)  # x轴刻度线位置和刻度线标签
set_yticks(ticks=None, labels=None, **kwargs)  # y轴刻度线位置和刻度线标签

# tick表示刻度显示的位置列表;
# labels表示指定位置刻度标签列表。

3.3 标题与图例

3.3.1 标题

        图表的标题代表图表的名称,一般位于图表的顶部并居中,主要给读者展示图表要说明的内容。set_title()函数的语法格式如下:

set_title(label, fontdict=None, loc="center", pad=None, **kwargs)

# label表示标题文本;
# fontdict表示控制标题文本样式的字典;
# loc表示标题对齐的方式,例如,"left", "right", "center"三种取值,默认"center";
# pad表示标题与图表顶部的距离,默认None。

3.3.2 图例

        图例是列举各组图形数据标识的方框图,它由图例标识和图例项组成,其中图例标识表示各组图形的图案,图例项表示图例标识对应的名称。legend()函数的语法格式如下:

legend(handles, labels, loc, bbox_to_anchor, ncol, title, shadow, fancybox, *args, **kwargs)

# handles表示由图例标识列表;
# labels表示由图例项列表;
# loc用于控制图例在表中的位置,具体见表3-1;
# bbox_to_anchor用于控制图例的布局,该参数接收一个包含两个数值的元组,其中第一个数值用于控制图例显示水平位置,数值越大图例显示位置越偏右,另一个用于控制图例垂直位置,数值越大显示位置越偏上;
# ncol表示图例的列数,默认1;
# title表示图例的标题,默认None;
# shadow表示图例后面是否显示阴影,默认None;
# fancybox表示图例是否设置倒角,默认None。
表3-1 loc参数取值及图例对应的位置
位置编码位置字符串说明
0"best"自适应
1"upper right"右上方
2"upper left"左上方
3"lower left"左下方
4"lower right"右下方
5"right"右方
6"center left"中心偏左
7"center right"中心偏右
8"lower center"中心偏下
9"upper center"中心偏上
10"center"中心

3.4 网格线

        网格是从刻度线开始延申,贯穿整个绘图区域的辅助线条,它能够帮助用户轻松查看图形数值。网格可划分为水平网格和垂直网格,这两种网格既可以单独使用,也可以同时使用。grid()函数的语法格式如下:

grid(b=None, which="major", axis="both", color="#b0b0b0", alpha=None, linestyle="-", linewidth=0.5, **kwargs)

# b表示是否显示网格,默认True;
# which表示显示网格类型,支持major(主要刻度网格线)、minor(次要刻度网格线)和both(同时显示主要、次要刻度网格线)这3种类型,默认major;
# axis表示显示那个方向的网格,该参数支持both、x和y这3种类型,默认both;
# color表示网格线的颜色,默认#b0b0b0;
# alpha表示网格线的透明度, 默认None;
# linestyle表示网格线类型,例如, "-", "--", ":";
# linewidth表示网格线宽度, 默认0.5;

注意:坐标轴没有刻度,就无法显示网格。

3.5 参考线与参考区域

3.5.1 参考线

        参考线是一条贯穿整个绘图区域的线条,为图形数据的比较提供参考。根据参考线的方向可分为水平参考线和垂直参考线。axhline()、axvline()函数的语法格式如下:

axhline(y=0, xmin=0, xmax=1, color="k", linewidth="1.0", linestyle='solid', alpha="1.0", label=None, **kwargs)
axvline(x=0, ymin=0, ymax=1, color="k", linewidth="1.0", linestyle='solid', alpha="1.0", label=None, **kwargs)

# y表示水平参考线的纵坐标;
# x表示垂直参考线的横坐标;
# xmin表示图形的左边界,默认0;
# xmax表示图形的右边界,默认1;
# ymin表示图形的下边界,默认0;
# ymax表示图形的上边界,默认1;
# color表示参考线的颜色,默认k;
# linewidth表示参考线的宽度,默认1.0;
# linestyle表示参考线的线型,例如,"solid"(实线)、"dashed"(虚线)、"dashdot"(点划线)、"dotted"(点线);
# alpha表示参考线透明度,范围0(完全透明)~1(完全不透明);
# label表示参考线标签,用于图例显示,默认None。

3.5.2 参考区域

        axhspan()、axvspan()函数的语法格式如下:

axhspan(ymin, ymax, xmin=0, xmax=1, color="blue", alpha=0.5, linewidth=None, linestyle=None, label=None, **kwargs)

# ymin表示水平参考区域起始y坐标;
# ymax表示水平参考区域终止y坐标;
# xmin表示水平参考区域的左边界;
# xmax表示水平参考区域的右边界;

axvspan(xmin, xmax, ymin=0, ymax=1, color="blue", alpha=0.5, linewidth=None, linestyle=None, label=None, **kwargs)

# xmin表示垂直参考区域起始x坐标;
# xmax表示垂直参考区域终止x坐标;
# ymin表示垂直参考区域的下边界;
# ymax表示垂直参考区域的上边界;

# color表示参考区域的颜色,默认"blue";
# alpha表示参考区域的透明度,范围0(完全透明)~1(完全不透明),默认0.5;
# linewidth表示参考区域边界线宽度,默认None;
# linestyle表示参考区域边界线线型,默认None;
# label表示参考区域标签,用于图例显示。

3.6 注释文本

        注释文本可划分为指向型注释文本和无指向型注释文本,其中指向型注释文本一般对图表某一部分进行说明;无指向型注释文本一般是对图表整体进行特定说明。

3.6.1 指向型注释文本

        指向型注释文本是指通过箭头的方式对图形的某一部分进行文本说明。annotate()函数的语法格式如下:

annotate(s, xy, xytext, arrowprops=None, *args, **kwargs)

# s表示注释文本内容;
# xy表示被注释点的坐标位置, (x, y);
# xytext表示文本注释的起始位置,默认与xy相同;
# textcoords表示文本注释的坐标系:
  'offset points':相对于 xy 或 xytext 的偏移量(以点为单位);
  'offset pixels':相对于 xy 或 xytext 的偏移量(以像素为单位);
  'figure points':相对于图形的左下角(以点为单位);
  'figure pixels':相对于图形的左下角(以像素为单位);
  'axes points':相对于坐标轴的左下角(以点为单位);
  'axes pixels':相对于坐标轴的左下角(以像素为单位)。
# arrowprops表示箭头的属性,包括箭头的类型、颜色和宽度等,默认None;
# ha表示文本的水平对齐方式,center(居中对齐)、left(左对齐)和right(右对齐);
# va表示文本的垂直对齐方式,center(居中对齐)、left(左对齐)和right(右对齐);
# fontsize表示文本字体大小,默认None;
# fontweight表示文本字体粗细,normal(正常)、bold(加粗)。

1. arrowprops参数
        arrowprops用于指定注释箭头属性,一下是arrowprops常用的属性:
(1) arrowstyle指定箭头的样式,常用样式包括:

                                                                                       图3-3 键arrowstyle对应的键值以及类型
(2) connectionstyle指定箭头的连接方式。常用的连接方式包括:

表3-2 connectionstyle箭头参数值以及类型
箭头样式字符串说明
arc弧形连接
angle角度连接
angle3三角角度连接
arc3三角弧形连接
bar条形连接
barangle条形角度连接

(3) arrowpad表示箭头与文本之间的距离,默认0.4;
(4) shrink表示箭头两端与注释框边界的距离,默认0.05;
(5) mutation_scale表示箭头大小的比例因子,默认1.0。

3.6.2 无指向型注释文本

        无指向型注释文本是指使用文字的注释方式对绘图区域的图形进行说明。text()函数的语法格式如下:

text(x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)

# x表示x的坐标位置;
# y表示y的坐标位置;
# s表示显示的文本内容;
# fontdict表示控制字体的字典。

注意:matplotlib中自带mathtext引擎,通过该引擎可以自动识别annotate()或text()函数传入的数学字符串,并解析成对应的数学表达式。基本格式如下:

r"$数学表达式$"

第四章 图表样式美化

4.1 颜色搭配

        在数据可视化中,颜色通常被用于数据分类。图表使用颜色时应遵循一定的基本规则,既要避免使用过多的颜色,又要避免随意使用颜色,否则会严重影响可视化效果。matplotlib内置了基础颜色和颜色映射表。下面将对颜色使用方式进行说明。

4.1.1 基础颜色

        matplotlib的基础颜色主要有3种表示方式:单词和单词缩写模式,十六进制或HTM模式、RGB模式,具体介绍如下。
1. 单词或单词缩写模式
        matplotlib支持使用单词或单词缩写表示8种颜色:青色、洋红色、黄色、黑色、红色、绿色、蓝色和白色。每种颜色单词、单词缩写以及说明如表4-1所示。

表4-1 单词、单词缩写以及颜色说明
单词单词缩写说明
ccyan青色
mmagenta洋红色
yyellow黄色
kblack黑色
rred红色
ggreen绿色
bblue蓝色
wwhite白色

2. 其他模式
        由于不经常使用十六进制或HTML模式,RGB模式搭配颜色,因此这小节省略。

4.1.2 颜色映射表

        在matplotlib中内置了许多预定义的颜色映射表,可使用colormaps()函数查看所有可用的颜色映射表,代码如下:

print(plt.colormaps())

# 打印结果
['magma', 'inferno', 'plasma', 'viridis', 'cividis', 'twilight', 'twilight_shifted', 'turbo', 'Blues', 'BrBG', 'BuGn', 'BuPu', 'CMRmap', 'GnBu', 'Greens', 'Greys', 'OrRd', 'Oranges', 'PRGn', 'PiYG', 'PuBu', 'PuBuGn', 'PuOr', 'PuRd', 'Purples', 'RdBu', 'RdGy', 'RdPu', 'RdYlBu', 'RdYlGn', 'Reds', 'Spectral', 'Wistia', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'afmhot', 'autumn', 'binary', 'bone', 'brg', 'bwr', 'cool', 'coolwarm', 'copper', 'cubehelix', 'flag', 'gist_earth', 'gist_gray', 'gist_heat', 'gist_ncar', 'gist_rainbow', 'gist_stern', 'gist_yarg', 'gnuplot', 'gnuplot2', 'gray', 'hot', 'hsv', 'jet', 'nipy_spectral', 'ocean', 'pink', 'prism', 'rainbow', 'seismic', 'spring', 'summer', 'terrain', 'winter', 'Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3', 'tab10', 'tab20', 'tab20b', 'tab20c', 'magma_r', 'inferno_r', 'plasma_r', 'viridis_r', 'cividis_r', 'twilight_r', 'twilight_shifted_r', 'turbo_r', 'Blues_r', 'BrBG_r', 'BuGn_r', 'BuPu_r', 'CMRmap_r', 'GnBu_r', 'Greens_r', 'Greys_r', 'OrRd_r', 'Oranges_r', 'PRGn_r', 'PiYG_r', 'PuBu_r', 'PuBuGn_r', 'PuOr_r', 'PuRd_r', 'Purples_r', 'RdBu_r', 'RdGy_r', 'RdPu_r', 'RdYlBu_r', 'RdYlGn_r', 'Reds_r', 'Spectral_r', 'Wistia_r', 'YlGn_r', 'YlGnBu_r', 'YlOrBr_r', 'YlOrRd_r', 'afmhot_r', 'autumn_r', 'binary_r', 'bone_r', 'brg_r', 'bwr_r', 'cool_r', 'coolwarm_r', 'copper_r', 'cubehelix_r', 'flag_r', 'gist_earth_r', 'gist_gray_r', 'gist_heat_r', 'gist_ncar_r', 'gist_rainbow_r', 'gist_stern_r', 'gist_yarg_r', 'gnuplot_r', 'gnuplot2_r', 'gray_r', 'hot_r', 'hsv_r', 'jet_r', 'nipy_spectral_r', 'ocean_r', 'pink_r', 'prism_r', 'rainbow_r', 'seismic_r', 'spring_r', 'summer_r', 'terrain_r', 'winter_r', 'Accent_r', 'Dark2_r', 'Paired_r', 'Pastel1_r', 'Pastel2_r', 'Set1_r', 'Set2_r', 'Set3_r', 'tab10_r', 'tab20_r', 'tab20b_r', 'tab20c_r']

        常用的颜色映射表有autumn、bone、cool、copper、flag、gray、hot、hsv、jet、pink、prism、sprint、summer和winter。
        matplotlib主要有两种使用颜色映射表的方式:第一种方式是调用函数或方法绘制图表或者添加辅助元素时,使用matplotlib.cm.jet颜色,获取颜色;第二种方式是直接调用set_cmap()函数进行设置。这两种方式的具体用法如下。
(1)第一种示例代码如下:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 准备数据
x = np.linspace(0, 10, 30)
y = x ** 2
y1 = x ** 3

# 为每条曲线生成不同的颜色生成值
cmap = matplotlib.cm.jet

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.plot(x, y, color=cmap(0.2), label=r"y=$x^2$")  # 绘制曲线
ax.plot(x, y1, color=cmap(0.3), label=r"y=$x^3$")

ax.legend()  # 图例
ax.set_xlim(0, 11)
ax.set_ylim(0, 1100)
plt.show()

(2) 由于第二种示例代码不常用,因此省略介绍。

4.2 数据标记

        在matplotlib中,折线图的线条是由数据标记及其之间的连线组成,并且默认隐藏数据标记。数据标记一般指单个数据的圆点或其他符号等,用于强调数据点的位置,常见于折线图与散点图中。

4.2.1 折线图与散点图的数据标记

        matplotlib中内置了许多数据标记,使用这些数据标记可以便捷为折线图与散点图标注数据点。数据标记分为填充型标记和非填充型标记,这两种标记取值、样式和说明分别如图4-1和图4-2所示。
图的标题
                                                                                       图4-1 填充型标记
图的标题
                                                                                       图4-2 非填充型标记
        使用plot()、scatter()函数绘制图形时,可以将标记的取值传递给marker参数,从而为折线图或散点图添加数据标记。代码如下:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 准备数据
x = np.linspace(0, 10, 30)
y = x ** 2
y1 = x ** 3

# 为每条曲线生成不同的颜色生成值
cmap = matplotlib.cm.jet

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.plot(x, y, color=cmap(0.2), marker="d", label=r"y=$x^2$")  # 绘制曲线
ax.plot(x, y1, color=cmap(0.3), marker=">", label=r"y=$x^3$")

ax.legend()  # 生成图例
ax.set_xlim(0, 11)
ax.set_ylim(0, 1100)
plt.show()

        除此之外,还可以通过以下参数控制标记属性:

  • markeredgecolor或mec表示标记的边框颜色;
  • markeredgewidth或mew表示标记的边框宽度;
  • markerfacecolor或mfc表示标记的填充颜色;
  • markersize或ms表示标记的大小。

4.3 自定义区域子图

4.3.1 单子图

        subplot2grid()函数可以将整个画布规划成非等分布局区域,并可在选中的某个区域绘制单个子图,subplot2grid()函数语法格式如下:

subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)

# shape表示规划区域结构,它是包含两个整型数据的元组,其中第一个元素表示规划区域的行数,第二个元素表示规划区域的列数
# loc表示选择区域的位置,它是包含两个整型数据的元组,其中第一个元素表示子图所在的行,第二个元素表示子图所在的列数,均从0开始计算
# rowspan表示向下跨行数,默认1
# colspan表示向右跨列数,默认1
# fig表示放置子图的画布,默认当前画布

实例 4-1

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 准备数据
x = np.linspace(0, 10, 30)
y = x ** 2
y1 = x ** 3

# 为每条曲线生成不同的颜色生成值
cmap = matplotlib.cm.jet

fig = plt.figure()  # 创建画布
ax1 = plt.subplot2grid((2, 3), (0, 2))
ax1.plot(x, y, color=cmap(0.2), marker="d", label=r"y=$x^2$")  # 绘制曲线

ax2 = plt.subplot2grid((2, 3), (1, 0), colspan=3)
ax2.plot(x, y1, color=cmap(0.3), marker=">", label=r"y=$x^3$")

ax2.set_xlim(0, 11)
ax2.set_ylim(0, 1100)
plt.show()

结果展示:

                                                                                       图4-3 实例 5结果

第五章 机器学习统计图形展示

5.1 机器学习判别分析示意图

5.2 机器学习日期型时间序列图

5.3 统计学习直方图与概率密度曲线

5.4 绘图区域嵌入子绘图区域

第六章 交互式动画

【Python可视化神器】Matplotlib完全教程:12种图表+10个高级技巧 | 数据可视化必学 Matplotlib 是一个全面的 Python 绘图库,用于创建静态、交互式和动画可视化图表。它提供了类似 MATLAB 的接口,并支持各种图形和图表类型。灵活性:从简单的线图到复杂的多面板图表都能轻松创建高度可定制:几乎所有图表元素都可以精确控制多种输出格式:支持 PNG、PDF、SVG、EPS 等多种图片格式良好的生态系统集成:与 NumPy、Pandas、Seaborn 等库紧密集成# 创建数据# 不同的颜色、线型和标记组合。 阅读详情

相关推荐

Matplotlib教程(非常详细)(第一部分)

Matplotlib是一款免费开源的Python数据可视化工具。

sinat_41942180的博客 4万+

Matplotlib详细教程

本文结合具体示例代码详细介绍了Matplotlib的用法,可以帮助初学者快速入门Matplotlib绘图,同时可作为科研工作者的Matplotlib的使用文档

weixin_42620109的博客 1万+

【Python篇】matplotlib超详细教程

【Python篇】Matplotlib超详细教程-由入门到精通第一章:Matplotlib基础入门 (Matplotlib Fundamentals)在本章中,我们将首先介绍Matplotlib是什么,它的主要特点和在Python数据科学生态中的地位。然后,我们会详细讲解Matplotlib的核心架构,特别是(画布)、(坐标系/子图)和(绘图元素)这三个关键概念。接着,我们将指导你完成Matplotlib的安装,并演示如何绘制你的第一个简单图形,如线图和散点图。最后,我们会介绍两种主要的绘图接口:便捷的接口

宅男很神经 1397

Matplotlib 教程大全(满是干货)

这里有最完整的Matplotlib的教程介绍,干货满满,8000余字。Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。

leyang0910的博客 1249

最全Matplotlib教程

Matplotlib教程 文章目录Matplotlib教程一. 什么是Matplotlib?二. 安装Matplitlib三. Matplotlib Pyplot1.绘制直线2. 默认x点四. Matplotlib Marker1.绘制标记2. 格式字符串`fmt`3.标记的大小4.标记的颜色五. Matplotlib lables and Title六.Matplotlib Adding Grid Lines七. Matplotlib Subplot八. Matplotlib Scatter九. Matp

小神龙一条的博客 597

从CentOS迁移到openEuler 24.03 LTS:手把手教你部署Java+MySQL+Redis+Nginx全栈环境

本文详细指导如何从CentOS迁移到openEuler 24.03 LTS,并部署Java+MySQL+Redis+Nginx全栈环境。涵盖系统配置、软件安装、性能优化及环境验证,助力企业级用户高效完成服务器迁移与部署。

weixin_26938645的博客 386

Matplotlib 教程

Matplotlib 教程 发表于 2014 年 09 月 11 日   |   分类于 Algorithm and Computer Science   |   本文共被围观 52922 次   |   29条评论 Matplotlib 教程 本文为译文,原文载于此,译文原载于此。本文欢迎转载,但请保留本段文字,尊重作者和译者的权益。谢谢。: ) 介绍

凌风探梅的专栏 851

用人话讲明白线性回归LinearRegression

目录 什么是回归 一元线性回归 损失函数 最小二乘估计 小结 1. 什么是回归 当我们学习一门新课程、接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含义。在我们一起学习machine learning的过程中,我会尽量对相关名词用“人话”做一遍解释,以减少学习的“痛苦感”。 譬如今天要学的线性“回归”,这个回归(regression)和我们平时说的“回归祖国”的回...

化简可得 1万+

一份非常好的Matplotlib 教程

Matplotlib 教程 发表于 2014 年 09 月 11 日   |   分类于 Algorithm and Computer Science   |   本文共被围观 52922 次   |   29条评论 Matplotlib 教程 本文为译文,原文载于此,译文原载于此。本文欢迎转载,但请保留本段文字,尊重作者和译者的权益。谢谢。: ) 介绍

如花美眷,似水流年~ 8万+

从 JDK8 到 JDK17:CRMEB 框架升级

【摘要】CRMEB开源框架已成功从JDK8升级至JDK17,带来显著性能提升:并发吞吐量提高35%,响应延迟降低40%,资源占用减少25%。升级方案解决87个技术卡点,支持模块化扩展和微服务转型,兼容SpringBoot3.0等新技术。提供基础版到企业级的升级服务,包含代码重构指导和性能调优。经金融级验证的方案可帮助电商平台实现日均10万+UV承载,支付成功率提升至99.7%。现以低于市场30%的价格提供全周期技术支持,助力企业抢占技术先机。

weixin_39782540的博客 698

RK3588开发板DDR频率上不去?手把手教你用ddrbin_tool降频调优(附完整配置流程)

本文详细介绍了RK3588开发板DDR频率调优的完整解决方案,重点使用ddrbin_tool工具进行降频配置。从硬件原理分析到实战操作,包括参数导出、频率调整、二进制生成及烧录验证,帮助开发者解决DDR高频不稳定问题,提升系统可靠性。适用于嵌入式开发、工业控制等场景。

weixin_42713608的博客 543

matplotlib 中文官网教程

https://www.matplotlib.org.cn/tutorials/

zlb_zlb的博客 2690

告别Link180!在Ansys Mechanical 2020R2中正确启用Cable280绳索单元(附Beta选项开启指南)

本文详细介绍了在Ansys Mechanical 2020R2中启用Cable280绳索单元的全过程,包括Beta选项的开启步骤、建模技巧及高阶应用。Cable280作为专为绳索仿真设计的单元,相比传统的Link180单元,在大变形模拟和计算效率上表现更优,特别适合斜拉桥、电梯牵引绳等工程场景。

weixin_33711647的博客 404

转载的一份非常棒的Matplotlib 教程

Matplotlib 教程本文为译文,原文载于此,译文原载于此。本文欢迎转载,但请保留本段文字,尊重作者和译者的权益。谢谢。: ) 介绍 Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。 IPython 以及 pylab 模式 IPython 是 Python

木子木泗的博客 855

首个基于LBS方案的3D传感器,VoxelSensor解析

该传感器将结合OQmented的Lissajous模式的MEMS扫描镜,与每帧逐行工作的光栅扫描相比,Lissajous轨迹扫描速度更快,并且能耗很低,它可以更快地捕获完整的场景和快速移动,并且需要更少的数据处理,可满足AR/VR对于低延迟、高效率的需求。简单来讲,Switching Pixels的区别是专注于识别激光事件,性能比普通事件相机更好,但也可以使用事件相机的算法。在具体应用中,它需要在X和Y方向发射一个或多个脉冲光束,以在X和Y轴上定位,而Z轴,也就是深度,则是通过计算光返回的时间来测量。

qingtingwang的博客 575

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2595

matplotlib简易入门教程及动画

做数据分析,首先是要熟悉和理解数据,所以掌握一个趁手的可视化工具是非常重要的,否则对数据连个基本的感性认识都没有,如何进行下一步的design Getting Started with Matplotlib 先看个简单的例子,plot,即画线 画线,需要给出线上的点的坐标,然后Matplotlib会自动将点连成线 In [2]: x = range(6) In [3]: plt.plot

yapian8的专栏 1747

Android Framework AMS面试题及参考答案

比如,应用 B 的 Activity 如果是 “singleTask” 启动模式,AMS 会查找应用 B 是否有包含该 Activity 的任务栈,若有则将这个任务栈切换到前台,并且清除该 Activity 之上的其他 Activity,实现流畅的跨应用跳转体验。如果一个 Activity 的启动依赖于另一个 Activity 的结果,AMS 会暂停当前 Activity 的部分生命周期操作,等待依赖的 Activity 完成相关操作后,再继续当前 Activity 的生命周期进程。

大模型大数据攻城狮的专栏 1855

Matplotlib使用教程

Matplotlib 教程 本文为译文,原文载于此,译文原载于此。本文欢迎转载,但请保留本段文字,尊重作者和译者的权益。谢谢。: ) 介绍 Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。 IPython 以及 pylab 模式 IPytho

ldy944758217的博客 666

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

wxpython使用matplotlib_matplotlib - matplotlib 教程

Pyplot 教程关于pylot接口的介绍。matplotlib 教程这个图库包含了使用Matplotlib可以做的许多事情的示例。可以点击任何图像,以查看完整的图像和源代码。有关更短的示例,请参见示例页。你还可以在我们的用户指南中找到外部资源和常见问题解答。matplotlib 入门这些教程介绍了使用Matplotlib创建可视化效果的基础知识,以及有效使用该包的一些最佳实践。使用指南本教程介绍...

weixin_39994627的博客 839

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Matplotlib的使用教程

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.youkuaiyun.com/kun1280437633/article/details/80370622 1、折线图 2、子图操作 3、条形图和散点图 4、柱形图与盒图 ...

学海无涯 1230

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Matplotlib教程

Matplotlib是用于数据可视化的最流行的Python包之一。 它是一个跨平台库,用于根据数组中的数据制作2D图。 它提供了一个面向对象的API,有助于使用Python GUI工具包(如PyQt,WxPythonotTkinter)在应用程序中嵌入绘图。 它也可以用于Python和IPython shell,Jupyter笔记本和Web应用程序服务器。 面向读者 本教程专为希望获得数据可视化基...

编程工作室 733
上一篇: 决策树算法
下一篇: Pytorch教程
编码雪人
博客等级 码龄7年 177粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值