print(\'--------------------------------------------matplotlib.pyplot API 入门学习--------------------------------------------\')
MyNote = \"\"\"
*a:
>>>默认参数都是我随便设置的
*b:
>>>部分参数是可以缩写的
plt.figure(figsize=(9, 9), dpi=1000)->创建画布
figsize-> 画布大小
dpi-> 像素密度
plt.plot(x, y, linestyle=\'-\', color=\'green\', linewidth=3, label=\'cos(x)\', fillstyle=\'full\', markersize=20)-> 折线图
linestyle-> 图像类型(缩写是ls)
color-> 图像颜色(缩写是c,当然了,颜色也可以缩写; example: c=\'r\'->c=\'red\', 参数也可以是0到1浮点数形式的字符串,越大颜色越深, c=\'1\'->c=\'black\')
linewidth-> 图像线粗(缩写是lw)
label-> 图像标题(需要plt.legend()来进行显示)
fillstyle-> 点的填充方式,有left/right/full/bottom/top/none可选
markersize-> 点的大小
*a:
>>>plot函数可以在同一个画布上创建多个图线,比如:plot(x1, y1, \'r--\',…… x2, y2, \'g--\', ……)表示了两个图线的不同参数配置,返回值为两个图线实例
plt.scatter(x, y, color=\'red\', label=\'scatter image\', s=5)-> 散点图
s-> 点的大小
plt.xlim(a, b)->限制x坐标范围
plt.ylim(a, b)->限制y坐标范围
a-> 最小值
b-> 最大值
plt.xlabel(\'X Point\', color=\'r\')-> x轴标签
plt.ylabel(\'Y Point\', color=\'y\')-> y轴标签
plt.grid(color=\'red\', lw=3, ls=\':\', alpha=0.5, axis=\'y\')->网格化画布
alpha->透明度
axis-> 网格线选取(这里是只显示y轴,默认是全部)
plt.axhline(y=0, lw=5, ls=\'--\', c=\'r\')-> 绘制平行于x轴的水平参考线
plt.axvline(x=0, lw=5, ls=\'--\', c=\'y\')-> 绘制平行于y轴的水平参考线
plt.axvspan(xmin=-7, xmax=7, fc=\'r\', alpha=0.5)-> 绘制垂直于x轴的参考区域
xmin->可以认为是起点
xmax->可以认为是终点
fc(全称是facecolor)->区域颜色
alpha->透明度
plt.axhspan用法同上
plt.annotate(
text=\'It is the point by two funcs: (0, 0)\',
xy=(0, 0),
xytext=(2.5, -1),
fontsize=64,
color=\'b\',
arrowprops=dict(arrowstyle=\'->\',connectionstyle=\'arc3\',color=\'b\'
))-> 箭头注释
text->注释内容
xy->指向坐标
xytext->起点坐标
fontsize-> 字体大小
color-> 颜色
arrowprops-> 箭头的属性
plt.text(x, y, s=\'y=f(x)\', fontdict=dict(weight=\'bold\', size=64), c=\'r\')-> 无指向文本
x-> 文本x坐标
y-> 文本y坐标
s-> 文本内容
plt.title(label=\'Using so fluently!!!\', fontdict=dict(weight=\'bold\', size=64, loc=\'left\'))->标题(一个画布外面可以使用多个标题)
loc-> 标题位置
plt.legend(line=[line1, line2, ……], name=[\'name1\', \'name2\', ……], loc=1, bbox_to_anchor=(0.91, 0, 0.3, 1), title=\'This is the name of box.\',
shadow=True, mode=\'expand\', fancybox=True, nloc=3, fontsize=48, borderaxespad=0.3, frameon=True, framealpha=1.0)-> 图列
*a:
>>>这里的line和name只是随便起的参数名字(并不存在)
line-> 根据实例匹配对应的图线
name-> 实例匹配对应的图线的新命名
loc-> 位置,这里的1相当于\'upper right\'
bbox_to_anchor-> 盒子的定位坐标在画布占位的百分比(左边,右边,顶边,底边)
title-> 盒子的标题
shadow-> 盒子边框阴影效果
nloc-> 图例的列的数量,一般为1
fancybox-> 是否将图例框的边角设为圆形
fontsize-> 字体大小
borderaxespad-> 轴与图例边框之间的距离
frameon-> 是否显示边框
framealpha-> 边框透明度(0~1)
mode-> 盒子边框形状(这里的expand是让盒子直接拓展到画布两侧)
plt.bar(x, height, width=0.5, align=\'center\', color=colors, tick_label=list(\'ABCDEFGH\'), hatch=\'\\\\o\', label=\'随机模拟\', bottom=0)-> 柱状图(纵向柱状图)
x-> 默认底部变量名称
height-> 变量数值
width-> 柱的粗细
align-> 底部变量名称的位置,默认居中,当然也可以edge->左边缘开始
color-> 柱的颜色(也可以是列表)
tick_label-> 替换底部变量名称
hatch-> 驻的风格
label-> 图像标题(需要plt.legend()来进行显示)
bottom-> 基线
plt.bar(x, height, width=0.5, align=\'center\', yerr=std_, color=colors,
error_kw=dict(elinewidth=2, ecolor=\'yellow\', capsize=3), tick_label=[\'园区{}\'.format(s) for s in range(1, 6)])-> 误差棒柱状图
error_kw-> 误差棒的属性组成的字典
yerr-> 每一组对应的误差数据组成的列表
plt.barh(y, width, height=0.5, align=\'center\', color=\'0.5\', tick_label=list(\'ABCDEFGH\'), hatch=\'\\\\\\o\')-> 条形图(横向柱状图)
y-> 默认底部变量名称
width-> 变量数值
height-> 柱的粗细
align-> 底部变量名称的位置,默认居中,当然也可以edge->左边缘开始
color-> 柱的颜色(也可以是列表)
tick_label-> 替换底部变量名称
hatch-> 驻的风格
plt.barh(y, width, height=bar_width, align=\'center\', color=colors, xerr=std_err, tick_label=[\'误差{}\'.format(s) for s in range(5)])-> 误差棒条形图(原理类似误差棒柱状图)
plt.hist(x, bins=bin_, align=\'mid\',histtype=\'bar\', color=\'r\', rwidth=0.5)-> 直方图
x-> 统计的变量
bins-> 统计的变量所在区间
align-> 变量位置
history-> 直方图类型
color-> 直方图颜色
rwidth-> 直方图柱子的粗细
堆积图-> 两个bar
plt.bar(x, y, align=\'center\', color=\'blue\', tick_label=list(\'ARCADE\'), label=\'数据1\', width=0.5, hatch=\'\\\\\')
plt.bar(x, y1, align=\'center\', color=\'pink\', bottom=y, label=\'数据2\', width=0.5, hatch=\'\\\\\')
第二个bar堆积在第一个bar上, 原理是bottom参数,使得新的 bar坐落在于上一个bar的值
堆积条形图-> 两个barh
plt.barh(y=x, width=y, height=0.7, color=\'blue\', tick_label=list(\'ABCDE\'), label=\'数据1\', hatch=\'\\\\\')
plt.barh(y=x, width=y, height=0.7, color=\'green\', left=y, label=\'数据2\', hatch=\'\\\\\')
原理同上,只不过用left来代替bottom参数
并列堆积图-> 两个bar
plt.bar(x, y, width=0.3, tick_label=list(\'ABCDE\'), color=\'r\', align=\'center\', label=\'数据A\', hatch=\'\\\\\')
plt.bar(x+width, y1, width=0.3, color=\'b\', align=\'center\', label=\'数据A\', hatch=\'\\\\\')
x-> 数组形式,这样可以进行计算,而列表不能
x+width-> 这样会并一起,否则会有空隙
并列条形图-> 两个barh
plt.barh(y, width=y, height=0.3, align=\'center\', color=\'red\', tick_label=list(\'ABCDE\'), label=\'数据1\', hatch=\'\\\\\')
plt.barh(y=x+height, width=y1, height=0.3, align=\'center\', color=\'y\', label=\'数据2\', hatch=\'\\\\o\')
原理与上类似
plt.pie(x, explode=explode, labels=labels, autopct=\'%3.8f%%\', startangle=45, shadow=True, colors=colors,
radius=2, pctdistance=0.5, labeldistance=0.7)-> 饼状图
x-> 变量的量
explode-> 分块之间的间隙,在被赋予值之后,就是分裂式饼图
labels-> 变量名字
colors-> 变量分配的饼对应的颜色
autopct-> 变量占比精确位数
startangle-> 第一个变量开始分配饼时相当于x轴的角度(逆时针为正)
shadow-> 是否有重影效果
radius-> 半径
pctdistance-> 占比相对于原点的距离
labeldistance-> 变量名字相当于原点的距离
多个plt.pie(x, autopct=\'%3.2f%%\', radius=0.7,
pctdistance=0.75, colors=outer_c, textprops=dict(color=\'w\'),
wedgeprops=dict(width=0.3, edgecolor=\'w\'), shadow=True, explode=expe)-> 内嵌环形饼图(这里不推荐shadow和exeplode这两个参数,因为效果图不好看了)
textprops-> 占比文本配置
wedgeprops-> 分块的饼图配置,这里的width表示每块(扇形)的完整性
plt.polar(theta, r, color=\'yellow\', lw=2, marker=\'o\', mfc=\'red\', ms=22, ls=\'--)-> 极线图(极坐标)
theta-> 点的角度和对应个数
r-> 点到极点的距离
color-> 点的连线颜色
lw-> 连线的线宽
marker-> 点的样式
mfc-> 点的颜色
ms-> 点的半径
ls-> 连线风格(linestyle)
plt.scatter(x, y, s=numpy.power(10*a+20*b, 2), c=numpy.random.rand(100), cmap=mpl.cm.RdYlBu, marker=\'o\')-> 气泡图(散点图)
x-> x轴的值
y-> y轴的值
s-> 散点大小
c-> 散点标记的颜色
cmap-> 将浮点数映射成颜色的颜色映射表
marker-> 点的样式
plt.stem(x, y, linefmt=\'--\', markerfmt=\'*\', basefmt=\'-.\', bottom=0.)-> 棉棒图:表现出一堆变量相当于一个共同标准的离散形式
x-> 棉棒在x轴的位置
y-> 棉棒长度
linefmt-> 棉棒样式
markerfmt-> 棉棒点的样式
basefmt-> 共同标准的所在基线的样式
bottom-> 共同标准的所在基线
plt.boxplot(x, whis=whis, sym=\'o\', widths=width, labels=labels, patch_artist=True, notch=True, vert=False, showfliers=False, meanprops=dict(color=\'r\'))-> 箱线图
x-> 每组数据组成的列表(数组)
whis-> 四分位间距的倍数,用来确定相须包含数据的范围大小
sym-> 离群值的样式
widths-> 箱体的宽度
labels-> 每组数据的名字
notch-> 设置为True时,会使得箱体呈现V型凹陷
patch_artist-> 每组数据箱体颜色(设置为True时,可以把此函数视为一个对象bplot,并使用如下*a配色)
vert-> 设置为False时,显示的是水平方向的箱线图
showfliers-> False时,不显示离群值
showmeans-> 是否以点的形式显示均值
meanprops-> 均值点的配置
*a:
>>>for patch, color in zip(bplot[\'boxes\'], colors):
>>> patch.set_facecolor(color)
plt.errorbar(x, y, fmt=\'ro--\', yerr=0.2, xerr=0.02, ecolor=\'y\', elinewidth=4, ms=5, mfc=\'c\', mec=\'r\', capthick=1, capsize=2)-> 误差棒图
fmt-> 样式,我这里默认值意思是蓝色o形点用虚线连接
yerr-> y轴误差
xerr-> x轴误差
ecolor-> 误差棒颜色
elinewidth-> 误差棒粗细
ms-> 数据点大小
mfc-> 数据点颜色
mec-> 数据点边缘颜色
capthick-> 误差棒边界横杠厚度
capsize-> 误差棒边界横杠大小
plt.yticks(list(a1),list(\'ABCDE\'), rotation=-90)-> y轴变量名字定位以及变量名字,变量名字相当于tick_label参数的作用,rotation是标题的旋转角度
plt.xticks(list(a2),list(\'ABCDE\'), rotation=-90)-> x轴变量名字定位以及变量名字,变量名字相当于tick_label参数的作用,rotation是标题的旋转角度
list(a1)-> 轴变量名字定位(即原来的轴上值的列表)
list(\'ABCDE\')-> 替换原来的轴上值为xxx
plt.stackplot(x, y, y1, ……, labels=[\'func(x)\', \'func(a)\', \'func(t)\'], colors=[\'red\', \'green\', \'gray\'])-> 堆积折线图
labels-> 标签
colors-> 每个折线的颜色
plt.broken_barh(xranges=[(30, 100), (180, 50), (260, 70)], yrange=(20, 8), facecolor=[\'red\', \'red\', \'gray\'])-> 间断条形图
xranges-> 由每个部分组成的列表, 比如: [(2, 50), (30, 10)]表示有两个部分, 第一个从2开始,延长50距离
yrange-> 宽度, 比如: (20, 8)表示从20开始,宽8
facecolor(或者 fc 或者 facecolors)-> 可以是单个颜色,也可以是颜色序列,表示每部分的颜色
plt.step(x, y, color=\'y\', where=\'mid\', lw=5, ls=\'--\')-> 阶梯图
where-> 点根据参数的选取,决定图像
plt.hist(x=[scoresT, scoresT1], bins, color=[\'y\', \'b\'], rwidth=1, histtype=\'bar\', hatch=\'\\\\o\', stacked=True)-> 堆积(并列)直方图
x-> 堆积数据列表
bins-> 分类区间
colors-> 每个部分的颜色
stacked-> 是否堆积: True表示堆积图,False表示并列图
histtype->直方图类型,当值为stepfilled时,是阶梯型直方图
plt.table(cellText=[[\'班级{}\'.format(ti) for ti in range(1, 6)], stu],
cellLoc=\'center\',
colWidths=[0.3] * 5,
colLabels=labels,
colColours=colors,
rowLabels=[\'班级\', \'学生人数\'],
rowLoc=\'left\',
loc=\'bottom\')-> 表格
cellText-> 由每一行标签对应的的值组成的列表的列表
cellLoc-> 列标签的文字在单元格中的位置
colWidth-> 单元格宽度
colLabel-> 列标签
colColour-> 列标签单元格颜色
rowLabel-> 行标签组成的列表
rowLoc-> 行标签文字在单元格的位置
loc-> 表格整体的定位
plt.subplot(nrows, ncols, index, polar=True)-> 子区函数(相当于在一个画布上分出多个子画布)
*a:
>>>subplot参数:nrows, ncols, index只是代号,输入时还需用数字代替,写成nrows=5这样的形式会报错
nrows-> 分出画布的行数
ncols-> 分出画布的列数
index-> ,从上往下,左数第index个子画布(index索引从一开始)
polar-> 把该子画布当成极坐标图
*b:
>>>子区函数也可以写成plt.subplot(RCN, ……)形式,其中RCN是三个整数,分别代表分出画布的行数、分出画布的列数、左数第index个子画布(index索引从一开始)
*c:
>>>你可以直接对子区函数的画布进行操作,比如: plt.plot(……);可以将子区函数返回一个对象实例,你也可以对该对象实例进行操作,比如:object_.plot(……)
*d:
>>>当然,fig=plt.figure(……)返回一个fig实例,对这个实例使用add_subplot(……)/add_axes(……)等等等方法,同样也可以进行子画布创建
*e:
>>>在fig实例的参数polar设置为True,会将画布变成极坐标,此时fig实例·下使用add_subplot创建子画布,子画布可以使用bar函数创建极区图
plt.suptitle(t=\'all titles\', size=32, color=\'red\')-> 针对subplot图像的共同标题
t-> 标题名字
plt.margins(x=0.5, y=0.5)-> 设置数据范围的空白区域(x和y表示额外扩张倍数)
多个plt.subplot2grid将画布分为多个大小不同的子画布(subplot也提供了支持,但是这里不细讲)
例子:
plt.subplot2grid((3, 4), (0, 0), colspan=1)
plt.subplot2grid((3, 4), (0, 1), colspan=2)
plt.subplot2grid((3, 4), (1, 0), colspan=3)
plt.subplot2grid((3, 4), (2, 0), colspan=2)
plt.subplot2grid((3, 4), (2, 2), colspan=1)
plt.subplot2grid((3, 4), (0, 3), rowspan=3)
plt.subplot2grid(shape=(3, 4), loc=(0, 0), rowspan=2, colspan=3)
shape-> 画布形状(可以看作画布由x*y个一样的子画布)
loc-> 当前想要划分的起点
rowspan-> 从起点横坐标开始,划分rowspan长度
colspan-> 从起点纵坐标开始,划分colspan长度
plt.subplots(nrows=1, ncols=2, figsize=(8, 4), sharey=\'all\', sharex=\'all\')-> 同时创建画布,同时将画布分成nrows*cols个子画布
nrows-> 分出画布的行数
ncols-> 分出画布的列数
figsize-> 画布大小
sharex-> 子画布共享x轴刻度标准的模式
sharey-> 子画布共享y轴刻度标准的模式
*a:
>>>subplots函数返回两个值,第一个是原画布fig,第二个是被平分的子画布实例组成的数组ax,ax[1][2](或者a[1, 2])表示第二行左数第三个子画布
*b:
>>>针对画布实例fig, 可以使用fig.subplots_adjust(wspace=0, hspace=0)-> 设置子画布之间的空白区域大小
>>> hspace-> 纵向空白大小,设置0的时候,无空白
>>> wsapce-> 横向空白大小,设置0的时候,无空白
*c:
>>>想要使得一个子画布和另一个子画布具有相同的某一坐标轴刻度,可以使用subplot获得此画布,在参数选择时使用sharex或者sharey,将值设定为另一个子画布的实例就可以了,比如:
ax2 = plt.subplot(345, sharex=ax1)
plt.tick_params(axis=\'both\', width=5, colors=\'y\', length=12, labelsize=16, labelbottom=True,
labeltop=True, labelleft=True, labelright=True, left=True, right=True, bottom=True, top=True)-> 坐标轴刻度的相关操作
axis-> 选取操作的坐标轴
width-> 刻度线宽
colors-> 刻度线和刻度数字颜色
length-> 刻度线长
labelsize-> 刻度数字大小
labelbottom/labeltop/labelleft/;abelright-> 是否显示底部/上方/左侧/右侧的刻度数字
left/right/top/bottom-> 是否显示左侧/右侧/上方/底部的刻度
plt.subplots_adjust(wspace=0, hspace=0)-> 设置不同子画布之间的空白区域大小
hspace-> 纵向空白大小,设置0的时候,无空白
wsapce-> 横向空白大小,设置0的时候,无空白
plt.axes(arg=[0.5, 0., 0.3, 0.3], frameon=True, facecolor=\'w\', aspect=\'equal\')-> 坐标轴操作
arg-> 坐标轴所在画布的[left, bottom, width, height]
frameon-> 设置为True则显示坐标轴外框,反之
facecolor-> 坐标轴背景颜色
aspect-> 控制轴的纵横比。该参数可能使图像失真,即像素不是方形的
plt.axis([xmin. xmax, ymin, ymax)-> 重新定位坐标轴坐标范围
plt.setp(obj, visible=True)-> 设置
obj-> 设置的对象(可以是子画布,可以是子画布的标签,可以是子画布的标题,普通画布线宽等等等)
visible-> 刻度的显示或者隐藏
plt.gca()-> 获取当前画布(它返回的是一个Axes实例)
*a:
>>>Axes实例可以使用object.spines[\'direction\'].set_color(\'color\')
>>> direction-> 指定轴,有left/top/bottom/right四个值可以选择
>>> color-> 指定轴的颜色,设置为none时候,该方向坐标轴隐藏
*b:
>>>Axes实例可以使用object.spines[\'direction\'].set_positionr((\'data\', 0))改变坐标轴位置
plt.pcolor([x, y], edgecolors=\'k\', linewidths=5)-> 有助于创建带有非规则矩形网格的pseudo-color图(二维图)
[x, y]-> 二维数组
plt.colorbar(mappable=cs)-> 颜色标尺
mappable-> 标注对象
plt.contour(*args, cmap=mpl.cm.hot)-> 等高线
可变参数arg->
cmap-> 使用颜色映射表
plt.clabel(CS, fmt=\'%3.2f\', colors=\'r\', fontsize=16)-> 等值线标注
CS-> 要标注的线条轮廓的对象,即plt.contour(*args, cmap=mpl.cm.hot)返回的实例
fmt-> 标准数据精确值
plt.imshow(X, cmap=mpl.cm.hot)-> 展示图片
X-> 构成图片的BGR数组
cmap-> 使用颜色映射表,这里成为了图片显示的颜色
plt.savefig(road)-> 保存图片
road(这里只是代号)-> 存储的路径加图片名字.格式(支持的格式请通过查看print(help(plt.savefig)))
部分函数支持的统一关键字参数:
line(line只是代号,下同)-> 我们熟知的lw/ls/color/marker…………
font-> 我们熟知的lfamily/size/color/weight…………
如果不希望在函数里面指定某些属性的值,比如字体大小,背景颜色,又或者统一线粗细/颜色等等等,你可以通过以下方案:
plt.rcParams[key] = value
mpl.rcParams[key] = value
mpl.rc(……)
颜色的三种模式:
Hex模式-> #RRGGBB字符串
HTML/CSS模式-> 颜色英文名(部分可以缩写)
Decimal模式-> (R,G,B)元组,元组的每个值都属于0~1范围
子画布实例支持的方法:
plot/scatter/polar等等绘图函数
set_title-> 子画布标题
set_xlabel/set_ylabel-> 子画布坐标轴标签
set_ylim/set_xlim-> 子画布坐标轴限定范围
tick_params-> 相当于plt.tick_params的用法
set_x(y)ticks(被代替的x(y)轴刻度值组成的序列)+set_x(y)ticklabels(由代替的x(Y)轴刻度值的标签组成的序列)
>>>更多见在下面的关于<<<
………………………………………………………………………………
***************************************************************************************************************
* >>>关于<<<
*关于Line2D:
**a:
* >>>from matplotlib.lines import Line2D
* >>>print(dir(Line2D))
* >>>查看实例支持的方法/属性
*关于Axes:
**a:
* >>>from matplotlib.axes import Axes
* >>>print(dir(Axes))
* >>>查看实例支持的方法/属性
*关于Figure:画布对象
**a:
* >>>from atplotlib.figure import Figure
* >>>print(dir(Figure))
***************************************************************************************************************
\"\"\"
print(MyNote)
第342行:改成 >>>Axes实例可以使用object.spines[‘direction’].set_position((‘data’, 0))改变坐标轴位置,set_position那里拼错了
© 版权声明
THE END
暂无评论内容