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.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 等价于 normal,700 等价于 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 等价于 normal,700 等价于 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.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 等价于 normal,700 等价于 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 等价于 normal,700 等价于 bold
4 grid 部分属性
mpl.rcParams[‘grid.alpha’] = 1.0
网格透明度
float 类型,取值范围:[0, 1]
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.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.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.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:否
10 xtick 部分属性
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.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