Python机器学习-原理、算法及案例实战-(思政版)课件 第3章 Python常用机器学习库(3) Matplotlib_第1页
Python机器学习-原理、算法及案例实战-(思政版)课件 第3章 Python常用机器学习库(3) Matplotlib_第2页
Python机器学习-原理、算法及案例实战-(思政版)课件 第3章 Python常用机器学习库(3) Matplotlib_第3页
Python机器学习-原理、算法及案例实战-(思政版)课件 第3章 Python常用机器学习库(3) Matplotlib_第4页
Python机器学习-原理、算法及案例实战-(思政版)课件 第3章 Python常用机器学习库(3) Matplotlib_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python机器学习第3章Python常用机器学习库(3)

3.3Matplotlib

Matplotlib是Python的一个基本2D绘图库,它提供了很多参数,可以通过参数控制样式、属性等,生成跨平台的出版质量级别的图形。使用Matplotlib,能让复杂的工作变得容易,可以生成直方图、条形图、散点图、曲线图等。Matplotlib可用于Pythonscripts、Python、IPython、Jupyternotebook、web应用服务器等。1.图表的基本结构

从结构上,图表一般包含:画布、图表标题、绘图区、x轴(水平轴)和y轴(垂直轴)、图例等基本元素。Matplotlib模块中比较常用的是pyplot子模块,内部包含了绘制图形所需要的功能函数。pyplot模块的常用函数函数描述figure创建一个空白画布,可以指定画布的大小和像素add_subplot创建子图,可以指定子图的行数,列数和标号subplots建立一系列子图,返回fig,ax一个fig序列对象,建立一个axis序列title设置图表标题,可以指定标题的名称、颜色、字体等参数xlabel设置x轴名称,可以指定名称、颜色、字体等参数ylabel设置y轴名称,可以指定名称、颜色、字体等参数xlim指定x轴的刻度范围ylim指定y轴的刻度范围legend指定图例,及图例的大小、位置、标签savefig保存图形show显示图形2.matplotlib.pyplot

Matplotlib的图像都位于figure对象中,用plt.figure创建一个新的画布(空画布不能直接绘图)。如果不显式调用figure()函数,也会默认创建一个画布供子图使用。在画布上添加plot子图用add_subplot方法,add_subplot

函数的使用方法如下:<子图对象>=<figure对象>.add_subplot(nrows,ncols,index)参数含义:nrows:子图划分成的行数ncols:子图划分成的列数index:当前子图的序号,编号从1开始【例3.56】绘制简单的plot图表,结果如图3.3所示。importmatplotlib.pyplotaspltfig=plt.figure()ax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)#这里修改成(2,2,4)试试如果图表加载比较慢,可以尝试下面的方法:方法1、代码末尾使用show()函数。不使用show()函数时,图表在程序运行完成后显示。使用show()函数时,图表生成后立刻(通常在其后的程序操作执行之前)显示。方法2、如果是

JupyterNotebook环境,代码开头使用魔法指令“%matplotlibinline”。Matplotlib会默认打开一个独立的图形窗口(GUI窗口)来显示图像。这个魔法函数的作用是让Matplotlib绘制的图形直接嵌入并显示在代码单元格的输出区域中,而不是弹出一个新的窗口。示范:%matplotlibinlineimportmatplotlib.pyplotaspltfig=plt.figure()ax1=fig.add_subplot(2,2,1)plt.show()方法1方法2【例3.57】三个plot子图的绘制,结果如图3.4所示。fig=plt.figure()ax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)ax3=fig.add_subplot(2,2,3)【例3.58】六个plot的绘制,结果如图3.3所示。fig,axes=plt.subplots(2,3)axes【例3.59】在Subplot上绘制图形,结果如图3.6所示。fig=plt.figure()ax=fig.add_subplot(1,1,1)rect=plt.Rectangle((0.2,0.75),0.4,0.15,color='r',alpha=0.3)circ=plt.Circle((0.7,0.2),0.15,color='b',alpha=0.3)pgon=plt.Polygon([[0.15,0.15],[0.35,0.4],[0.2,0.6]],color='g',alpha=0.9)ax.add_patch(rect)ax.add_patch(circ)ax.add_patch(pgon)plt.show()3.plot函数

绘制曲线可以使用pyplot中的plot函数。绘制需要在画布上进行,如果没有显式创建的画布对象,plot()函数会在创建子图之前隐式地创建一个画布。plot()的基本格式如下:matplotlib.pyplot.plot(x,y,format_string,**kwargs)参数:x:x轴数据,列表或数组,可选。y:y轴数据,列表或数组。format_string:控制曲线的格式字符串,可选。**kwargs:第二组或更多组(x,y,format_string)参数。注:当绘制多条曲线时,各条曲线的x不能省略。

Color

Line_style

markerformat_string参数由三个子参数组成,分别是颜色字符color、风格字符line_style和标记字符组marker。可以组合设置,也可以单独设置。颜色字符说明颜色字符说明颜色字符说明‘r’红色‘g’绿色‘b’蓝色‘c’青绿色‘k’黑色‘y’黄色‘w’白色‘m’洋红色风格字符说明‘-‘实线‘–’破折线‘-.’点画线‘:’虚线标记字符说明标记字符说明标记字符说明‘.’点标记‘,’像素标记‘o’实心圈标记‘v’倒三角标记‘^’上三角标记‘>’右三角标记‘<‘左三角标记‘h’竖六边形标记‘H’横六边形标记‘+’十字标记‘x’x标记‘D’菱形标记‘d’瘦菱形标记‘|’垂直线标记‘*’星形标记‘p’实心五角标记’s’实心方形标记‘4’右花三角标记‘3’左花三角标记‘2’上花三角标记‘1’下花三角标记format_string参数由三个子参数组成,分别是颜色字符color、标记字符组marker、风格字符linestyle。可以组合设置,也可以单独设置。例如:importmatplotlib.pyplotaspltx=[1,2,3,4,5,6]y=[3,3,3,3,3,3]plt.plot(x,y,'ro-.')

#红色、破折线、实心圈标记plt.show()格式字符串可以使用:

plt.plot(x,y,’ro’)#红色、实心圈标记或者plt.plot(x,y,color='r')#红色,其他默认plt.plot(x,y,linestyle='-.')#破折线,其他默认plt.plot(x,y,marker='o')

#实心圈标记,其他默认【例3.60】绘制简单直线,结果如图3.7所示。importmatplotlib.pyplotaspltimportnumpyasnpa=np.arange(10)plt.xlabel('x')plt.ylabel('y')plt.plot(a,a*1.5,'b-',a,a*2.5,'r.-',a,a*3.5,'g--',a,a*4.5,'m-')plt.legend(['1.5x','2.5x','3.5x','4.5x'])plt.title('simplelines')plt.show()对于数学函数来说,绘制图形通常采用多数据点拟合的方式。例如可以罗列出一定数量的x值,再通过函数求出对应的y值,从而构成一列x、y数据对。【例3.61】绘制sin(x)函数图形。importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(-10,10,100)#列举出一百个数据点y=np.sin(x)

#计算出对应的yplt.plot(x,y,marker="o")4.其他类型的图表

在实际应用中,需要很多类型的图表。matplotlib.pyplot提供了丰富的绘图函数可供选择,包括:scatter(散点图)、bar(条形图)、pie(饼图)、hist(直方图)以及的plot(坐标图)。1)scatter()函数绘制散点图matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,*,data=None,**kwargs)2)hist()函数密度直方图:matplotlib.pyplot.hist(x,

bins=None,

range=None,

normed=False,

weights=None,

cumulative=False,

bottom=None,

histtype='bar',

align='mid',

orientation='vertical',

rwidth=None,

log=False,

color=None,

label=None,

stacked=False,

hold=None,

data=None,

**kwargs)3)bar()绘制条形图:matplotlib.pyplot.bar(left,

height,

width=0.8,

bottom=None,

hold=None,

data=None,

**kwargs)4)pie()绘制饼图:matplotlib.pyplot.pie(x,

explode=None,

labels=None,

colors=None,

autopct=None,

pctdistance=0.6,

shadow=False,

labeldistance=1.1,

startangle=None,

radius=None,

counterclock=True,

wedgeprops=None,

textprops=None,

center=(0,

0),

frame=False,

hold=None,

data=None)【例3.62】多个图表的绘制。首先使用subplots()函数确定要绘制图表的行、列数量,然后使用subplot()方法指定当前绘图所使用的子图。importnumpyasnpimportmatplotlib.pyplotaspltfig,axes=plt.subplots(2,1)plt.subplot(2,1,1)x=np.linspace(-10,10,100)#列举出一百个数据点y=np.sin(x)#计算出对应的yplt.plot(x,y,marker="o")补充语句,变成下方的图表参考代码如下:importnumpyasnpimportmatplotlib.pyplotaspltfig,axes=plt.subplots(2,1)plt.subplot(2,1,1)x=np.linspace(-10,10,100)#列举出一百个数据点y=np.sin(x)#计算出对应的yplt.plot(x,y,marker="o")plt.subplot(2,1,2)a=np.arange(10)plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)多子图综合练习【例3.63】绘制鸢尾花数据集的特征分布图,如图所示。importmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnpdata=pd.read_csv('iris.txt',sep=",",header=None)#读取鸢尾花数据文件df=pd.DataFrame(data)

#转化为dataframe数据类型df.columns=['LenSepal','LenPetal']

#花萼长度、花瓣长度两个特征plt.rcParams['font.sans-serif']=['SimHei']

#显示中文#===========图表1=============plt.figure(figsize=(10,10))plt.subplot(2,2,1)plt.xlabel("LenofPetal",fontsize=10)

#横轴标签plt.ylabel("LenofSepal",fontsize=10)

#纵轴标签plt.title("花瓣/花萼长度散点图")

#图表标题plt.scatter(df['LenPetal'],df['LenSepal'],c='red')#绘制两个特征数据#===========图表2=============plt.subplot(2,2,2)plt.title("花瓣长度直方图")plt.xlabel("LenofPetal",fontsize=10)#横轴标签plt.ylabel("count",fontsize=10)#纵轴标签plt.hist(df['LenPetal'],histtype='step')#绘制花瓣长度分布直方图#===========图表3=============x=np.arange(30)plt.subplot(2,2,3)plt.xlabel("Index",fontsize=10)

#横轴标签plt.ylabel("LenofPetal",fontsize=10)#横轴标签plt.title("花瓣长度条形图")plt.bar(x,height=df['LenPetal''],width=0.5)#绘制花瓣数据条形图#===========图表4=============#前10朵花看作A类,中间10朵花为B类,后10朵花为C类plt.subplot(2,2,4)explode=(0,0,0.1)labels=['A','B','C']legend_text=['A:1.3-1.7cm','B:3.3-4.9cm','C:4.5-6.6cm']plt.title("花瓣长度饼图")plt.pie([10,10,10],explode=explode,autopct='%1.1f%%',labels=labels)

#饼图plt.legend(legend_text,loc="upperleft",fontsize=10,bbox_to_anchor=(0.9,0.8))plt.show()5.Pandas内嵌的绘图函数Pandas中内嵌的绘图函数也是基于Matplotlib的。Series和DataFrame都包含生成各类图表的plot方法,默认情况下生成线型图。Pandas通过plot方法的kind参数来设置图表类型。DataFrame.plot(x=None,y=None,kind=‘line’,ax=None,subplots=False,sharex=None,sharey=False,layout=None,figsize=None,use_index=True,title=None,grid=None,legend=True,style=None,logx=False,logy=False,loglog=False,xticks=None,yticks=None,xlim=None,ylim=None,rot=None,fontsize=None,colormap=None,table=False,yerr=None,xerr=None,secondary_y=False,sort_columns=False,**kwds)主要参数——x:输入的x数据。y:输入的y数据。kind:图表类型。值图表类型‘line’默认值,线型图‘bar’垂直条形图‘barh’水平条形图‘hist’直方图‘box’箱体图‘scatter’散点图‘pie’饼图编程语言发展趋势图【例3.64】使用plotdata2.txt中的数据,绘制如图的编程语言发展趋势图。importpandasaspddata=pd.read_csv('plotdata2.txt',sep='',header=None)df=pd.DataFrame(data)df.columns=(['python','php','java'])ax=df.plot(title='Usernumberoflanguage')ax.set_xlabel('Month')

#设置x轴标签ax.set_ylabel('Numberofusers(Million)')#设置y轴标签注意:原数据没有标题,须设置header=None。否则第一行数据会被认定为标题,数据也会少一行。函数对比展示图表【例3.65】为Series数据绘制如图的图表。importpandasaspdimportnumpyasnpfrompandasimportSeries,DataFrameimportmatplotlib.pyplotasplt

#cumsum()函数累加数据s1=Series(np.random.randn(1000)).cumsum()s2=Series(np.random.randn(1000)).cumsum()#设置matplotlib支持负号显示plt.rcParams['axes.unicode_minus']=Falseplt.subplot(2,1,1)#第一个子图#kind参数修改图类型ax1=s1.plot(kind='line',label='S1',title='FiguresofSeries',style='--')#绘制第二个Seriess2.plot(ax=ax1,kind='line',label='S2')plt.ylabel('value')plt.legend(loc=2)#rightleft

plt.subplot(2,1,2)#第二个子图s1[0:10].plot(kind='bar',grid=True,label='S1')plt.xlabel('index')plt.ylabel('value')Matplotlib类的主要功能是绘制二维图表,不过也可以扩展到复杂图表。例如,可以在背景图上绘图、将Excel与3D图表结合等。这些功能可以使用Matplotlib的扩展工具包(Toolkits)来实现。工具包是针对某功能(如3D绘图)的特定函数的集合,常用的工具包有mplot3d、Basemap、GTK工具、Excel工具、Natgrid和AxesGrid等。3.绘制3D图

mpl_toolkits.mplot3d包提供了一些基本的3D绘图功能,其支持的图表类型包括散点图(scatter)、曲面图(surf)、线图(line)和网格图(mesh)。坐标轴是Axes3D,绘制时要为3个坐标轴提供数据。1)函数mpl_Axes3D.plot()可以绘制三维曲线图,其基本格式:plot(xs,ys,*zs,*zdir,*args,**kwargs)主要参数:xs,ys,*zs:顶点的x、y坐标;zs为Z值,绘制3D图时使用。如没有zs参数,则绘制2D图。Zdir:使用哪个方向作为z(取值‘x’、‘y’或‘z’)。高/低值3D散点图【例3.66】使用Axes3D.scatter函数绘制三维散点图。importnumpyasnpimportmatpl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论