Matplotlib
Matplotlib
matplotlib相关笔记
matplotlib是Python中绘图工具,使用时需要导入其中的pyplot模块
1
import matplotlib.pyplot as plt
常用的pyplot函数:
- figure():创建画布
- title():设置标题
- xlabel():横坐标名称
- ylabel():纵坐标名称
- legend():添加图例
- plot():绘制线图和散点图
- scatter():绘制散点图
- bar():绘制垂直条形图和水平条形图
- hist():绘制直方图
- pie():绘制饼图
- grid(): 绘制网格线
- imshow():显示图像
- subplots():创建子图
标题标签参数说明
显示位置(loc)
title()、xlabel()、ylabel()默认均为'center'
title()可设置为 'left'、'right'和'center'
xlabel()可设置为: 'left'、'right'和 'center'
ylabel()可设置为: 'bottom'、'top'和'center'
字体大小(size)
值为整数
绘图
线图
1
2
3
4
# 绘制单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 绘制多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
参数说明:
- x, y 点或线的节点,
x为x轴数据,y为y轴数据,数据可以是列表或数组 - fmt 可选参数,定义图的基本属性如
color线条颜色,可以是颜色名称、十六进制颜色、RGB值marker点型linestyle线型
- **kwargs 设置线条样式
label线条标签linewidth线宽markersize点标记大小markeredgecolor点标记边缘颜色markeredgewidth点标记边缘宽度markerfacecolor点标记填充颜色alpha透明度zorder控制绘图顺序
fmt接收的是每个属性的单个字母缩写,例如:
1
plot(x, y, 'bo-') # 蓝色圆点实线
若属性用的是全名则不能用fmt参数来组合赋值,应该用关键字参数对单个属性赋值,如
1
2
plot(x,y,color='green', marker='o', linestyle='dashed', linewidth=1, markersize=6)
plot(x,y,color='#900302',marker='+',linestyle='-')
网格线
1
plt.grid(b=None, which='major', axis='both', **kwargs)
参数说明
- b 默认为
None,可以设置布尔值,true为显示网格线,false为不显示 - which 应用更改的网格线,默认为
'major''major'只应用于主刻度网格线'minor'只应用于次刻度网格线'both同时应用于主刻度和次刻度网格线
- axis 设置显示哪个方向的网格线,可以是取
'both'(默认),'x'或'y',分别表示两个方向 - **kwargs 设置网格样式
color网格线的颜色linestyle网格线的线型linewidth网格线的宽度,单位为点
散点图
1
2
3
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None,
vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False,
data=None, **kwargs)
参数说明
- x,y 输入数据,长度相同的数组,绘制散点图的数据点
- s 点的大小,默认为20,也可以是个数组,数组每个参数为对应点的大小
- c 点的颜色,默认为蓝色
'b',也可以是RGB或RGBA二维行数组 - marker 点的样式,默认为小圆圈
'o' - cmap 颜色映射,默认为
None,用于将数据值映射到特定的颜色范围,c为浮点数数组的时生效。如果没有指定cmap,默认为viridis。显示需要使用plt.colorbar() - norm 归一化,默认为
None,用于将数据值归一化到[0, 1]的范围,c为浮点数数组的时生效 - vmin,vmax 亮度设置,在
norm参数存在时会忽略 - alpha 透明度设置,0-1 之间,默认为
None,即不透明 - linewidths 标记点的长度
- edgecolors 颜色或颜色序列,默认为
'face',可选值有'face','none',None - plotnonfinite 布尔值,设置是否使用非限定的
c(inf,-inf或nan)绘制点 - **kwargs 其他参数
颜色条参数可以为
| 颜色名称 | 反转色 | 描述 |
|---|---|---|
| Accent | Accent_r | 强调配色,适合分类数据 |
| Blues | Blues_r | 蓝色渐变,适合连续数据 |
| BrBG | BrBG_r | 棕色到蓝绿色渐变,用于两极数据对比 |
| BuGn | BuGn_r | 蓝色到绿色渐变,用于连续数据 |
| BuPu | BuPu_r | 蓝色到紫色渐变,用于连续数据 |
| CMRmap | CMRmap_r | 基于 CMR 的颜色映射 |
| Dark2 | Dark2_r | 暗色系配色,用于分类数据 |
| GnBu | GnBu_r | 绿色到蓝色渐变,用于连续数据 |
| Greens | Greens_r | 绿色渐变,适合连续数据 |
| Greys | Greys_r | 灰色渐变,适合背景或无显著差异数据 |
| OrRd | OrRd_r | 橙色到红色渐变,适合强度数据 |
| Oranges | Oranges_r | 橙色渐变,适合连续数据 |
| PRGn | PRGn_r | 紫色到绿色渐变,两极对比 |
| Paired | Paired_r | 配对色,适合分类数据 |
| Pastel1 | Pastel1_r | 柔和配色,适合分类数据 |
| Pastel2 | Pastel2_r | 柔和配色,适合分类数据 |
| PiYG | PiYG_r | 粉色到黄绿色渐变,两极对比 |
| PuBu | PuBu_r | 紫色到蓝色渐变,用于连续数据 |
| PuBuGn | PuBuGn_r | 紫色到蓝绿色渐变,用于连续数据 |
| PuOr | PuOr_r | 紫色到橙色渐变,两极对比 |
| PuRd | PuRd_r | 紫色到红色渐变,用于连续数据 |
| Purples | Purples_r | 紫色渐变,适合连续数据 |
| RdBu | RdBu_r | 红色到蓝色渐变,两极对比 |
| RdGy | RdGy_r | 红色到灰色渐变,用于两极对比 |
| RdPu | RdPu_r | 红色到紫色渐变,用于连续数据 |
| RdYlBu | RdYlBu_r | 红色到黄色再到蓝色,用于两极对比 |
| RdYlGn | RdYlGn_r | 红色到黄色再到绿色,用于两极对比 |
| Reds | Reds_r | 红色渐变,适合强度或热量数据 |
| Set1 | Set1_r | 配色集合1,适合分类数据 |
| Set2 | Set2_r | 配色集合2,适合分类数据 |
| Set3 | Set3_r | 配色集合3,适合分类数据 |
| Spectral | Spectral_r | 多色渐变,用于连续或离散数据 |
| Wistia | Wistia_r | 黄色调渐变,适合特殊效果 |
| YlGn | YlGn_r | 黄色到绿色渐变,用于连续数据 |
| YlGnBu | YlGnBu_r | 黄色到蓝绿色渐变,用于连续数据 |
| YlOrBr | YlOrBr_r | 黄色到橙棕渐变,用于连续数据 |
| YlOrRd | YlOrRd_r | 黄色到橙红渐变,用于强度或热量数据 |
| viridis | viridis_r | 蓝绿黄色调,常用于连续数据,视觉友好 |
| plasma | plasma_r | 高对比蓝黄渐变,适合连续数据 |
| inferno | inferno_r | 高对比橙黄渐变,适合连续数据 |
| magma | magma_r | 高对比紫黄渐变,适合连续数据 |
| cividis | cividis_r | 色盲友好的蓝绿色渐变 |
| winter | winter_r | 蓝绿色渐变,适合连续数据 |
柱形图
1
plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
参数说明
- x 浮点型数组,柱形图的
x轴数据 - height 浮点型数组,柱形图的高度
- width 浮点型数组,柱形图的宽度
- bottom 浮点型数组,底座的
y坐标,默认为0。 - align 柱形图与
x坐标的对齐方式,默认为'center'以x位置为中心。可选'edge'将柱形图的左边缘与x位置对齐。要对齐右边缘,可以传递负的width - tick_label 每个柱体的标签名称
- alpha 柱状填充颜色的透明度
- edgecolor 柱体的边框颜色
- linewidth 柱体边框线的宽度
- 水平方向的柱形图可以使用
plt.barh()
饼图
1
2
3
4
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,
shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True,
wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False,
*, normalize=None, data=None)
参数说明
- x 浮点型数组或列表,用于绘制饼图的数据
- explode 数组,各个扇形之间的间隔,默认为0
- labels 列表,各个扇形的标签,默认为None
- colors 数组,各个扇形的颜色,默认为None
- autopct 设置饼图内各个扇形百分比显示格式,
%d%%整数百分比,%0.1f一位小数,%0.1f%%一位小数百分比,%0.2f%%两位小数百分比 - labeldistance 标签标记的绘制位置,相对于半径的比例,默认值为
1.1,如<1则绘制在饼图内侧 - pctdistance::类似
labeldistance,指定autopct的位置刻度,默认为0.6 - shadow 布尔值,设置饼图的阴影,默认为
False,不设置阴影 - radius 设置饼图的半径,默认为
1 - startangle 指定饼图的起始角度,默认为从
x轴正方向逆时针画起,如设定=90则从y轴正方向画起 - counterclock 布尔值,指定是否逆时针绘制扇形,默认为
True逆时针绘制 - wedgeprops 字典类型,默认为
None。指定扇形的属性- linewidth 扇形边界线的宽度,默认为
0 - edgecolor 扇形边界线的颜色,默认为
white - antialiased 布尔值,默认为
True,对扇形边界进行抗锯齿处理 - linestyle 边界线的线型,默认为
'-' - hatch 扇形的填充图案(如
'/','\\','-',' '等,支持组合)
- linewidth 扇形边界线的宽度,默认为
- textprops 字典类型,指定文本标签的属性,默认为
None- fontsize 文本字体大小,可以是整数或字符串(如
'small','medium','large'等)默认值由Matplotlib配置决定 - color 文本颜色,默认为
'black',支持颜色名称、十六进制值、RGB值或RGBA值 - weight 字体粗细,默认为
'normal',常用值有'normal','bold','light' - style 字体样式,默认为
'normal',常用值有'normal','italic','oblique' - family 字体系列,如
'serif','sans-serif','monospace'等,使用Matplotlib默认字体 - verticalalignment 文本垂直对齐方式,默认为
'center',可选'center','top','bottom' - horizontalalignment 文本水平对齐方式,默认为
'center',可选'center','left','right' - rotation 文本旋转角度,以度为单位,正值为逆时针,负值为顺时针,默认值由布局决定
- fontsize 文本字体大小,可以是整数或字符串(如
- center 浮点型列表,指定饼图的中心位置,默认
(0,0) - frame 布尔类型,指定是否绘制饼图的边框,默认
False不绘制带有表的轴框架 - rotatelabels 布尔类型,指定是否旋转文本标签,默认为
False不旋转 - normalize 布尔类型,指定是否对输入的数据进行归一化处理,为
True会将所有值的和归一化为1.0,然后按比例绘制饼图 - data 指定数据。如果设置
data参数,则可以直接使用数据框中的列作为x、labels等参数的值,无需再次传递
除此之外,pie()函数还可以返回三个参数
- wedges 包含扇形对象的列表
- texts 一个包含文本标签对象的列表
- autotexts 一个包含自动生成的文本标签对象的列表
直方图
1
2
3
plt.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False,
bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None,
log=False, color=None, label=None, stacked=False, **kwargs)
参数说明
- x 要绘制直方图的数据,一维数组或列表
- bins 直方图的箱数。默认为10
- range 直方图的值域范围,二元数组或列表。默认为
None,即使用数据中的最小值和最大值 - density 是否将直方图归一化。默认为
False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度 - weights 每个数据点的权重,默认为
None - cumulative 是否绘制累积分布图。默认为
False - bottom 直方图的起始高度。默认为
None - histtype 直方图的类型,默认为
'bar',可选'bar'传统柱状图'barstacked'堆叠柱状图'step'无填充的折线图'stepfilled'有填充的折线图
- align 直方图箱子的对齐方式,默认为
'mid',可以是'left'、'mid'、'right' - orientation 直方图方向,默认为
'vertical',可以是'vertical'、'horizontal' - rwidth 每个箱子的宽度,默认为
None - log 是否在y轴上使用对数刻度,默认为
False - color 直方图的颜色
- label 直方图的标签
- stacked 是否堆叠不同的直方图,默认为
False - **kwargs:可选参数
- edgecolor 柱体边框颜色,默认为
'black' - linewidth 柱体边框线宽(单位:点),默认为
1.5 - linestyle 柱体边框的线型,默认为
'--' - alpha 透明度(0.0 到 1.0),值越小越透明,默认为
0.7 - hatch 填充图案
- color 柱体颜色,可以是单个值或颜色列表,默认为
blue
- edgecolor 柱体边框颜色,默认为
设置参数
颜色字符(color)
'b'或'blue'蓝色'm'或'magenta'洋红色'g'或'green'绿色'y'或'yellow'黄色'r'或'red'红色'k'或'black'黑色'w'或'white'白色'c'或'cyan'青绿色#008000RGB颜色字符串。多条曲线不指定颜色时,会自动选择不同颜色(0.1, 0.2, 0.5)或(0.1, 0.2, 0.5, 0.8)RGB或RGBA值'0.5'灰色
线型参数(linestyle)
‐或'solid'实线‐‐或'dashed'虚线‐.或'dashdot'点划线:'或'dotted'点线None不划线
标记字符(marker)
'.'点','像素点'o'实心圆'v'下三角'^'上三角'<'左三角'>'右三角'1'下三叉'2'上三叉'3'左三叉'4'右三叉'8'八角形's'正方形'p'五边形'P'加号(填充)'*'星号'h'六边形 1'H'六边形 2'+'加号'x'乘号 x'X'乘号 x (填充)'D'菱形'd'瘦菱形'|'竖线'_'横线0左横线1右横线2上竖线3下竖线4左箭头5右箭头6上箭头7下箭头8左箭头 (中间点为基准)9右箭头 (中间点为基准)10上箭头 (中间点为基准)11下箭头 (中间点为基准)None,' ',''没有任何标记$...$渲染指定的字符。例如'$f$'以字母f为标记
填充图案(hatch)
'/'斜线'\'反斜线'-'横线'|'竖线'+'十字线'x'交叉线'o'圆圈'.'点'*'星形'-/--'可重复符号形成更密集的图案
绘制多图
subplot()在绘图时需要指定位置,subplots()可以一次生成多个,在调用时只需要调用生成对象的ax即可
subplot()
1
2
3
4
plt.subplot(nrows, ncols, index, **kwargs)
plt.subplot(pos, **kwargs)
plt.subplot(**kwargs)
plt.subplot(ax)
以上函数将整个绘图区域分成nrows行和ncols列,然后从左到右,从上到下的顺序对每个子区域进行编号1...N,左上的子区域的编号为1、右下的区域编号为N,编号可以通过参数index来设置
subplots()
1
2
plt.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True,
subplot_kw=None, gridspec_kw=None, **fig_kw)
参数说明
- nrows 默认为1,设置图表的行数
- ncols 默认为1,设置图表的列数
- sharex、sharey 设置
x、y轴是否共享属性,默认为false,可设置为'none'、'all'、'row'或'col'。none每个子图的x轴或y轴都是独立的,'all'所有子图共享x轴或y轴,'row'设置每个子图行共享一个x轴或y轴,'col'每个子图列共享一个x轴或y轴 - squeeze 默认为
True,表示额外的维度从返回的Axes(轴)对象中挤出,对于N*1或1*N个子图,返回一个1维数组,对于N*M,N>1和M>1返回一个2维数组。如果设置为False,则不进行挤压操作,返回一个元素为Axes实例的2维数组,即使它最终是1x1。 - subplot_kw 把字典的关键字传递给
add_subplot()来创建每个子图 - gridspec_kw 把字典的关键字传递给
GridSpec构造函数创建子图放在网格里 - **fig_kw:把详细的关键字参数传给
figure()
This post is licensed under CC BY 4.0 by the author.