目录
- 前言
- 准备
- 一.pyplot基础函数
- (一)后端资源管理
- (二)matplotlib.pyplot提供的基本画图函数
- 1.plt.title(str, fontsize, fontweight, fontstyle, verticalalignment, horizontalalignment, rotation, alpha, backgroundcolor, bbox)
- 2.plt.xlim(xmin, xmax),plt.ylim()
- 3.plt.xlabel(str, fontsize, fontweight, fontstyle, verticalalignment, horizontalalignment, rotation, alpha, backgroundcolor, bbox),plt.ylabel()
- 4.plt.grid(ls, color)
- 5.plt.axhline(y, xmin, xmax, c, ls, lw, label),plt.axhline(x, ymin, ymax, c, ls, lw, label)
- 6.plt.axhspan(ymin, ymax ,facecolor, alpha),plt.axvspan(xmin, xmax ,facecolor, alpha)
- 7.plt.xticks(),plt.yticks()
- 8.plt.annotate()
- 9.plt.bbox()
- 10.plt.text() / axes.text()
- 11.plt.legend()
- 12.plt.table()
- 二.Figure,Axes与Axis
- 图解
- (一)
- (二)向figure中添加axes
- 1.函数matplotlib.pyplot.subplot(*args, **kwargs) / matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)
- 2.函数matplotlib.pyplot.subplots(nrows, ncols, sharex, sharey, squeeze, subplot_kw, gridspec_kw=None, **fig_kw)
- 3.方法matplotlib.pyplot.figure().add_subplot(nrows, ncols, index, **kwargs)
- 4,方法matplotlib.pyplot.figure().add_axes(rect, projection, polar, sharex, sharey, **kwargs)
- 5.函数matplotlib.pyplot.subplot2grid(shape, loc, rowspan, colspan, fig, **kwargs)
- (三)函数figure的方法
- (四)AxesSubplot的方法
- 三.绘画类型
- (一)基础
- 1.折线图matplotlib.pyplot.plot(*args,**kwargs,label) / AxesSubplot.plot()
- 2.散点图matplotlib.pyplot.scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, **kwargs) / AxesSubplot.scatter()
- 3.柱状图matplotlib.pyplot.bar() / AxesSubplot.bar()
- 4.横向柱状图matplotlib.pyplot.barh() / AxesSubplot.barh()
- 4.茎状图(火柴图)matplotlib.pyplot.stem(x, y, linefmt, markerfmt, basefmt,bottom, label, orientation) / AxesSubplot.stem()
- 5.阶梯图(步阶图)(分段折线图)matplotlib.pyplot.step() / AxesSubplot.step()
- 6.填充图matplotlib.pyplot.fill_between() / AxesSubplot.fill_between()
- 7.堆叠图matplotlib.pyplot.stackplot() / AxesSubplot.stackplot()
- 8.极坐标图matplotlib.pyplot.polar() / AxesSubplot.polar()
- (二)数组和字段的绘图
- 1.显示图像matplotlib.pyplot.imshow(X,cmap,interpolation) / AxesSubplot.imshow()
- 2.matplotlib.pyplot.pcolormesh() / AxesSubplot.pcolormesh()
- 3.轮廓线(等高线)matplotlib.pyplot.contour(X, Y, Z, levels, cmap, **kwargs) / AxesSubplot.contour()
- 4.填充轮廓matplotlib.pyplot.contourf(X, Y, Z, levels, cmap, **kwargs) \ AxesSubplot.contourf()
- 5.倒钩图matplotlib.pyplot.barbs() \ AxesSubplot.barbs()
- 6.箭图matplotlib.pyplot.quiver() \ AxesSubplot.quiver()
- 7.流线图matplotlib.pyplot.streamplot() \ AxesSubplot.streamplot()
- 8.绘制X与Y的相关性matplotlib.pyplot.cohere() \ AxesSubplot.cohere()
- 9.功率谱密度图matplotlib.pyplot.psd() \ AxesSubplot.psd()
- 10.谱图matplotlib.pyplot.specgram() \ AxesSubplot.specgram()
- (三)统计分析绘图
- 1.直方图matplotlib.pyplot.hist() \ AxesSubplot.hist()
- 2.箱线图(箱型图)matplotlib.pyplot.boxplot() \ AxesSubplot.boxplot()
- 3.误差棒图matplotlib.pyplot.errorbar() \ AxesSubplot.errorbar()
- 4.小提琴图matplotlib.pyplot.violinplot() \ AxesSubplot.violinplot()
- 5.尖峰栅格图matplotlib.pyplot.eventplot() \ AxesSubplot.eventplot()
- 6.2D直方图matplotlib.pyplot.hist2d() \ AxesSubplot.hist2d()
- 7.matplotlib.pyplot.hexbin() \ AxesSubplot.hexbin()
- 8.饼状图matplotlib.pyplot.pie() \ AxesSubplot.pie()
- (四)非结构化坐标
- (五)3D
- 附录
Matplotlib,全称“Matlab plotting library”,是Python中的一个库,它是数字的-NumPy库的数学扩展,是Python中绘制二维和三维图表的数据可视化工具
Matplotlib的绘画接口分为三种:pyplot,面向当前图;axes,面向对象;Pylab,沿用 matlab 风格。
Matplotlib中的所有内容都按层次结构组织,层次结构的顶部是由matplotlib提供的matplotlb“状态机环境”——pyplot模块,仅用于图形创建等少数功能,用户显式创建并跟踪图形和轴对象。
层次结构的下一层是面向对象界面的第一层,在此级别,使用pyplot创建图形,通过这些图形可以创建一个或多个轴对象,使用基础函数将绘图元素(线条、图像、文本等)添加到当前图形中的当前轴。
格式调整 & 自定义设置
# 导入matplotlib库中的pyplotimport matplotlib as mplimport matplotlib.pyplot as plt# 解决中文乱码,可自行修改期望字体plt.rcParams['font.sans-serif']='SimHei'mpl.rcParams['font.family']=[Heiti SC]# 解决负号无法显示的问题plt.rcParams['axes.unicode_minus']=False# 将图表以矢量图格式显示,提高清晰度%config InlineBackend.figure_format = 'svg'# 提高dpi,以提高图片清晰度(dpi到三百以上,效果会明显变化)# 也可在设置figure时设置dpimpl.rcParams['figure.dpi']=300# 获取figure尺寸,默认6.4 inch,4.8 inchplt.rcParams.get('figure.figsize')# 全局设置输出图片大小的宽m和高nplt.rcParams['figure.figsize']=(m,n)# 获取字体大小,默认10.0 & 设置字体大小为kplt.rcParams.get('font.size')plt.rcParams['font.size']=k# 图画面板调整为白色rc={'axes.facecolor':'white','savefig.facecolor':'white'}mpl.rcParams.update(rc) #一次更新多个值# 允许输出数学公式mpl.rcParams['text.usetex']=True# Figure自动调整格式plt.rcParams['figure.constrained_layout.use']=True# 隐藏坐标系,二维三维均可plt.axis('off')# 三维坐标轴比例伸缩ax.get_proj = lambda: np.dot(Axes3D.get_proj(ax), np.diag([1, 1, 2, 2]))# 去除白边# bbox_inches = 'tight' 可去除部分白边# pad_inches 可正可负,减小时会放大图片在画布上的占比,以达到减少白边的效果savefig(bbox_inches = 'tight',pad_inches = -1.7)
(一)后端资源管理
1.内存或显示处理
1.1 matplotlib.pyplot.show()
显示当前figure对象
jupyter notebook中,不使用show()函数也可以正常运行,会显示图片的格式和图片;使用show()函数会只显示图片
可以认为大部分matplotlib函数都是在“暂存”的图片上进行处理,show()函数会把“暂存”的图片显示出去,然后就没有“暂存”图片了,故大部分操作应在show函数之前完成
1.2 matplotlib.pyplot.close()
关闭figure window对象,如果没有指定,则指当前figure window对象
关闭所有 figure windowsplt.close('all')
1.3 matplotlib.pyplot.get_fignums()
查询当前的所有图像编号
2.clear,get和set
2.1 matplotlib.pyplot.clf()
clf --> clean current figure --> 清除当前figure对象
清除当前 figure 中的活动的axes,但其他axes保持不变
2.2 matplotlib.pyplot.cla()
cla --> clean current axes --> 清除当前Axes对象
清除当前figure的所有axes,但是不关闭这个window,所以能继续复用于其他的plot。
创建太多的 figure 对象会引起警告
故推荐只创建一个 figure 对象,在画下一个图之前,使用 plt.clf() 清理掉 axes,这样可以复用 figure
2.3 matplotlib.pyplot.gcf()
gcf --> get current figure --> 获取当前figure对象
2.4 matplotlib.pyplot.gca()
gca --> get current axes --> 获取当前Axes对象
2.5 matplotlib.pyplot.scf(fig=fig)
scf --> set current figure --> 设置当前figure对象
2.6 matplotlib.pyplot.sca(ax=ax1)
sca --> set current axes --> 设置当前Axes对象
(二)matplotlib.pyplot提供的基本画图函数
1.plt.title(str, fontsize, fontweight, fontstyle, verticalalignment, horizontalalignment, rotation, alpha, backgroundcolor, bbox)
添加图形内容的
参数:
(1)fontsize:设置字体大小
- 可选参数:[‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
- 也可以是数字,缺省为12
(2)fontweight:设置字体粗细
- 可选参数:[‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
semibold:半粗体;bold:粗体
(3)fontstyle:设置字体类型
- 可选参数:[ ‘normal’, ‘italic’, ‘oblique’ ]
italic:斜体;oblique:倾斜
(4)verticalalignment:设置水平对齐方式
- 可选参数:[‘center’, ‘top’, ‘bottom’, ‘baseline’]
(5)horizontalalignment:设置垂直对齐方式
- 可选参数:[‘left’, ‘right’, ‘center’]
(6)rotation:旋转角度
- 可选参数为:[‘vertical’, ‘horizontal’]
- 也可以是数字
(7)alpha:透明度,参数值0至1之间
(8)backgroundcolor:背景颜色
(9)bbox:给增加外框,包含参数:
- boxstyle:方框外形
- facecolor:简写fc背景颜色
- edgecolor:简写ec,边框线条颜色
- edgewidth:边框线条大小
2.plt.xlim(xmin, xmax),plt.ylim()
设置 x,y 轴的数值显示范围
参数:
xmin,xmax:x轴上的最小值和最大值
3.plt.xlabel(str, fontsize, fontweight, fontstyle, verticalalignment, horizontalalignment, rotation, alpha, backgroundcolor, bbox),plt.ylabel()
设置x,y轴的标签文本
参数:
(1)fontsize:同上
(2)fontweight:同上
(3)fontstyle:同上
(4)verticalalignment:距离坐标轴的位置
- 可选参数:[‘center’, ‘top’, ‘bottom’, ‘baseline’]
(5)horizontalalignment:同上
(6)rotation:同上
(7)alpha:同上
(8)backgroundcolor:同上
(9)bbox:同上
4.plt.grid(ls, color)
绘制刻度线的辅助网格线
参数:
(1)ls:linestyle,线型
(2)color:颜色
5.plt.axhline(y, xmin, xmax, c, ls, lw, label),plt.axhline(x, ymin, ymax, c, ls, lw, label)
绘制平行于x轴额度水平参考线 / 绘制垂直于x轴额度竖直参考线
参数:
(1)y:水平参考线的出发点,缺省为0
(2)xmin:参考线的起始位置,缺省为0
(2)xmax:参考线的终止位置,缺省为1
(2)c:color,颜色
(3)ls:linestyle,线型
(4)lw:linewidth,线宽
(5)label:标签
6.plt.axhspan(ymin, ymax ,facecolor, alpha),plt.axvspan(xmin, xmax ,facecolor, alpha)
绘制平行于x轴的参考区域 / 绘制垂直于x轴的参考区域
参数:
(1)ymin:参考区域的起始位置
(2)ymax:参考区域的终止位置
(3)facecolor:参考区域的填充颜色
(4)alpha:参考区域填充颜色的透明度,[0~1]
7.plt.xticks(),plt.yticks()
获取或设置当前x轴或y轴刻度位置和标签。可以理解为设置xilim和ylim一样的效果,但可以指定范围和距离
8.plt.annotate()
添加图形内容细节的指向型注释文本
9.plt.bbox()
给增加外框
10.plt.text() / axes.text()
添加图形内容细节的无指向型注释文本(水印)
11.plt.legend()
标示不同图形的文本标签图例
12.plt.table()
向子图中添加表格
图解
- 一个Figure(图形)对象可以有任何数量的Axes(轴域,一套坐标轴)对象,但为了有用,至少应该有一个
- 一个Axes对象包含两个Axis(轴)对象(如果是三维就是三个)
Figure是最大的一个Aritist,它包括整幅图像的所有元素,一个Figure中的各个部分的artists元素如下图所示:
figure中所有的元素类型的artist的属性都可以用ax.set_XXX()和ax.get_XXX()来设置和获取。
(一)
1.元素Artist
有的绘图元素的基类,包含所有在figure中可以被看到的都是一个个artist。当一个figure被渲染的时候,所有的artists都被画在画布canvas上。
2.matplotlib.pyplot.figure(num, figsize, dpi, facecolor, edgecolor, linewidth, frameon)
创建一个图像,实例化Figure对象,是所有绘图元素的顶层容器,相当于给图提供了一个画布
参数:
(1)num:图像编号或名称
- 若为数字且存在对应id的 figure 对象,则激活对于id的figure对象
- 若为数字且对应id的figure对象不存在,则创建它并返回它
- 若为字符串,则将窗口设置为此字符串
- 缺省,一个新的 figure 对象将被创建,同时增加 figure 的计数数值,此数值被保存在 figure 对象的一个数字属性当中,从1开始
(2)figsize:元组,指定figure的宽和高,单位为英寸,缺省为rc figure.figsize,初始(6.4,4.8)
(3)dpi:指定绘图对象的分辨率,即每英寸多少个像素,缺省值为rc figure.dpi,初始72
1英寸等于2.54cm,A4纸是 21x30cm的纸张
(4)facecolor:背景颜色,缺省为’w’
(5)edgecolor:边框颜色,缺省为’w’
(6)linewidth:边缘的线宽
(7)frameon:是否显示边框,缺省为True
figure函数的图像有“颜色”参数,后面如savefig函数也有“颜色参数”,但存储图片时只按照savefig函数的颜色参数,缺省为默认黑白
#创建一个长为10,宽为6的画布import matplotlib.pyplot as pltfig=plt.figure(num='pic2-1.png',figsize = (10,6),dpi=90,facecolor = 'r',edgecolor = 'y')#没有子图的空图形
(二)向figure中添加axes
1.函数matplotlib.pyplot.subplot(*args, **kwargs) / matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)
此方法属于API绘图
先隐式的创建一个画布,然后再在画布上添加一个子图(如果需要多个子图,应反复调用,也可用for循环),该子图是通过均分画布得到的
子图:一个Axes对象,矩形区域,这个矩形是基于figure坐标系统定义的。
返回值:一个Axes对象,按照子图索引,按以行主顺序递增。
- 使用subplot() 方法创建子图将删除任何与其重叠的预先存在的子图,而不是共享边界。
- 当绘制的子图之间出现遮挡,subplot方法会绘制代码位置靠后的图形
参数:
(1)*args(位置参数):三个整数或一个三位数(自动解析成三个整数),用于分别对应 nrows,ncols,index
(1.1)nrows:在画布纵轴上分隔成几个子图,缺省为1
(1.2)ncols:在画布横轴上分隔成几个子图,缺省为1
(1.3)index:子图索引
- 若为整数,则表示从左往右,从上到下排列的第几个图像
- 若为元组(m,n),m,n均为整数,则表示开始位置和结束位置,形成一个包含若干子图的矩形区域,m,n在矩形的对角位置
- 缺省为1
举例:
plt.subplot(nrows=2, ncols=3, index=5)
=plt.subplot(2, 3, 5)
=plt.subplot(235)
(2)**kwargs(可选):一些涉及子图属性的关键字参数,此方法还接受返回AXIS基类的关键字参数
这个关键字参数和坐标系axes子类的关键词差不多
(2.1)title
(2.2)xlabel,ylabel
(2.3)xlim,ylim
(2.4)frame_on
(2.5)xticks,yticks
(2.6)facecolor
(2.7)projection(关键词参数):坐标系的投影类型
- 可能的值有:
{None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, ‘3d’, str} - polar:绘制极线图
- 3d:绘制3D图
- 缺省为None,表示笛卡尔直角坐标投影
- str 是自定义投影的名称。
- 不仅可以使用系统已设计好的投影,还可以自定义一个投影变换并使用,注册并调用自定义的投影名称即可。str即自定义投影的名称。
(2.8)polar(关键词参数):布尔值,表示是否启用’polar‘的投影类型*
- polar=True <–> projection=‘polar’
- 缺省为False
import numpy as npimport matplotlib.pyplot as plt# 设置数据x = np.arange(0, 3, 0.1)y1 = np.sin(np.pi*x)y2 = np.cos(np.pi*x)#创建图像plt.figure(num='pic2-1.png',figsize = (10,6), dpi=90,facecolor = 'lightgrey', edgecolor = 'azure',linewidth=10)# 绘制第一个子图ax1=plt.subplot(211) plt.plot(x, y1) # 绘制第二个子图ax2=plt.subplot(212) plt.plot(x, y2)#绘制plt.show()
似乎subplot函数与show函数生成图片,第一次运行只有格式,第二次运行才出图片;有subplot函数无show函数,第一次运行没有输出,第二次运行才出图片
2.函数matplotlib.pyplot.subplots(nrows, ncols, sharex, sharey, squeeze, subplot_kw, gridspec_kw=None, **fig_kw)
此方法为面向对象绘图
创建一张画布和一组子图
返回值:一个figure和axes对象的元组,axes对象是由若干个子图ax构成的数组
参数:
(1)nrows:在画布纵轴上分隔成几个子图,缺省为1
(2)ncols:在画布横轴上分隔成几个子图,缺省为1
(3)sharex / sharey:是否共x或y轴,缺省为False
- all / True:所有子图共享轴
- none / False:各自享有自己的轴
- row / col:按子图行或列共享x,y轴
(4)squeeze:在返回多个子图时,axes是否要压缩为1维数组,缺省为True
(5)subplot_kw:传入add_subplot函数中的参数,缺省为None
()gridspec_kw:传入网格参数,缺省为None
(6)**fig_kw:创建figure时的其他关键字,具体解释参考上面
(6.1)num
(6.2)figsize
(6.3)dpi
(6.4)facecolor
(6.5)edgecolor
(6.6)linewidth
(6.7)frameon
figure的参数加入subplots函数中,无顺序要求,不需要括号,正常逗号即可
import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 2*np.pi, 400)y = np.sin(x**2) #创建图形,并创建一个子图#面向对象语法fig, ax = plt.subplots()ax.plot(x, y)plt.show()
import numpy as npimport matplotlib.pyplot as pl# 设置数据x = np.arange(0, 3, 0.1)y1 = np.sin(np.pi*x)y2 = np.cos(np.pi*x)y3 = np.sin(2*np.pi*x)y4 = np.cos(2*np.pi*x)#创建figureplt.figure(figsize = (10,6), facecolor = 'r', edgecolor = 'y')#划分子图fig,axes=plt.subplots(2,2)ax1=axes[0,0]ax2=axes[0,1]ax3=axes[1,0]ax4=axes[1,1]# 绘制4个子图ax1.plot(x, y1)ax2.plot(x, y2)ax3.plot(x, y3)ax4.plot(x, y4)plt.show()
两者对比:
subplot | subplots |
import matplotlib.pyplot as plt | |
fig = plt.figure() | fig,axes=plt.subplots(2,3) |
ax1 = plt.subplot(231) | ax1=axes[0,0] |
ax2 = plt.subplot(232) | ax2=axes[0,1] |
ax3 = plt.subplot(233) | ax3=axes[0,2] |
ax4 = plt.subplot(234) | ax4=axes[1,0] |
ax5 = plt.subplot(235) | ax5=axes[1,1] |
ax6 = plt.subplot(236) | ax6=axes[1,2] |
似乎subplots函数有无show函数,都会直接输出格式和图片
3.方法matplotlib.pyplot.figure().add_subplot(nrows, ncols, index, **kwargs)
此方法为面向对象绘图
参数:
(1)nrows:在画布纵轴上分隔成几个子图,同上
(2)ncols:在画布横轴上分隔成几个子图,同上
(3)index:子图索引,同上
(4)**kwargs:一些涉及子图属性的关键字参数,同上
当绘制的子图之间出现遮挡,subplot方法会绘制代码位置靠后的图形,而add_subplot则会绘制所有图形,只是出现遮挡
4,方法matplotlib.pyplot.figure().add_axes(rect, projection, polar, sharex, sharey, **kwargs)
参数:
(1)rect(位置参数):一个4元素的浮点数列表,[left, bottom, width, height]
其定义了要添加到figure中的矩形子区域的:左下角坐标(x, y)、宽度、高度
每个元素的值是实际长度与figure对应长度的分数比值,不大于1;即将figure的宽、高作为1个单位
(2)projection(可选)(关键词参数):坐标系的投影类型,同上
(3)polar(可选)(关键词参数):表示是否启用’polar‘的投影类型,同上
(4)sharex, sharey(可选)(关键词参数):是否共x或y轴,同上
5.函数matplotlib.pyplot.subplot2grid(shape, loc, rowspan, colspan, fig, **kwargs)
参数:
(1)shape:元组,网格划分的形状
(2)loc:元组,元素数和shape一致,表示子图划分的起始位置
(3)rowspan:子图占用多少行,缺省为1
(4)colspan:子图占用多少列,缺省为1
(5)fig:缺省为None
(6)**kwargs
import matplotlib.pyplot as pltfig = plt.figure()fig.suptitle('Figure')axes1 = plt.subplot2grid((3,3), (0,0), colspan=3)axes2 = plt.subplot2grid((3,3), (1,0), colspan=2)axes3 = plt.subplot2grid((3,3), (1,2))axes4 = plt.subplot2grid((3,3), (2,0))axes5 = plt.subplot2grid((3,3), (2,1), colspan=2)plt.show()
(三)函数figure的方法
1.matplotlib.pyplot.figure().suptitle()
2.matplotlib.pyplot.figure().supxlabel()
3.matplotlib.pyplot.figure().supylabel()
(四)AxesSubplot的方法
1.
AxesSubplot.set_title(),AxesSubplot.set_xlabel(),AxesSubplot.set_ylabel(),AxesSubplot.set_xlim(),AxesSubplot.set_ylim(),AxesSubplot.remove(),AxesSubplot.set_facecolor,AxesSubplot.patch.set_alpha(),AxesSubplot.text,AxesSubplot.legend(),AxesSubplot.grid(),AxesSubplot.lines.set_label()
(一)基础
1.折线图matplotlib.pyplot.plot(*args,**kwargs,label) / AxesSubplot.plot()
用于画图,可以绘制点和折线线
参数:
(1)**args:允许传入多对x,y和format_string
plot(x1, y1, ‘str1’, x2, y2, ‘str2’)
(1.1)x(可选):X轴数据,可为(元组),[列表],numpy.array,pandas.Series,缺省为range(len(y))
(1.2)y:Y轴数据,可为(元组),[列表],numpy.array,pandas.Series
x,y可以为pd.DataFrame?
(1.3)format_string(可选):控制曲线的格式字符串
(1.3.1)c:color,颜色,详见文底《颜色表》
(1.3.2)ls:linestyle,线型
‘:’:点线;‘-.’:点画线;‘–’:短划线;‘-’:实线;'‘和’ ':无线条
(1.3.3)lw:linewidth,线宽
(1.3.4)marker:标记
‘.’:点标记;‘,’:点标记;‘o’:实心圈标记;‘v’:倒三角标记;‘^’:上三角标记;‘>’:右三角标记;‘<’:左三角标记;‘h’:竖六边形标记;‘H’:横六边形标记;‘+’:十字标记;‘+’:十字标记;‘1’:下花三角标记;‘2’:上花三角标记;‘3’:左花三角标记;‘4’:右花三角标记;’s’:实心方形标记;‘p’:实心五角标记;‘*’:星形标记;‘d’:瘦菱形标记;‘D’:菱形标记;‘|’:竖直线标记;‘_’:水平线标记
(1.3.5)markersize:标记大小
(1.3.6)markerfacecolor:标记填充色
(1.3.7)markeredgewidth:标记边缘宽度
(1.3.8)markeredgecolor:标记边缘色
以上可以使用命名参数(color=‘r’,linestyle=‘-’,marker=‘o’),也可以以字符串形式(‘r’+‘-’+‘o’)(‘r-o’)
(1.3.9)alpha
(2)**kwargs:允许传入多个可选的关键字参数
(3)label:标签,一个plot中只能有一个label,缺省为None
import matplotlib.pyplot as plt#一个图片里绘制一个图像a1=[3,4,5] # [列表]a2=[2,3,2] # x,y元素个数N应相同plt.plot(a1,a2)plt.show()
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#一个图片里绘制两个图像x=(3,4,5) # (元组)y1=np.array([3,4,3]) # np.arrayy2=pd.Series([4,5,4]) # pd.Seriesplt.plot(x,y1)plt.plot(y2) # x可省略,默认[0,1..,N-1]递增,N是y内的元素数plt.show() # plt.show()前可加多个plt.plot(),画在同一张图上
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#一个图片里绘制两个图像plt.plot(x,y1,x,y2) # 此时x不可省略plt.show()
import numpy as npimport matplotlib.pyplot as plt#二维数组b1=np.array([[0,1,2], [3,4,5], [6,7,8]])b2=np.array([[2,3,5], [8,3,1], [4,5,9]])#b1的第一列为[0,3,6],b2的第一列为[2,8,4],从而构成三个点一段折线,以此类推plt.plot(b1,b2)plt.show()
import numpy as npimport matplotlib.pyplot as plt#格式控制字符串b1=np.array([[0,1,2], [3,4,5], [6,7,8]])b2=np.array([[1,3,4], [7,1,8], [9,7,6]])plt.plot(b1,b2,"ob:") #"b"为蓝色, "o"为圆点, ":"为点线plt.show()
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt #颜色与线型color=['b','g','r','c','m','y','k','w']linestyle=['-','--','-.',':']##格式控制字符串dic1=[[0,1,2],[3,4,5]]x=pd.DataFrame(dic1)dic2=[[2,3,2],[3,4,3],[4,5,4],[5,6,5]]y=pd.DataFrame(dic2)# 循环输出所有"颜色"与"线型"for i in range(2): for j in range(4): plt.plot(x.loc[i],y.loc[j],color[i*4+j]+linestyle[j]) plt.show()#如果只控制"颜色", 格式控制字符串还可以输入英文全称, 如"red"#也可以是十六进制RGB字符串, 如"#FF0000"
import matplotlib.pyplot as plt#关键字=参数y=[2,3,2] plt.plot(y,color="blue",linewidth=20,marker="o",markersize=50, markerfacecolor="red",markeredgewidth=6,markeredgecolor="grey")plt.show()
2.散点图matplotlib.pyplot.scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, **kwargs) / AxesSubplot.scatter()
参数:
(1)x,y:表示的是shape大小为(n,)的数组,也就是我们即将绘制散点图的数据点,输入数据。x轴数据和y轴数据
(2)s(可选):表示散点大小,是一个标量或者是一个shape大小为(n,)的数组,缺省为20
(3)c(可选):color,表示的是散点色彩或颜色序列。但是c不应该是一个单一的RGB数字,也不应该是一个RGBA的序列,因为不便区分。c可以是一个RGB或RGBA二维行数组。缺省为’b’,表示蓝色
(4)marker(可选):MarkerStyle,表示的是散点形状,标记的样式,缺省为’o’
(5)cmap(可选):Colormap,标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap,缺省为None
cmap = plt.cm.Spectral
给label为1的点一种颜色,给label为0的点另一种颜色
cmap=plt.get_cmap(‘rainbow’))
设置颜色映射
(6)norm:Normalize,数据亮度在0-1之间,也是只有c是一个浮点数的数组的时候才使用,缺省为None
(7)vmin,vmax(可选):标量,当norm存在的时候忽略。用来进行亮度数据的归一化,缺省为None
(8)alpha(可选):标量,0-1之间,散点的透明度,缺省为None
(9)linewidths:标记点的长度,散点边框的宽度,缺省为None
(10)edgecolors:设置散点边框的颜色,缺省为None
3.柱状图matplotlib.pyplot.bar() / AxesSubplot.bar()
4.横向柱状图matplotlib.pyplot.barh() / AxesSubplot.barh()
4.茎状图(火柴图)matplotlib.pyplot.stem(x, y, linefmt, markerfmt, basefmt,bottom, label, orientation) / AxesSubplot.stem()
参数:
(1)x(可选):数组,每根火柴的x轴位置,缺省为arange(len(y))
(2)y:数组,火柴头部的y坐标
(3)linefmt(可选):字符串类型,定义垂直线条属性,包括线条颜色和线条类型,缺省为None
(4)markerfmt(可选):字符串类型,定义火柴头部标记属性,包括线条颜色和线条类型
- 可选颜色:C0-C9,八种基础颜色
- 可选线性:参考上面
- 缺省为’C0o’
(5)basefmt(可选):字符串类型,定义基线属性,缺省为‘C3-’,经典模式下为‘C2-’
(6)bottom(可选):浮点型,基线所在的y轴位置,缺省为0
(7)label(可选):字符串类型,标签,缺省为None
(8)orientation(可选):如‘y’
2D图使用此参数似乎会引起警告
5.阶梯图(步阶图)(分段折线图)matplotlib.pyplot.step() / AxesSubplot.step()
6.填充图matplotlib.pyplot.fill_between() / AxesSubplot.fill_between()
7.堆叠图matplotlib.pyplot.stackplot() / AxesSubplot.stackplot()
8.极坐标图matplotlib.pyplot.polar() / AxesSubplot.polar()
(二)数组和字段的绘图
1.显示图像matplotlib.pyplot.imshow(X,cmap,interpolation) / AxesSubplot.imshow()
热图(heatmap)是数据分析的常用方法,通过色差、亮度来展示数据的差异、易于理解。
参数:
(1)x:图像数据
- (M, N):带有标量数据的图像,灰度图。数据可视化使用色彩图。
- (M,N,3):具有RGB值的图像(float或uint8)。
- (M,N,4):具有RGBA值的图像(float或uint8),即包括透明度。
- 前两个维度(M,N)定义了行和列图片,即图片的高和宽
- RGB(A)值应该在浮点数[0,1]的范围内,或者整数[0,255]。超出范围的值将被剪切为这些界限。
(2)cmap:将标量数据映射到色彩图,缺省为None
cmap=‘颜色’;cmap=plt.get_cmap(‘颜色’)
(3)interpolation:缺省为None
2.matplotlib.pyplot.pcolormesh() / AxesSubplot.pcolormesh()
3.轮廓线(等高线)matplotlib.pyplot.contour(X, Y, Z, levels, cmap, **kwargs) / AxesSubplot.contour()
参数:
(1)X,Y(可选):数组,Z中值的坐标
- 均为二维,形状与Z相同
- 均为一维,此时len(X)==M是Z中的列数,len(Y)==N是Z中的行数
- 缺省为整数索引,即X = range(M), Y = range(N)
(2)Z:类似数组(N,M),绘制轮廓的高度值
(3)levels(可选):int或数组,确定等高线/区域的数量和位置
- 若为整数n,则使用n个数据间隔,在图中展现n条轮廓线
- 若为数组[],则在指定标高绘制轮廓线,这些值必须按递增顺序排列
- 缺省为画出若干条曲线Z=c,c为随机数字
(4)cmap:缺省为None
4.填充轮廓matplotlib.pyplot.contourf(X, Y, Z, levels, cmap, **kwargs) \ AxesSubplot.contourf()
基本同上
5.倒钩图matplotlib.pyplot.barbs() \ AxesSubplot.barbs()
6.箭图matplotlib.pyplot.quiver() \ AxesSubplot.quiver()
7.流线图matplotlib.pyplot.streamplot() \ AxesSubplot.streamplot()
8.绘制X与Y的相关性matplotlib.pyplot.cohere() \ AxesSubplot.cohere()
9.功率谱密度图matplotlib.pyplot.psd() \ AxesSubplot.psd()
10.谱图matplotlib.pyplot.specgram() \ AxesSubplot.specgram()
(三)统计分析绘图
1.直方图matplotlib.pyplot.hist() \ AxesSubplot.hist()
2.箱线图(箱型图)matplotlib.pyplot.boxplot() \ AxesSubplot.boxplot()
3.误差棒图matplotlib.pyplot.errorbar() \ AxesSubplot.errorbar()
4.小提琴图matplotlib.pyplot.violinplot() \ AxesSubplot.violinplot()
5.尖峰栅格图matplotlib.pyplot.eventplot() \ AxesSubplot.eventplot()
6.2D直方图matplotlib.pyplot.hist2d() \ AxesSubplot.hist2d()
7.matplotlib.pyplot.hexbin() \ AxesSubplot.hexbin()
8.饼状图matplotlib.pyplot.pie() \ AxesSubplot.pie()
(四)非结构化坐标
1.matplotlib.pyplot.tricontour() \ AxesSubplot.tricontour()
2.matplotlib.pyplot.tricontourf() \ AxesSubplot.tricontourf()
3.matplotlib.pyplot.tripcolor() \ AxesSubplot.tripcolor()
4.matplotlib.pyplot.triplot() \ AxesSubplot.triplot()
(五)3D
1. AxesSubplot.plot(x, y, z)
2. AxesSubplot.scatter(x, y, z)
3. AxesSubplot.plot_surface(x, y, z, rstride, cstride, cmap)
参数:
(1)x,y,z:
(2)rstride:row,指定行的跨度,缺省为1
(3)cstride:column,指定列的跨度,缺省为1
(4)color:表示的是散点色彩或颜色序列,同上
(5)cmap:标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用,同上
(6)alpha(可选):标量,0-1之间,散点的透明度,缺省为None
4.
Triangular 3D surfaces,3D voxel / volumetric plot,3D wireframe plot
1.颜色表
2.标记marker
符号 | 标记 | 符号 | 标记 | 符号 | 标记 | 符号 | 标记 |
---|---|---|---|---|---|---|---|
. | 点 | , | 像素 | o | 实心圈 | v | 倒三角 |
^ | 正三角 | < | 左三角 | > | 右三角 | 1 | 下花三角 |
2 | 上花三角 | 3 | 左花三角 | 4 | 右花三角 | 8 | 正八面体 |
s | 实心方形 | p | 实心五角 | P | 实心十字 | + | 十字 |
x | 叉形 | X | 实心叉 | d | 瘦菱形 | D | 菱形 |
h | 竖六边形 | H | 横六边形 | | | 竖直线 | _ | 水平线 |
* | 五角星 |
以上未完待更新,仅供个人学习,侵权联系删除,如有错误或不足之处可指出,以便改进。
来源地址:https://blog.csdn.net/abc31431415926/article/details/127910035