Python的matplotlib库入门学习——超详细笔记分享

Python的matplotlib库入门学习——超详细笔记分享

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)
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)
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
喜欢就支持一下吧
点赞9 分享
We’d better struggle for the future rather than regret for the past.
如果后悔过去,不如奋斗将来
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
聚合模块
建站技术
技术分享