python学习-xx13-1 matplotlib【绘图-对标,MATLAB】
Matplotlib是Python的绘图模块,他与Numpy,Pandas等配合使用,类似于MATLAB 的绘图工具
Matplotlib是一个基础工具,后面所介绍的seanborn等都是基于这个模块实现
有很多方法,可以直接参考官网
官网:https://matplotlib.org/index.html(https://matplotlib.org/index.html)
案例:https://matplotlib.org/gallery/index.html
1 matplotlib基本介绍
1.1 模块导入(测试)

1.2 魔法函数(%matplotlib inline)
%matplotlib inline作用:
iPython 中定义的魔法函数(Magic Function),将matplotlib绘制的图显示在页面里中;
如果不加这句话需要调用:plt.show()

1.3 matplotlib图表(画布)
认识画布,axis,axes
画布:图表大小,进行图表绘制
axes:坐标系,一个画布中可以指定多个坐标系
axis:坐标轴,每个坐标系都有一个坐标轴

2 matplotlib基本使用









2.1 参数
绘制折线图【更多参数可以查看说明文档】:
plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
plt.plot() 是 Matplotlib 最核心的绘图函数,用于绘制折线图、散点图(带点样式)等
*args

样式字符串速查表(fmt)
格式:[颜色][线型][标记],可自由组合

scalex=True, scaley=True
缩放参数:scalex, scaley
控制是否自动缩放坐标轴,默认都是 True。
scalex=True:自动适配 x 轴范围
scaley=True:自动适配 y 轴范围

data=None
数据参数:data
简化绘图:直接传入数据集(DataFrame / 字典),用列名当 x/y。
不用重复写 df['x'],代码更简洁。

**kwargs
样式关键字参数:**kwargs
用键值对精细设置线条 / 点样式,比 fmt 更强大
常用参数清单:

示例:

2.1.1 折线图常用方式
单列绘图

双列绘图

用data配置数据

2.2 格式配置
2.2.1 图表配置及文档查看
文档查看
方式1: pyplot子模块文档地址:https://matplotlib.org/api/pyplot_summary.html (https://matplotlib.org/api/pyplot_summary.html)
在页面中找到plot方法,点击进入plot方法的介绍
方式2:直接查看(help)
2.2.2 通过fmt设置颜色

fmt格式:'-or'分别代表:线型,点形状,颜色,顺序可以颠倒
①设置线型

②点设置

③颜色设置

更多新详细说明参考:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html

2.3 xy轴设置
坐标轴设置包括:
坐标轴值,坐标轴显示值,坐标轴标签

示例:


2.3.1 字体设置
字体设置包括大小,字体,颜色,旋转角度等
参考链接:https://matplotlib.org/api/text_api.html (https://matplotlib.org/api/text_api.html)


可以直接看官方说明plt.xticks?,因为版本不同可能参数也不用
2.4 title与图例
2.4.1 title/图例设置
2.4.1.1 设置标题(plt.title)
plt.title(label, fontdict=None, loc='center', pad=None, **kwargs)


| 参数 | 作用 | 常用值 |
|---|---|---|
| label | 标题文字(必须写) | '******分布图' |
| fontdict | 统一设置字体样式 | 字体、大小、颜色 |
| loc | 标题位置 | center(居中)/ left / right |
| pad | 标题与图表顶部距离 | 数字(越大越远) |
| kwargs | 精细样式 | color、fontsize、fontweight 等 |

2.4.1.2 设置图例(plt.legend)
plt.legend(*args, **kwargs)
例如一个图表中可以绘制多个折线,每个折线代表说明可以使用legend标识









详细参数可以查看说明与帮助文档
示例:
都是空的

在plt.plot中增加label

多个图例

2.4.1.3 显示字体为中文(plt.rcParams)

The list of rcParams is: - _internal.classic_mode - agg.path.chunksize - animation.bitrate - animation.codec - animation.convert_args - animation.convert_path - animation.embed_limit - animation.ffmpeg_args - animation.ffmpeg_path - animation.frame_format - animation.html - animation.writer - axes.autolimit_mode - axes.axisbelow - axes.edgecolor - axes.facecolor - axes.formatter.limits - axes.formatter.min_exponent - axes.formatter.offset_threshold - axes.formatter.use_locale - axes.formatter.use_mathtext - axes.formatter.useoffset - axes.grid - axes.grid.axis - axes.grid.which - axes.labelcolor - axes.labelpad - axes.labelsize - axes.labelweight - axes.linewidth - axes.prop_cycle - axes.spines.bottom - axes.spines.left - axes.spines.right - axes.spines.top - axes.titlecolor - axes.titlelocation - axes.titlepad - axes.titlesize - axes.titleweight - axes.titley - axes.unicode_minus - axes.xmargin - axes.ymargin - axes.zmargin - axes3d.automargin - axes3d.grid - axes3d.mouserotationstyle - axes3d.trackballborder - axes3d.trackballsize - axes3d.xaxis.panecolor - axes3d.yaxis.panecolor - axes3d.zaxis.panecolor - backend - backend_fallback - boxplot.bootstrap - boxplot.boxprops.color - boxplot.boxprops.linestyle - boxplot.boxprops.linewidth - boxplot.capprops.color - boxplot.capprops.linestyle - boxplot.capprops.linewidth - boxplot.flierprops.color - boxplot.flierprops.linestyle - boxplot.flierprops.linewidth - boxplot.flierprops.marker - boxplot.flierprops.markeredgecolor - boxplot.flierprops.markeredgewidth - boxplot.flierprops.markerfacecolor - boxplot.flierprops.markersize - boxplot.meanline - boxplot.meanprops.color - boxplot.meanprops.linestyle - boxplot.meanprops.linewidth - boxplot.meanprops.marker - boxplot.meanprops.markeredgecolor - boxplot.meanprops.markerfacecolor - boxplot.meanprops.markersize - boxplot.medianprops.color - boxplot.medianprops.linestyle - boxplot.medianprops.linewidth - boxplot.notch - boxplot.patchartist - boxplot.showbox - boxplot.showcaps - boxplot.showfliers - boxplot.showmeans - boxplot.vertical - boxplot.whiskerprops.color - boxplot.whiskerprops.linestyle - boxplot.whiskerprops.linewidth - boxplot.whiskers - contour.algorithm - contour.corner_mask - contour.linewidth - contour.negative_linestyle - date.autoformatter.day - date.autoformatter.hour - date.autoformatter.microsecond - date.autoformatter.minute - date.autoformatter.month - date.autoformatter.second - date.autoformatter.year - date.converter - date.epoch - date.interval_multiples - docstring.hardcopy - errorbar.capsize - figure.autolayout - figure.constrained_layout.h_pad - figure.constrained_layout.hspace - figure.constrained_layout.use - figure.constrained_layout.w_pad - figure.constrained_layout.wspace - figure.dpi - figure.edgecolor - figure.facecolor - figure.figsize - figure.frameon - figure.hooks - figure.labelsize - figure.labelweight - figure.max_open_warning - figure.raise_window - figure.subplot.bottom - figure.subplot.hspace - figure.subplot.left - figure.subplot.right - figure.subplot.top - figure.subplot.wspace - figure.titlesize - figure.titleweight - font.cursive - font.family - font.fantasy - font.monospace - font.sans-serif - font.serif - font.size - font.stretch - font.style - font.variant - font.weight - grid.alpha - grid.color - grid.linestyle - grid.linewidth - hatch.color - hatch.linewidth - hist.bins - image.aspect - image.cmap - image.composite_image - image.interpolation - image.interpolation_stage - image.lut - image.origin - image.resample - interactive - keymap.back - keymap.copy - keymap.forward - keymap.fullscreen - keymap.grid - keymap.grid_minor - keymap.help - keymap.home - keymap.pan - keymap.quit - keymap.quit_all - keymap.save - keymap.xscale - keymap.yscale - keymap.zoom - legend.borderaxespad - legend.borderpad - legend.columnspacing - legend.edgecolor - legend.facecolor - legend.fancybox - legend.fontsize - legend.framealpha - legend.frameon - legend.handleheight - legend.handlelength - legend.handletextpad - legend.labelcolor - legend.labelspacing - legend.loc - legend.markerscale - legend.numpoints - legend.scatterpoints - legend.shadow - legend.title_fontsize - lines.antialiased - lines.color - lines.dash_capstyle - lines.dash_joinstyle - lines.dashdot_pattern - lines.dashed_pattern - lines.dotted_pattern - lines.linestyle - lines.linewidth - lines.marker - lines.markeredgecolor - lines.markeredgewidth - lines.markerfacecolor - lines.markersize - lines.scale_dashes - lines.solid_capstyle - lines.solid_joinstyle - macosx.window_mode - markers.fillstyle - mathtext.bf - mathtext.bfit - mathtext.cal - mathtext.default - mathtext.fallback - mathtext.fontset - mathtext.it - mathtext.rm - mathtext.sf - mathtext.tt - patch.antialiased - patch.edgecolor - patch.facecolor - patch.force_edgecolor - patch.linewidth - path.effects - path.simplify - path.simplify_threshold - path.sketch - path.snap - pcolor.shading - pcolormesh.snap - pdf.compression - pdf.fonttype - pdf.inheritcolor - pdf.use14corefonts - pgf.preamble - pgf.rcfonts - pgf.texsystem - polaraxes.grid - ps.distiller.res - ps.fonttype - ps.papersize - ps.useafm - ps.usedistiller - savefig.bbox - savefig.directory - savefig.dpi - savefig.edgecolor - savefig.facecolor - savefig.format - savefig.orientation - savefig.pad_inches - savefig.transparent - scatter.edgecolors - scatter.marker - svg.fonttype - svg.hashsalt - svg.id - svg.image_inline - text.antialiased - text.color - text.hinting - text.hinting_factor - text.kerning_factor - text.latex.preamble - text.parse_math - text.usetex - timezone - tk.window_focus - toolbar - webagg.address - webagg.open_in_browser - webagg.port - webagg.port_retries - xaxis.labellocation - xtick.alignment - xtick.bottom - xtick.color - xtick.direction - xtick.labelbottom - xtick.labelcolor - xtick.labelsize - xtick.labeltop - xtick.major.bottom - xtick.major.pad - xtick.major.size - xtick.major.top - xtick.major.width - xtick.minor.bottom - xtick.minor.ndivs - xtick.minor.pad - xtick.minor.size - xtick.minor.top - xtick.minor.visible - xtick.minor.width - xtick.top - yaxis.labellocation - ytick.alignment - ytick.color - ytick.direction - ytick.labelcolor - ytick.labelleft - ytick.labelright - ytick.labelsize - ytick.left - ytick.major.left - ytick.major.pad - ytick.major.right - ytick.major.size - ytick.major.width - ytick.minor.left - ytick.minor.ndivs - ytick.minor.pad - ytick.minor.right - ytick.minor.size - ytick.minor.visible - ytick.minor.width - ytick.right![]()


中文设置示例

2.5 子图(在一个画布中绘制多个子图)
2.5.1 创建子图(plt.subplot)
添加多个图表方式可以使用子图及多图
plt.subplot(*args, **kwargs):返回axes
plt.subplot(行数, 列数, 第几个子图)




写法:


注意:
- 数字顺序:行 → 列 → 第几个
- 子图编号从 1 开始,不是 0
- 每个子图都是独立的,可以单独画、加标题、颜色

示例:有行有列选择哪一个,然后再进行绘制
一个一个创建

内容添加:

循环绘制

多行多列并进行不用的设置

axes代表不同的坐标系,对应每个坐标系
批量创建

2.6 创建画布(plt.figure)
注意子图与画布的区别,子图是在一张画布中绘制的,而画布是可以设置多个
子图:一张图中有几个小图
画布:有几张整图
plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True,...clear=False,**kwargs)

创建、激活一张画布的函数,所有画图内容都画在这张 “画布” 上



【⭐】

| 参数 | 类型 | 作用说明 | 常用取值 / 示例 |
|---|---|---|---|
num |
int / str / Figure / None | 画布唯一标识;已有则激活,无则新建;字符串可设窗口标题 | 1、"遥感时序图" |
figsize |
(float, float) | 画布尺寸,单位英寸,(宽,高) | (8,5)、(10,6) |
dpi |
float | 画布分辨率,每英寸像素点数,越大越清晰 | 100、150、200 |
facecolor |
颜色值 | 画布背景色 | 'white'、'#f5f5f5' |
edgecolor |
颜色值 | 画布边框颜色 | 'black'、'gray' |
frameon |
bool | 是否显示画布外边框 | True(默认)、False |
clear |
bool | 若画布已存在,是否清空原有内容 | True 清空、False 保留 |
layout |
str / None | 自动布局引擎,防止坐标轴 / 标题重叠 | 'constrained'、'tight'、'none' |
FigureClass |
类 | 指定自定义画布类,一般不用改 | 默认即可 |
示例:

设置坐标系

2.7 设置坐标轴
默认坐标系为00,有时候我们希望坐标轴中心点在其他位置,且只希望显示x,y两个轴
直接使用套代码模板即可:
2.7.1 matlab方法设置


2.7.2 mpl的方法设置



3 matplotlib常用的图表【⭐】
3.1 折线图(plt.plot())
趋势变化关系,场合时间等结合起来使用
例如:新增用户,累计用户,股票数据等;
案例:近一周某用户粉丝每天增长量与累积粉丝数:

3.2 散点图(plt.scatter())
显示若干数据系列中各数值之间的关系,一定程度反映数据分布关系
适用于维度较少数据
方法:plt.scatter(x, y, s=None, c=None,marker=None,...,alpha=None,**kwargs)




3.3柱状图(plt.bar())/条形图(plt.barh())
显示一段时间内的数据变化或显示各项之间的比较情况
例如:数据对比
相关方法:
柱状图
bar(x, height, *, align='center', **kwargs)
bar(x, height, width, *, align='center', **kwargs)
bar(x, height, width, bottom, *, align='center', **kwargs)

条形图:
plt.barh(*args, **kwargs)

3.4饼状图(plt.pie())
总体数据中,各项与总和的比例
各个数据对比,例如:不同地区销售额占比;
plt.pie(x, explode=None, labels=None...)

3.5 直方图(plt.hist())
数据分布情况
plt.hist(
x,
bins=None,
range=None,
density=None,
weights=None,
cumulative=False,
bottom=None,
histtype='bar',
align='mid',
orientation='vertical',
rwidth=None,
color=None,
edgecolor=None,
label=None,
stacked=False,
alpha=None
)
| 参数 | 含义 | 用法 / 常用取值 |
|---|---|---|
| x | 输入待统计的一维数据 | 列表、numpy 数组、多组数据可传 [x1,x2] |
| bins | 分组柱数 / 自定义区间 | 整数:柱子数量;列表:手动指定分段边界 |
| range | 限定统计的数据范围 | 元组 (min, max),只统计区间内数据 |
| density | 是否转为概率密度 | False(默认):频数;True:概率密度,积分面积为 1 |
| weights | 给每个数据设置权重 | 同 x 长度的权重数组,按权重累加而非计数 |
| cumulative | 是否画累积直方图 | True 累积求和;False 普通频次 |
| bottom | 柱子底部起始高度 | 数值 / 数组,用于整体抬高柱子或多层堆叠 |
| histtype | 直方图样式 | bar默认柱状;step空心轮廓;stepfilled填充轮廓 |
| align | 柱子刻度对齐方式 | mid居中;left左对齐;right右对齐 |
| orientation | 直方图摆放方向 | vertical竖直;horizontal水平横向 |
| rwidth | 柱子相对宽度 | 0~1 之间,小于 1 柱间留空隙 |
| color | 柱子填充颜色 | 颜色名、十六进制颜色 |
| edgecolor | 柱子边框颜色 | black、gray、none无边框 |
| alpha | 透明度 | 0~1,数值越小越透明 |
| label | 图例标签文字 | 字符串,配合 plt.legend() 显示 |
| stacked | 多组数据是否堆叠 | True堆叠;False并列展示 |

3.6 箱型图(plt.boxplot())
箱形图可以很直观的描述数据的最大值、最小值、中位数、上四分位数、下四分位数、异常值
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None)
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None,
positions=None, widths=None, patch_artist=None,
bootstrap=None, usermedians=None, conf_intervals=None,
meanline=None, showmeans=None, showcaps=None,
showbox=None, showfliers=None, boxprops=None,
whiskerprops=None, capprops=None, flierprops=None,
medianprops=None, meanprops=None)
| 参数 | 中文含义 | 作用说明 & 常用取值 |
|---|---|---|
| x | 输入数据 | 一维数组 / 多组二维数据,每组画一个箱线 |
| notch | 凹口箱体 | True:中间带凹口(中位数置信区间)False:标准矩形箱体(默认) |
| sym | 异常值标记样式 | 设置离群点形状 + 颜色,例:'ro'红点、'k*'黑星号 |
| vert | 箱体方向 | True:竖直箱线(默认)False:水平箱线 |
| whis | 须线阈值倍数 | 默认 1.5;须线范围 = Q1/Q3 ± 1.5×IQR超出即判定为异常值 |
| positions | 箱体横坐标位置 | 自定义每个箱线在 x 轴的位置,默认依次 1,2,3… |
| widths | 箱体宽度 | 0~1 数值,控制箱子粗细 |
| patch_artist | 允许填充箱体 | True:可给箱体填颜色False:仅线条,不能填充(默认) |
| bootstrap | 凹口置信区间抽样数 | 配合 notch=True,设置 bootstrap 抽样次数 |
| usermedians | 自定义中位数 | 手动传入每组数据的中位数,不用自动计算 |
| conf_intervals | 自定义置信区间 | 手动指定凹口上下置信区间 |
| meanline | 均值以线条显示 | True:用横线表示均值False:用点表示均值 |
| showmeans | 是否显示均值 | True:画出均值标记False:不显示 |
| showcaps | 是否显示须线端点横线 | True:显示上下短横线(默认)False:隐藏 |
| showbox | 是否显示箱体边框 | True:显示箱体(默认)False:只画须线和异常点 |
| showfliers | 是否显示异常离群点 | True:显示异常点(默认)False:隐藏所有离群值 |
| boxprops | 箱体属性字典 | 设置箱体颜色、线宽、填充,例:dict(color='blue') |
| whiskerprops | 须线属性字典 | 设置须线颜色、线型、粗细 |
| capprops | 须线端点横线属性 | 设置上下盖帽横线样式 |
| flierprops | 异常点属性字典 | 单独设置离群点大小、颜色、形状 |
| medianprops | 中位数线属性 | 设置中位数线颜色、粗细、线型 |
| meanprops | 均值标记属性 | 设置均值点 / 均值线样式 |



示例:

更多推荐

所有评论(0)