1 Matplotlib之HelloWorld

学习目标

  • 目标

    • 了解什么是matplotlib

    • 为什么要学习matplotlib

    • matplotlib简单图形的绘制


1 什么是Matplotlib

  • 是专门用于开发2D图表(包括3D图表)

  • 以渐进、交互式方式实现数据可视化

2 为什么要学习Matplotlib

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

  • 能将数据进行可视化,更直观的呈现

  • 使数据更加客观、更具说服力

例如下面两个图为数字展示和图形展示:

3 实现一个简单的Matplotlib画图 — 以折线图为例

3.1 matplotlib.pyplot模块

matplotlib.pytplot包含了一系列类似于matlab的画图函数。

3.2 图形绘制流程:

  • 1.创建画布 -- plt.figure()

  • 2.绘制图像 -- plt.plot(x, y)

  • 3.显示图像 -- plt.show()

3.3 折线图绘制与显示

举例:展现上海一周的天气,比如从星期一到星期日的天气温度如下

4 认识Matplotlib图像结构(了解)

5 三层结构

Matplotlib 三层结构:容器层、辅助显示层、图像层

容器层主要由 Canvas、Figure、Axes 组成。

  • Canvas 是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具。

  • Figure 是 Canvas 上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色,可以通过 plt.figure() 设置画布的大小和分辨率等

  • Axes 是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色,注意与 Axis 的区别,Axis 是坐标轴,包含大小限制、刻度和刻度标签。

注意点:

  • 一个figure(画布)可以包含多个axes(坐标系/绘图区),但是一个 axes 只能属于一个figure。

  • 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为 2d 坐标系,三个即为 3d 坐标系 。

辅助显示层为 Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括 Axes 外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。

图像层指 Axes 内通过 plot(线形图)、scatter(散点图)、bar(柱状图)、histogram(直方图)、pie(饼图) 等函数根据数据绘制出的图像。

  • Canvas(画板)位于最底层,用户一般接触不到;

  • Figure(画布)建立在 Canvas 之上;

  • Axes(绘图区)建立在Figure之上;

  • 坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在 Axes 之上。

6 了解 matplotlib.rcParams

matplotlib 使用 matplotlibrc 配置文件来自定义图形的各种默认属性,称之为 rc 配置或 rc 参数。通过 rc 参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc 参数存储在字典变量中,通过字典的方式进行访问。

执行 matplotlib.rcParams.keys() 命令可以查看所有的 rc 参数及其默认值; 执行 matplotlib.matplotlib_fname() 命令可以查看 matplotlibrc 配置文件在本地的路径。

官网介绍:https://matplotlib.org/tutorials/introductory/customizing.html

配置文件 matplotibrc 主要包括以下配置要素:

  • axes:坐标轴的背景颜色、坐标轴的边缘颜色、刻度线的大小、刻度标签的字体大小等;

  • figure:画布标题大小、画布标题粗细、画布像素(dpi)、 画布背景颜色和边缘颜色等;

  • font:字体类别、字体风格、字体粗细和字体大小等;

  • grid:网格颜色、网格线条风格、网格线条宽度和网格透明度;

  • legend:图例的文本大小、阴影、图例线框风格等;

  • lines:设置线条属性,包括颜色、线条风格、线条宽度和标记风格等;

  • patch:填充 2D 空间的图形对象,包括多边形和圆;

  • savefig:保存画布图像的分辨率、背景颜色和边缘颜色等;

  • text:文本颜色、LaTex 渲染文本等;

  • xtick / ytick:x 轴和 y 轴的主次要刻度线的大小、宽度、刻度线颜色和刻度标签大小等。


我们可以在 Python 项目中动态设置 rc 参数,所有 rc 参数设置都存储在名为 matplotlib.rcParams 的类似于字典的变量中,该变量对于 Matplotlib 软件包是全局的。rcParams 可以直接修改。通过这种方法的修改会对全局产生影响,在 Matplotlib 的其他方法中也可以单独对某个参数进行修改,后续介绍不同方法时会见到。


rcParams 修改示例:

1 axes 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘axes.axisbelow’] = ‘line’

网格线和刻度的位置

line:在画板上方,在线条下方 False:在线条和画板的上方 True:在画板下方

mpl.rcParams[‘axes.edgecolor’] = ‘black’

轴边缘颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘axes.facecolor’] = ‘white’

轴背景色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘axes.labelcolor’] = ‘black’

轴标题颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘axes.grid’] = False

是否显示网格

False:不显示网格;True:显示网格

mpl.rcParams[‘axes.grid.axis’] = ‘both’

网格应用于哪个轴

x:x 轴;y:y 轴;both:同时应用于两个轴

mpl.rcParams[‘axes.grid.which’] = ‘major’

网格应用于哪个刻度

major:主(大)刻度;minor:次(小刻度); both:同时应用于两个刻度

mpl.rcParams[‘axes.labelpad’] = 4.0

轴标题和轴之间的间距

float 类型间距值

mpl.rcParams[‘axes.labelsize’] = ‘medium’

x 轴和 y 轴标题的字体大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘axes.labelweight’] = ‘normal’

x 轴和 y 轴标题的字体粗细

normal:正常粗细;bold:粗体;light:细体 数字值 400 等价于 normal700 等价于 bold

mpl.rcParams[‘axes.linewidth’] = 0.8

轴边线宽度

float 类型宽度值

mpl.rcParams[‘axes.titlecolor’] = ‘auto’

图表标题颜色

默认取 text.color 的值 其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘axes.titlelocation’] = ‘center’

图表标题位置

left:左;right:右;center:中间

mpl.rcParams[‘axes.titlepad’] = 6.0

图表标题和轴之间的间距

float 类型间距值

mpl.rcParams[‘axes.titlesize’] = ‘large’

图表标题字体大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘axes.titleweight’] = ‘normal’

图表标题字体粗细

normal:正常粗细;bold:粗体;light:细体 数字值 400 等价于 normal700 等价于 bold

mpl.rcParams[‘axes.xmargin’] = 0.05

x 轴边距

取值范围 [0, 1]

mpl.rcParams[‘axes.ymargin’] = 0.05

y 轴边距

取值范围 [0, 1]

mpl.rcParams[‘axes.unicode_minus’] = True

对负号使用 Unicode 而不是连字符

True:是;False:否

mpl.rcParams[‘axes3d.grid’] = True

是否在三维轴上显示网格

True:是;False:否

2 figure 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘figure.dpi’] = 100

画布像素(dpi)

float 类型像素值

mpl.rcParams[‘figure.edgecolor’] = ‘white’

画布边缘颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘figure.facecolor’] = ‘white’

画布背景颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘figure.figsize’] = [6.4, 4.8]

画布尺寸 [长, 宽]

float 类型尺寸值(英寸)

mpl.rcParams[‘figure.frameon’] = True

是否启用图框

True:是;False:否

mpl.rcParams[‘figure.titlesize’] = ‘large’

画布标题大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘figure.titleweight’] = ‘normal’

画布标题粗细

normal:正常粗细;bold:粗体;light:细体 数字值 400 等价于 normal700 等价于 bold

3 font 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘font.family’] = [‘sans-serif’]

规定字体系列

字体名称

mpl.rcParams[‘font.sans-serif’] = [‘DejaVu Sans, …’]

定义无衬线字体

默认是一些西文字体,可将其设置成其他字体来显示中文

mpl.rcParams[‘font.serif’] = [‘DejaVu Sans, …’]

定义有衬线字体

默认是一些西文字体,可将其设置成其他字体来显示中文

mpl.rcParams[‘font.size’] = 10.0

定义字体大小

float 数字类型字体大小

mpl.rcParams[‘font.weight’] = ‘normal’

定义字体粗细

normal:正常粗细;bold:粗体;light:细体 数字值 400 等价于 normal700 等价于 bold

4 grid 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘grid.alpha’] = 1.0

网格透明度

float 类型,取值范围:[0, 1]

mpl.rcParams[‘grid.color’] = ‘#b0b0b0’

网格颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘grid.linestyle’] = ‘-’

网格线的样式

'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' ':' or 'dotted', 'none' or ' ' or ''

mpl.rcParams[‘grid.linewidth’] = 0.8

网格宽度

float 类型宽度值

5 legend 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘legend.borderaxespad’] = 0.5

图例距离轴之间的距离

float 类型距离值

mpl.rcParams[‘legend.borderpad’] = 0.4

图例边框空白区域大小

float 类型大小值

mpl.rcParams[‘legend.columnspacing’] = 2.0

图例列间距

float 类型距离值

mpl.rcParams[‘legend.edgecolor’] = 0.8

图例边缘线颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘legend.facecolor’] = ‘inherit’

图例背景颜色

默认继承自 axes.facecolor 其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘legend.fancybox’] = True

是否使用圆形框作为图例背景

True:使用圆形框;False:使用矩形框

mpl.rcParams[‘legend.fontsize’] = ‘medium’

图例字体大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘legend.framealpha’] = 0.8

图例透明度

float 类型,取值范围:[0, 1]

mpl.rcParams[‘legend.frameon’] = True

是否在画布之上绘制图例

True:是;False:否

mpl.rcParams[‘legend.handleheight’] = 0.7

图例的高度

float 类型高度值

mpl.rcParams[‘legend.handlelength’] = 2.0

图例的宽度

float 类型宽度值

mpl.rcParams[‘legend.handletextpad’] = 0.8

图例和图例文本之间的水平距离

float 类型距离值

mpl.rcParams[‘legend.labelspacing’] = 0.5

不同图例之间的垂直距离

float 类型距离值

mpl.rcParams[‘legend.loc’] = ‘best’

图例在画布中的位置

best, upper right, upper left, lower left lower right, right, center left, center right lower center, upper center, center

mpl.rcParams[‘legend.shadow’] = False

是否给图例添加阴影效果

True:是;False:否

6 lines 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘lines.antialiased’] = True

是否以抗锯齿方式渲染线条

True:是;False:否

mpl.rcParams[‘lines.color’] = ‘C0’

线条颜色(对 plot() 没有影响)

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘lines.linestyle’] = ‘-’

线条样式

'-', '--', '-.', ':', 'solid', 'dashed', 'dashdot', 'dotted', 'none', ' ', ''

mpl.rcParams[‘lines.linewidth’] = 1.5

线条宽度

float 类型宽度值

mpl.rcParams[‘lines.marker’] = ‘None’

线条上点的形状

., ,, o, v, ^ 等,具体常见 matplotlib.markers

mpl.rcParams[‘lines.markeredgecolor’] = ‘auto’

线条上点边缘的颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘lines.markerfacecolor’] = ‘auto’

线条上点的颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘lines.markeredgewidth’] = 1.0

线条上点的粗细

float 类型粗细值

mpl.rcParams[‘lines.markersize’] = 6.0

线条上点的大小

float 类型大小值

7 patch 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘patch.antialiased’] = True

以抗锯齿方式渲染补丁

True:是;False:否

mpl.rcParams[‘patch.edgecolor’] = ‘black’

补丁边缘颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘patch.facecolor’] = ‘C0’

补丁颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘patch.linewidth’] = 1.0

补丁边缘宽度(以磅为单位)

float 类型宽度值

8 savefig 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘savefig.bbox’] = None

是否以紧凑形式保存图片

standard:标准形式;tight:紧凑形式 (去掉边上多余的空白)

mpl.rcParams[‘savefig.pad_inches’] = 0.1

savefig.bbox 参数为 tight 时, 图片使用的填充值 (相当于 html 中的 Padding)

float 类型填充值

mpl.rcParams[‘savefig.dpi’] = ‘figure’

保存图片的像素(dpi)

str 类型像素值

mpl.rcParams[‘savefig.edgecolor’] = ‘white’

保存图片的边缘颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘savefig.facecolor’] = ‘white’

保存图片的画布颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘savefig.format’] = ‘png’

保存图片的格式

eps, pdf, pgf, png, ps, raw, rgba, svg, svgz

mpl.rcParams[‘savefig.transparent’] = False

保存图片的背景是否透明

True:是;False:否

9 text 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘text.antialiased’] = True

是否以抗锯齿方式渲染文本

True:是;False:否

mpl.rcParams[‘text.color’] = ‘red’

文本颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘text.usetex’] = False

是否使用 LaTeX 排版系统 (主要用于生成复杂表格和数学公式)

True:是;False:否

10 xtick 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘xtick.color’] = ‘black’

x 轴刻度的颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘xtick.direction’] = ‘out’

x 轴刻度的方向

in:内部(x 轴上方);out:外部(x 轴下方) inout:同时在内部和外部

mpl.rcParams[‘xtick.bottom’] = True

是否在画布底部显示 x 轴刻度

True:是;False:否

mpl.rcParams[‘xtick.top’] = False

是否在画布顶部显示 x 轴刻度

True:是;False:否

mpl.rcParams[‘xtick.labelbottom’] = True

是否在画布底部显示 x 轴刻度文字标签

True:是;False:否

mpl.rcParams[‘xtick.labeltop’] = False

是否在画布顶部显示 x 轴刻度文字标签

True:是;False:否

mpl.rcParams[‘xtick.labelsize’] = ‘medium’

x 轴刻度文字大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘xtick.major.bottom’] = True

是否在画布底部显示 x 轴主(大)刻度

True:是;False:否

mpl.rcParams[‘xtick.major.top’] = True

是否在画布顶部显示 x 轴主(大)刻度

True:是;False:否

mpl.rcParams[‘xtick.major.pad’] = 3.5

x 轴主(大)刻度与文字标签的距离

float 类型距离值

mpl.rcParams[‘xtick.major.size’] = 3.5

x 轴主(大)刻度的大小

float 类型大小值

mpl.rcParams[‘xtick.major.width’] = 0.8

x 轴主(大)刻度的宽度

float 类型宽度值

mpl.rcParams[‘xtick.minor.bottom’] = True

是否在画布底部显示 x 轴次(小)刻度

True:是;False:否

mpl.rcParams[‘xtick.minor.top’] = True

是否在画布顶部显示 x 轴次(小)刻度

True:是;False:否

mpl.rcParams[‘xtick.minor.pad’] = 3.4

x 轴次(小)刻度与文字标签的距离

float 类型距离值

mpl.rcParams[‘xtick.minor.size’] = 2.0

x 轴次(小)刻度的大小

float 类型大小值

mpl.rcParams[‘xtick.minor.width’] = 0.6

x 轴次(小)刻度的宽度

float 类型宽度值

mpl.rcParams[‘xtick.minor.visible’] = False

x 轴次(小)刻度的可见性

True:是;False:否

11 ytick 部分属性

属性及其默认值
描述
其他取值

mpl.rcParams[‘ytick.color’] = ‘black’

y 轴刻度的颜色

其他颜色,支持英文颜色名称及其简写、十六进制颜色码等 更多颜色示例参见官网 Color Demo

mpl.rcParams[‘ytick.direction’] = ‘out’

y 轴刻度的方向

in:内部(y 轴右方);out:外部(y 轴左方) inout:同时在内部和外部

mpl.rcParams[‘ytick.left’] = True

是否在画布左边显示 y 轴刻度

True:是;False:否

mpl.rcParams[‘ytick.right’] = False

是否在画布右边显示 y 轴刻度

True:是;False:否

mpl.rcParams[‘ytick.labelleft’] = True

是否在画布左边显示 y 轴刻度文字标签

True:是;False:否

mpl.rcParams[‘ytick.labelright’] = False

是否在画布右边显示 y 轴刻度文字标签

True:是;False:否

mpl.rcParams[‘ytick.labelsize’] = ‘medium’

y 轴刻度文字大小

xx-small, x-small, small, medium large, x-large, xx-large, smaller, larger 也可以使用数字来表示字体大小

mpl.rcParams[‘ytick.major.left’] = True

是否在画布左边显示 y 轴主(大)刻度

True:是;False:否

mpl.rcParams[‘ytick.major.right’] = True

是否在画布右边显示 y 轴主(大)刻度

True:是;False:否

mpl.rcParams[‘ytick.major.pad’] = 3.5

y 轴主(大)刻度与文字标签的距离

float 类型距离值

mpl.rcParams[‘ytick.major.size’] = 3.5

y 轴主(大)刻度的大小

float 类型大小值

mpl.rcParams[‘ytick.major.width’] = 0.8

y 轴主(大)刻度的宽度

float 类型宽度值

mpl.rcParams[‘ytick.minor.left’] = True

是否在画布左边显示 y 轴次(小)刻度

True:是;False:否

mpl.rcParams[‘ytick.minor.right’] = True

是否在画布右边显示 y 轴次(小)刻度

True:是;False:否

mpl.rcParams[‘ytick.minor.pad’] = 3.4

y 轴次(小)刻度与文字标签的距离

float 类型距离值

mpl.rcParams[‘ytick.minor.size’] = 2.0

y 轴次(小)刻度的大小

float 类型大小值

mpl.rcParams[‘ytick.minor.width’] = 0.6

y 轴次(小)刻度的宽度

float 类型宽度值

mpl.rcParams[‘ytick.minor.visible’] = False

y 轴次(小)刻度的可见性

True:是;False:否

Last updated