大数据可视化 课件 项目1 Matplotlib应用_第1页
大数据可视化 课件 项目1 Matplotlib应用_第2页
大数据可视化 课件 项目1 Matplotlib应用_第3页
大数据可视化 课件 项目1 Matplotlib应用_第4页
大数据可视化 课件 项目1 Matplotlib应用_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

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

文档简介

—Matplotlib应用项目一:目录CONTENTS绘制特殊图像思考与练习项目概述学习目标Matplotlib入门绘制基础图形绘制复合图形1项目概述Matplotlib是Python中最受欢迎的数据可视化软件包之一。本项目介绍如何使用Matplotlib绘图库,将难以理解的数据进行可视化,绘制各种静态、动态、交互式图表,如折线图、散点图、饼图等,从而实现直观展现数据的目的。项目概述本项目融合Matplotlib基础知识、综合绘图于一体,着重介绍Matplotlib常用图表的绘制方法,通过综合应用对所学内容进行练习,熟练掌握本项目内容。本项目学习内容分三方面展开Matplotlib简介1Matplotlib入门2Matplotlib常用图表绘制3项目概述2学习目标

学习目标通过本项目的学习由浅入深地了解Matplotlib,掌握Matplotlib入门使用、Matplotlib常用图表绘制方法等。培养学生具备Matplotlib大数据可视化的基本技能,熟练掌握各种布局、配色、坐标轴设置等,绘制可视化图表,更直观地理解数据背后的含义。3Matplotlib入门Matplotlib是Python中应用极其广泛的绘图库。Matplotlib功能强大,主流的图表格式在Matplotlib中都能找到,想要更深入地了解Matplotlib,可经常查阅官方文档,官方网址为:/。本任务对Matplotlib简介、安装入门、基本用法等进行讲解与实践,初步了解Matplotlib绘图库,通过实践认知Matplotlib强大的绘图能力,借助图形化的数据表现方式更好地认知数据之间的特点和关系。完成本任务需要掌握Matplotlib的安装及绘图模块的入门操作,以及折线图、柱状图、直方图、堆叠条形图、面积图、散点图等图形绘制方法,掌握绘图中主要函数的功能和输入输出参数,深入理解Matplotlib绘图模块的绘图步骤与原理,并依据练习题将所学知识巩固应用。任务描述Matplotlib最初是由JohnD.Hunter在2003年开发的一个2D绘图库,其设计灵活、易于使用,因此在学术界和工业界广受欢迎。知识与技能——Matplotlib起源目前,Matplotlib迅速成为Python数据科学生态系统中最流行的绘图工具之一。以其优雅的API设计和强大的数据可视化功能而闻名,在各个领域中得到广泛应用,包括科学研究、金融分析、数据挖掘、机器学习等等。知识与技能——Matplotlib特点(1)Matplotlib是一个功能强大、易于使用和高度灵活的绘图工具,Matplotlib具有丰富的功能、高度灵活性、易于使用以及广泛的可移植性和开源性等特点,使其成为Python数据科学生态系统中最受欢迎和常用的绘图工具之一。1.广泛支持Matplotlib支持多种不同类型的图形,包括线图、柱状图、散点图、直方图、等高线图等。此外,它也可以支持2D和3D图形绘制。3.易于使用Matplotlib拥有简单的API接口,使得用户可以轻松绘制高质量的图形。该工具还提供了大量的样式和模板,供用户选择使用。主要特点(六点)2.高度灵活Matplotlib提供了丰富的自定义选项,以便用户可以完全控制图形的制作方式。这些选项包括调整刻度标签、轴限制、图例属性、颜色色带等。知识与技能——Matplotlib特点(2)4.交互式控制Matplotlib可以与各种交互式GUI平台集成,例如JupyterNotebook,IPythonShell和Python编程环境,它还支持鼠标事件和键盘事件等交互式功能。5.可移植性由于Matplotlib是基于Python编写的,因此它非常容易移植到不同的操作系统和硬件平台上。6.开源可扩展Matplotlib的源代码公开,开放给任何人免费使用和修改。因此,它已经成为Python数据科学生态系统中的不可或缺的一部分,并可通过众多可扩展包转换和扩展功能。虽然Matplotlib是一个功能强大、灵活易用的绘图工具,但也存在一些缺点。默认样式较为简单

Matplotlib的默认样式对于一些用户来说可能显得过于简单,需要进行个性化的定制,这可能需要一些编程经验和时间。01生成的图形可能较为笨重由于Matplotlib图形生成时的复杂计算,生成的图形可能会较为笨重,尤其是对于复杂的图形或大量数据的情况。02不太适合比较复杂的交互式绘图尽管Matplotlib提供了交互式功能,但是相对于一些专门为交互式数据可视化设计的工具(如D3.js或Plotly等),它的交互性可能相对较弱。03知识与技能——Matplotlib不足知识与技能——Matplotlib基础函数Matplotlib提供了多种绘图方式:如散点图、柱状图、折线图、热力图等。除了以上几种常见的图表,Matplotlib还支持多种其他类型的图表,如3D图、等高线图、极坐标图等。

一般在学习Matplotlib库时,都是先在一个平面坐标系内画图形,再去学其它类型图形的绘制。Matplotlib库在平面坐标系内画图时,有很多相关的函数:plt.title()显示图形的标题(Title)plt.legend()显示图例(Legend)plt.grid()设置图形的网格(Grid)plt.figure()设置图形对象(Figure)plt.gca()返回子图对象(Axes)plt.ylabel()设置Y坐标轴plt.xlabel()设置X坐标轴plt.ylabel()设置Y轴(Yaxislabel)plt.xlabel()设置X轴(Xaxislabel)plt.xticks()和plt.yticks()分别设置X轴和Y轴的刻度知识与技能——Matplotlib基础函数知识与技能——plot函数简介(1)Python中的plt.plot()函数是matplotlib.pyplot模块下的一个函数,用于画图它可以绘制点和线,并且对其样式进行控制。可以绘制出多种风格的图案,如下所示:plt.plot(x,y,format_string,**kwargs)X轴数据,列表或数组,可选。Y轴数据,列表或数组。format_string:控制曲线的格式字符串,可选。**kwargs:第二组或更多(x,y,format_string),可画多条曲线。对于format_string由颜色字符、风格字符、标记字符组成。颜色字符举例如下:‘b’表示蓝色、‘c’表示青绿色、‘g’表示绿色、‘k’表示黑色、‘m’表示洋红色、‘r’表示红色、‘w’表示白色、‘y’表示黄色风格字符举例如下:‘‐’表示实线、‘‐‐’表示破折线、‘‐.’表示点划线、‘:’表示虚线标记字符举例如下:‘.’表示点标记、‘,’表示像素标记(极小点)、‘o’表示实心圈标记、‘v’表示倒三角标记、‘^’表示上三角标记、‘>’表示右三角标记、‘<’表示左三角标记。知识与技能——plot函数简介(2)对于**kwargs,这是一大堆可选内容,可以在里面指定很多内容,如“label”指定线条的标签,“linewidth”指定线条的宽度,color指定颜色,label线条的标签,linestyle表示线条的风格,linewidth表示线条的宽度。知识与技能——创建画布与创建子图函数名称函数作用plt.figure(figsize,facecolor)创建一个空白画布,figsize参数可以指定画布大小,像素,单位为英寸。figure.add_subplot()创建并选中子图,可以指定子图的行数,列数,与选中图片编号。知识与技能——添加画布内容函数名称函数作用plt.plot(x,y,ls,lw,lable,color)根据x,y数据绘制直线、曲线、标记点,ls为线型linestyle,lw为线宽linewidth,lable为标签文本内容,color为颜色。plt.scatter(x,y,c,marker,label,color)绘制散点图:x、y为相同长度的序列,c为单个颜色字符或颜色序列,marker为标记的样式,默认的是'o',label为标签文本内容,color为颜色plt.bar(x,height,width,bottom)绘制条形图plt.pie(x,explode,labels,autopct,shadow=False,startangle)绘制饼图plt.title(string)在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数。plt.xlabel(string)在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数。plt.ylabel(string)在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数。plt.xlim(xmin,xmax)指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。plt.ylim(ymin,ymax)指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。plt.xticks()指定x轴刻度的数目与取值。plt.yticks()指定y轴刻度的数目与取值。plt.legend()指定当前图形的图例,可以指定图例的大小、位置、标签。知识与技能——保存与展示图形函数名称函数作用plt.savafig()保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数。plt.show()在本机显示图形。知识与技能——线条颜色(color)的设置线的颜色颜色'b'蓝色'g'绿色'r'红色'c'青色'm'品红'y'黄色'k'黑'w'白色知识与技能——线条标记(marker)的设置线的标记描述'.'点标记','像素标记'o'圆圈标记's'方形标记'*'星形标记'+'加号标记'x'x标记知识与技能——线条类型(line)的设置线的类型描述'-'实线样式'--'虚线样式'-.'破折号-点线样式任务实施——1.Matplotlib基本用法第一步:Matplotlib安装打开命令提示符,输入pipinstallmatplotlib回车即可安装。这里安装的是3.6.2版本,安装Matplotlib如下图所示。任务实施——1.Matplotlib基本用法第二步:测试导入Matplotlib成功所示,在Python中导入Matplotlib模块(importmatplotlib),没有报错说明安装成功。

任务实施——2.Matplotlibplot函数折线图绘制方法:

绘制一个线段颜色为红色、菱形点标记,破折线连接的折线图,如图13所有a到z开头的单词数量折线图所示。也可以将代码属性进行简化,用'rD--'来表示,如代码注释部分。第一步:导包和定义数据#导入Matplotlib库

importmatplotlib.pyplotaspltletter=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

enword=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]

第二步:绘制折线图#绘制折线图

plt.plot(letter,enword,color='r',marker='D',linestyle='--',linewidth=1,markersize=2)

#或者

#plt.plot(letter,enword,'rD--',linewidth=1,markersize=2)

plt.show()#展示任务实施——2.Matplotlibplot函数条形图绘制方法:在上述代码的基础上改用bar()绘制条形图,如图1-4所有a到z开头的单词数量条形图所示。该图会在接下来的学习中频繁用到。#绘制条形图

colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度plt.show()任务实施——2.Matplotlibplot函数Matplotlib中的画布设置主要用到了figure()函数,用来设置画布的宽高、分辨率、背景颜色等。尝试将画布颜色设置为grey(灰色),效果如下图画布设置所示。#figsize控制画布的宽和高,dpi分辨率,facecolor设置画布背景颜色

plt.figure(figsize=(8,6),dpi=90,facecolor='grey')#绘制条形图

colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度plt.show()#展示任务实施——3.Matplotlib画布设置任务实施——4.Matplotlib图表标题设置Matplotlib图表标题设置使用title()函数,参数如下:label表示标题内容;font_dict是一个字典,用来设置字体、字号、颜色等;loc表示标题的对齐,包括left,right和center,默认为center;pad表示标题与图表顶部的距离,默认为None。colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度

#fontdict可以单独定义,也可以直接在函数中定义

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.show()#展示任务实施——5.Matplotlib坐标轴设置上一操作的图表中所使用的坐标轴是系统默认设置的,接下来尝试使用xlabel()和ylabel()修改坐标轴的标签,使用xticks()和yticks()修改坐标数字,效果如下图坐标轴设置所示。第一步:设置X、Y轴标题plt.xlabel('letter',fontsize=14)

plt.ylabel('number',fontsize=14)

#修改坐标数字的字号

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)任务实施——5.Matplotlib坐标轴设置此外,还可以通过改变坐标轴的刻度范围来调整优化布局,如图1-8调整y轴刻度范围、图1-9设置y轴为对数轴所示。第二步:修改Y轴刻度范围#将y轴刻度范围调整到(0,1200)

plt.ylim(0,1200)任务实施——5.Matplotlib坐标轴设置第三步:设置Y轴为对数轴#设置y轴为对数轴

plt.yscale('log')

#将y轴刻度范围调整到(0,1200)

plt.ylim(0,1200)plt.show()#展示取loc='best',图例会自动放置在坐标轴平面中数据图表最少的位置,也就是最合适的位置上(一般图例都取该值);取loc='XXX',这里的XXX有九种表示方法。将坐标轴平面分为九部分:upperleft(顶部左侧),uppercenter(顶部中心),upperright(顶部右侧),centerleft(中部左侧),center(中心位置),centerright(中部右侧),lowerleft(底部左侧),lowercenter(底部中心)和lowerright(底部右侧)。取loc=(x,y),将x轴和y轴看作单位1,(0,0)表示取到坐标轴平面的左下角,(1,1)表示右上角,(0.5,0.5)则表示中心位置。010203通过在legend(handles=,labels=,loc=)中设置不同的参数可以实现个性化图例定制。其中handles为所画线条的实例对象;labels为图例内容;loc为图例在整个坐标轴平面中的位置。loc在这里有三种具体的取值方法,如左所示。任务实施——6.Matplotlib图例设置任务实施——6.Matplotlib图例设置为方便展示,将条形图颜色设置为默认的蓝色。下面分别尝试将loc设置为'best'和'uppercenter',效果如图110图例设置(loc='best')、图111图例设置(loc='uppercenter')所示。程序如下:plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签

plt.rcParams['axes.unicode_minus']=False#正常显示负号bar=plt.bar(letter,enword)

plt.legend(handles=bar,labels=['某字母开头的单词数'],loc='best')

#plt.legend(handles=bar,labels=['某字母开头的单词数'],loc='uppercenter')plt.show()#展示任务实施——7.MatplotlibAnnotation标注设置程序如下:有时需要在图表上重点表示一些信息,可以使用annotate(text,xy,xytext,xycoords='data',textcoords,arrowprops)来设置箭头内容指向,从而强调图表数据或者标注细节信息。如图112Annotation标注设置所示,在条形图中标注出s开头的单词数。#绘制条形图

colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度

#fontdict可以单独定义,也可以直接在函数中定义

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.annotate(text='这是s开头的单词数',xy=(18,600),xytext=(-130,30),

xycoords='data',textcoords='offsetpoints',fontsize=12,

arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=-.2'))plt.show()#展示任务实施——8.Matplotlibtick能见度设置有时图表可能会与坐标轴重合,导致标签被遮挡,可以通过设置tick能见度来解决。函数label.set_bbox(dict(facecolor=,edgecolor=,alpha=)),其中facecolor代表标签底色;edgecolor代表标签边缘颜色;alpha表示透明度,默认在0~1之间。如果标签存在不显示的问题,可设置zorder让标签显于图像之上。效果如图1-13tick能见度设置所示。bar=plt.bar(letter,enword,zorder=1)#设置图像的zorder

ax=plt.gca()#获取当前坐标轴

#设置x轴为底部的轴,设置y轴为左侧的轴

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

#设置标签能见度

forlabelinax.get_xticklabels()+ax.get_yticklabels():#遍历所有标签

label.set_bbox(dict(facecolor='red',edgecolor='blue',alpha=0.4))

label.set_zorder(100)#设置标签的zorder在图像之上plt.show()#展示任务实施——9.Matplotlib注释设置在图表中添加注释可以使用text(x,y,s),其中x,y表示文字位置,s为需要注释的文本内容,效果如图114注释设置所示。#绘制条形图

colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度

#fontdict可以单独定义,也可以直接在函数中定义

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.text(2,650,'由图可知,s开头的单词数最多\nx开头的单词数最少',

fontdict={'size':12,'color':'r'})plt.show()#展示

任务实施——10.Matplotlib图表与画布边缘边距设置使用subplots_adjust(left,bottom,right,top,wspace,hspace)设置图表与画布之间的边缘边距,left,bottom,right,top依次表示左、下、右、上四个方向上图表与画布边缘之间的距离,取值范围在0~1之间。使用这四个参数时,将画布左下角视为坐标原点,画布的宽和高都视为单位1。wspace和hspace分别表示水平方向上图像间的距离和垂直方向上图像间的距离,在画布有多个子图时使用。尝试对图表与画布的边缘边距进行修改,效果如图115图表与画布边缘边距设置所示。#figsize控制画布的宽和高,dpi分辨率,facecolor设置画布背景颜色

plt.figure(figsize=(8,6),dpi=90,facecolor='grey')

plt.subplots_adjust(left=0.25,bottom=0.10,right=0.95,top=0.90)

#绘制条形图

colors=['red','blue','green','purple']#定义颜色

plt.bar(letter,enword,color=colors,alpha=0.4)#设置颜色和透明度

plt.show()#展示通过本任务的学习,了解Matplotlib相关基础知识,初步掌握Matplotlib绘图模块的使用,以及在基础条形图中设置标题、坐标轴、图例等一系列相关图表设置,对涉及的参数有了一定了解。本任务的重点是使用绘图模块进行绘图,以及定制化图表设置,难点在于图表设置时参数的选择、视图定制化的学习与灵活运用,可以通过练习题进行掌握与提升、课外学习更多Matplotlib知识加深和拓展知识储备。基于本任务的成果,对于Matplotlib绘制图表的原理有了一定的了解,通过案例更好地理解了Matplotlib绘图技巧,为后续学习做好铺垫。任务总结4绘制基础图形任务描述本任本将结合第一节Matplotlib基本用法的知识点,使用Matplotlib进行基础图形绘制,学习在Matplotlib中针对特定图形调用绘图函数,使用函数绘制散点图与折线图等基础图形。此任务引用四六级单词数据和随机生成数据,对数据进行散点图与折线图等图形展示,认知Matplotlib绘图风格与绘图原理,将逐步加深对Matplotlib绘图方法的理解,掌握Matplotlib绘图的主要步骤,包括初始化画布及正确调用绘图函数等,掌握指定颜色、大小的散点图等。通过学习本任务内容,掌握基本绘图方法,掌握折线图、柱状图、直方图、堆叠条形图、水平条形图、带标签的分组条形图、面积图、散点图、气泡图、饼图、箱型图、误差棒图、雷达图的基本绘图步骤,并依据练习题将所学知识巩固应用,在后续实践操作中能够根据实际需求绘制所需图形。本任本将结合第一节Matplotlib基本用法的知识点,使用Matplotlib进行基础图形绘制。知识与技能——plt.figure()函数详解在Matplotlib中,plt.figure()函数用于创建一个新的图形窗口,并返回一个指向该图形的引用。通常,我们会使用该函数创建图形对象,以便进行各种定制化的操作,例如添加多个子图、设置图形大小和分辨率等。在使用plt.figure()函数创建图形对象时,可以传递一些可选参数来控制图形的外观和行为。以下是一些常用的可选参数:figsize:用于设置图形的大小,可以传递一个元组,指定图形的宽度和高度,单位为英寸(inch),例如(6,4)表示宽度为6英寸、高度为4英寸的图形。dpi:用于设置图形的分辨率,即每英寸包含的像素数,可以传递一个整数值,例如dpi=100表示每英寸包含100个像素。facecolor:用于设置图形的背景颜色,可以传递一个字符串,表示颜色的名称或RGB值,例如facecolor='white'表示将图形的背景颜色设置为白色。edgecolor:用于设置图形边框的颜色,可以传递一个字符串,表示颜色的名称或RGB值,例如edgecolor='black'表示将图形的边框颜色设置为黑色。frameon:用于控制是否显示图形边框,可以传递一个布尔值,例如frameon=False表示将图形的边框隐藏。知识与技能——plt.figure()函数详解axes可以认为是figure这张画图上的子图,因为子图上一般都是坐标图,所以我更愿意理解为轴域或者坐标系。一个figure可以有多个axes,无论是pyplot模块还是figure实例内都定义有多种创建axes的方法。知识与技能——plt.axes()函数详解1.plt.axes()plt.axes()是指pyplot模块中的axes()方法,该方法会在当前激活的figure中创建一个axes,并使创建好的axes处于激活状态。当传入的第一个位置参数为空时,该方法会创建一个占满整个figure的axes;通常我们可以传入一个tuple参数(left,botton,width,height)作为第一个位置参数,tuple中四个元素分别表示与figure左边框比例距离,边框宽度占figure宽度的比例,宽度比例,高度占figure高度的比例。通过这种方式添加axes时,matplotlib会自动创建一个axes,然后将创建好的axes按照给定的位置和size添加到figure中,最后返回一个axes的引用。知识与技能——plt.axes()函数详解2.figure.add_axes()figure.add_axes()方法的作用是将一个axes添加到figure中,这一方法可以传入一个已创建好的axes作为第一个参数,add_axes会将传入的axes添加到figure中,但这种情况使用不多。在大多数情况下,我们会如同上述在plt.axes()方法中那样传递一个tuple参数(left,botton,width,height)作为第一个位置参数。同样,如果在相同区域添加axes,后面添加的axes会把前面添加的axes覆盖。知识与技能——plt.axes()函数详解本任务绘图时需要使用的基本绘图函数,如下表所示。函数绘制图形plt.plot()折线图plt.bar()柱状图plt.hist()直方图plt.bar()堆叠柱状图plt.barh()堆积条形图plt.bar()、plt.legend()带标签的分组条形图plt.stackplot()面积图plt.plot()、plt.scatter()散点图plt.scatter()气泡图plt.pie()饼图plt.boxplot()箱型图plt.errorbar()误差棒图plt.plot()、plt.fill()雷达图任务实施——1.绘制折线图对于图表来说,最简单的就是做出一个单一函数y=f(x)的图像,本节我们首先来介绍如何创建折线图,它是一个由点和线组成的统计图表,常用来表示数值随连续时间间隔或有序类别的变化。下面是在四六级单词中以各个字母开头的单词统计数据的折线图绘制代码。输出效果图图1-16所示。importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]fig=plt.figure()

ax=plt.axes()

#plt.figure(figsize=(20,10),dpi=100)

ax.plot(x,y,'-')

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("plot.png",dpi=300)

plt.show()以上是最基础的折线图绘制,同理,在绘制过程中可更改plot()函数的参数调整线条的颜色、粗细、风格、在同一画布上绘制多条折线图等。上个示例绘制结果如下:任务实施——1.绘制折线图任务实施——绘制直方图直方图是用一系列不等高的长方形来表示数据,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,长方形的高度跟落在间隔内的数据数量成正比,变化的高度形态反映了数据的分布情况。相关参数及解释如下:hist(x,bins=None,range=None,normed=False,density=False,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',rwidth=None,orientation='vertical',color=None,edgecolor=None,label=None,stacked=False,**kwargs)x:数组或者数组序列(不要求每个数组长度相同),用于存放数据。bins:整数、序列或字符串,整数表示等宽区间的个数(直方图条形个数),自动计算区间范围,序列则表示区间的范围,除了最后一个以外,都是包含左边不包含右边,字符串则表示对应的策略,默认为

hist.bins。range:元组,指定最小值和最大值(直方图数据的上下界),默认包含绘图数据中的最小值和最大值(默认以绘图数据的最小值作为直方图数据的上下界)。density:布尔值,可选,如果为True,则返回的是归一化的概率密度,所有区间的概率之和为1。normed:是否将直方图的频数转化为频率。任务实施——绘制直方图在下面给出的例子中,定义一组数据数组,传入plt.hist()方法中,设置bins的值确定直方图条形个数、将density设置为True返回归一化概率密度。输出效果如图1-17所示。frommatplotlibimportpyplotasplta=[131,106,109,121,101,116,119,116,134,143,146,149,150,147,178,157,163,169,134,127,128,129,131,98,125,131,124,139,123,155,96,98,105,174,146,156,131,114,114,165,167,113,144,136,148,94,134,167,104]#定义数据

d=6

num_bins=(max(a)-min(a))//d#分割组数步长为6,计算组数plt.figure(figsize=(20,8),dpi=80)#设置图形的大小

plt.hist(a,num_bins,density=1)

#设置x轴的刻度

plt.xticks(range(min(a),max(a)+d,d))

plt.xticks(fontsize=36)

plt.yticks(fontsize=36)

plt.grid()

plt.tight_layout()

plt.savefig("hist.png",dpi=300)

plt.show()任务实施——绘制柱状图条形图是一种以长方形的长度为变量数据进行统计的图表,柱状图适用在较小数据集的分析,可以直观展示个体之间数据的差异。柱状图一般使用bar()函数实现绘制,只需在函数中定义需要绘制的两组数据,并且可以通过适当调整参数来设置颜色宽度等属性,此处给出的示例程序仍然使用四六级的数据进行图形绘制,代码绘制结果如图118柱状图。importmatplotlib.pyplotasplt第一步;导入相关包importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]第二步;定义数据第三步;制图#makedata:

plt.rcParams['font.sans-serif']=['MicrosoftYaHei']

#plot

#绘制条形图

plt.bar(x,y)

plt.xticks(x,x)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("bar.png",dpi=300)

plt.show()任务实施——绘制柱状图任务实施——绘制堆叠条形图堆叠条形图与条形图类似,常被用于比较不同类别的数值,而且它的每一类数值内部又被划分为多个子类别,这些子类别一般用不同的颜色来表示,有助于分解整体从而对各部分进行比较。堆叠条形图同样是调用bar函数,只是在参数设置上面做了调整,示例代码multibar.py的运行结果见图2-19堆叠条形图。第一步;导包#importingpackage

importmatplotlib.pyplotasplt

importnumpyasnp第二步:定义数据x=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])

y3=np.array([12,15,19,6])

y4=np.array([10,29,13,19])任务实施——绘制堆叠条形图第三步:设置参数、制图plt.bar(x,y1,width=0.67)

plt.bar(x,y2,bottom=y1,width=0.67)

plt.bar(x,y3,bottom=y1+y2,width=0.67)

plt.bar(x,y4,bottom=y1+y2+y3,width=0.67)

plt.legend()

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("multibar.png",dpi=300)

plt.show()任务实施——绘制堆叠条形图上述代码在进行图形绘制时,在绘制y2数据时,设置bottom=y1,意思是在y1数据绘制的条形图的基础进行绘制,也就是形成堆叠图,同样,y3在y1+y2基础上进行绘制。任务实施——绘制水平条形图水平条形图一般通过barh函数实现,每个柱形按照给定的对齐方式定位在y轴的指定位置,在绘制水平方向的堆叠条形图时,需要将参数bottom改为left,将参数width改为height,其他的和垂直方向的条形图的绘制类似。代码barh.py的运行结果见图1-20水平条形图。任务实施——绘制水平条形图示例代码如下importmatplotlib.pyplotasplt

importnumpyasnpx=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])#注意此处使用的是barh函数

plt.barh(x,y1,height=0.67)

plt.barh(x,y2,left=y1,height=0.67)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("barh.png",dpi=300)

plt.tight_layout()

plt.show()任务实施——带标签的分组条形图分组条形图应用的也是绘制条形图使用的bar()方法,这里需要通过设置坐标来实现,绘制的方法是:在一组画布上进行多组数据的绘制,调整数据的横纵坐标来实现分组绘制,下面是示例代码,其中po_l和po_r分别表示两组数据的横坐标数据,不同的组别一般使用填充颜色进行区分,使用legend()函数显示图例,在绘制之后使用plt.xticks()函数重新设置刻度,结果见图1-21带标签的分组条形图。任务实施——带标签的分组条形图示例程序和运行结果如下。importmatplotlib.pyplotasplt

importnumpyasnpx=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])#绘图(在一个刻度的两边分别绘制两条柱状图)

width=0.3#设置一个固定宽度

po_l=[i-width/2foriinrange(len(x))]

po_r=[i+width/2foriinrange(len(x))]

#设置刻度

plt.xticks(range(len(x)),x)

plt.bar(po_l,y1,label="group1",width=0.2)

plt.bar(po_r,y2,label="group2",width=0.2)

plt.legend()

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("groupbar.png",dpi=300)

plt.show()任务实施——绘制面积图折线图常用于描述某指标随某个时间序列的变化。往往一条折线图可以根据某个分组变量拆分成为多个折线图,其面积也通常可以有一定的含义,可以帮助我们有效观察总量的趋势,因此可以借助Matplotlib中的stackplot()函数绘制面积图。函数参数定义如下:stackplot(x,*args,**kargs)其中x表示指定面积图的x轴数据,*args为可变参数,可以接多组y轴数据,**kargs用于设置多类图表属性,在下面例子中,横坐标设置为[0,2,4,6,8],设置三组y轴数据,在stackplot()方法中传入数据即可展示y轴数据进行堆叠后的面积图,程序运行结果见图122面积图。任务实施——绘制面积图示例程序以及运行结果如1-22面积图。importmatplotlib.pyplotasplt

importnumpyasnpx=np.arange(0,10,2)

ay=[1,1.25,2,2.75,3]

by=[1,1,1,1,1]

cy=[2,1,2,1,2]

y=np.vstack([ay,by,cy])fig,ax=plt.subplots()

ax.stackplot(x,y)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("stackplot.png",dpi=300)

plt.show()任务实施——绘制散点图散点图,又名点图、散布图、X-Y图。散点图将所有的数据以点的形式展现在平面直角坐标系上。它至少需要两个不同变量,一个沿x轴绘制,另一个沿y轴绘制。每个点在x、y轴上都有一个确定的位置。散点图有助于分析两个变量之间的相关性,或找出趋势和规律。散点图是折线图的近亲,可以使用plot()函数实现绘制,也可以使用scatter()函数。任务实施——绘制散点图方法一:使用plt.plot()绘制散点图在前文我们介绍了plt.plot/ax.plot方法绘制折线图,这两个方法也可以同样用来绘制散点图,运行结果见图1-23plt.plot()方法绘制散点图。importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]fig=plt.figure()

ax=plt.axes()

#plt.figure(figsize=(20,10),dpi=100)

ax.plot(x,y,'o')

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("plot1.png",dpi=300)

plt.show()任务实施——绘制散点图运行结果见图1-23plt.plot()方法绘制散点图。第三个参数是使用一个字符代表的图标绘制点的类型,在使用plot()函数时,可用某些短字符来设置线条类型,同样的,也可以用某些字符来设置点的类型,所有可用的点的类型可以通过在线文档进行查阅,符号代码可以和线条、颜色符号代码一起使用。在折线图的基础上绘制出散点ax.plot(x,y,'-o'),如图124在折线图上绘制散点。任务实施——绘制散点图方法二:使用plt.scatter()绘制散点图第二种绘制散点图的方式是使用plt.scatter()函数,它的使用方法和plt.plot()类似,下面附示例代码scatter.py,运行结果见图125plt.scatter()方法绘制散点图。importmatplotlib.pyplotasplt

importnumpyasnp#makethedata

np.random.seed(3)

x=4+np.random.normal(0,2,24)

y=4+np.random.normal(0,2,len(x))#plot

fig,ax=plt.subplots()

ax.scatter(x,y,vmin=0,vmax=100)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=22)

plt.yticks(fontsize=22)

plt.tight_layout()

plt.savefig("scatter.png",dpi=300)

plt.show()任务实施——绘制散点图运行结果如图:plt.scatter()和plt.plot()函数的主要区别在于:plt.scatter可以针对每个点设置不同属性(大小、填充颜色、边缘颜色等),还可以通过数据集合对这些属性进行设置。任务实施——绘制散点图气泡图与使用scatter()方法绘制的散点图步骤类似,只需要在绘制散点图的scatter()函数基础之上改变参数即可获得气泡图,在示例代码bubble.py中,通过设置s,c,linwidth等参数改变点的大小、颜色、线宽等属性,实现气泡图的绘制。importmatplotlib.pyplotasplt

importnumpyasnp

np.random.seed(3)

x=4+np.random.normal(0,2,24)

y=4+np.random.normal(0,2,len(x))

sizes=np.random.uniform(15,80,len(x))#不同大小

colors=np.random.uniform(15,80,len(x))#不同颜色

lsize=1#不同线宽

fig,ax=plt.subplots()

ax.scatter(x,y,s=sizes,c=colors,linewidths=lsize,vmin=0,vmax=100)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("bubble.png",dpi=300)

plt.show()任务实施——绘制气泡图运行结果如图1-26气泡图。任务实施——绘制气泡图在数据分析中,饼图经常被用来概览不同类别占总体的比值,在Matplotlib中一般使用pie()函数进行基础饼图绘制,在示例代码pie.py中ax.pie()函数传入的参数有:绘制数据x、各区块颜色colors、饼图半径radius、饼图中心位置center、边界wedgeprops、设置frame为True绘制轴框架,程序结果见图1-27绘制简单饼图。importmatplotlib.pyplotasplt

importnumpyasnp#makedata

x=[1,2,3,4]

labels=['a','b','c','d']colors=plt.get_cmap('Blues')(np.linspace(0.2,0.7,len(x)))

#plot

fig,ax=plt.subplots()

ax.pie(x,colors=colors,radius=3,center=(4,4),wedgeprops={"linewidth":1,"edgecolor":"white"},frame=True)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("pie.png",dpi=300)

plt.show()任务实施——绘制饼图程序结果见图1-27绘制简单饼图。任务实施——绘制饼图以上为基础的饼图绘制,后续可以通过添加参数设置在图上显示标签和数值等信息。在下述程序中,autopct用于设置数值精确的百分比,startangle设置为90度表示逆时针情况下第一块楔形开始的角度,pctdistance设置为0.5表示数值距圆心半径的距离倍数,shadow设为true表示显示饼图阴影。importmatplotlib.pyplotasplt

importnumpyasnpx=[1,2,3,4]

labels=['a','b','c','d']colors=plt.get_cmap('Blues')(np.linspace(0.2,0.7,len(x)))

#plot

fig,ax=plt.subplots()

ax.pie(x,labels=labels,colors=colors,autopct='%3.2f%%',startangle=90,pctdistance=0.5,shadow=True,radius=3,center=(4,4),wedgeprops={"linewidth":1,"edgecolor":"white"},frame=True)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("pie.png",dpi=300)

plt.show()任务实施——绘制气泡图程序结果见图1-28绘制简单饼图。任务实施——绘制饼图雷达图是用于绘制多个定量变量的一个或多个数值的图表,Matplotlib中暂时没有允许生成雷达图的内建函数,因此需要使用基本函数来构建,雷达图需要在极坐标的基础上进行绘制,在绘制雷达图之前需要知道极坐标的角度、半径、样式设置等,然后通过折线图加上极坐标在画布上进行绘制。任务实施——绘制雷达图雷达图可以进行单变量或多变量的绘制,下面是一个简单的单变量雷达图绘制示例,在图形绘制过程中,首先创建画布并在新建的画布上面使用add_subplot()建一个表,通过设置polar值为True绘制一个极坐标,取定义数据的第一维[38,29,8,7,28]为绘制数据values,将360度均分设置为绘制数据的角度angles(这里也可以进行自定义),定义好数据和角度后就可以通过折线图plot()设置雷达图的x轴和y轴,以及设置颜色线条等属性,画好折线图后使用fill()填充图形区域。第一步:导包#Libraries

importmatplotlib.pyplotasplt

importpandasaspd

frommathimportpi第二步骤:定义数据#Setdata

#设定数据

df=pd.DataFrame({

'group':['A','B','C','D'],

'var1':[38,1.5,30,4],

'var2':[29,10,9,34],

'var3':[8,39,23,24],

'var4':[7,31,33,14],

'var5':[28,15,32,14]

})任务实施——绘制雷达图第三步:数据预处理#numberofvariable

#变量类别

categories=list(df)[1:]

#变量类别个数

N=len(categories)

#plotthefirstlineofthedataframe.

#绘制数据的第一行

values=df.loc[0].drop('group').values.flatten().tolist()

#将第一个值放到最后,以封闭图形

values+=values[:1]

print(values)

#设置每个点的角度值

angles=[n/float(N)*2*piforninrange(N)]

angles+=angles[:1]

任务实施——绘制雷达图第四步:绘制图形

#Initialisethespiderplot

#初始化极坐标网格

ax=plt.subplot(111,polar=True)

#Drawoneaxepervariable+addlabelslabelsyet

#设置x轴的标签

plt.xticks(angles[:-1],categories,color='grey',size=8)

#Drawylabels

#设置标签显示位置

#具体见/A/x9J2DRwNd6/

ax.set_rlabel_position(0)

#设置y轴的标签

plt.yticks([10,20,30],["10","20","30"],color="grey",size=7)

plt.ylim(0,40)

#Plotdata

#画图

ax.plot(angles,values,linewidth=1,linestyle='solid')

#Fillarea

#填充区域

ax.fill(angles,values,'b',alpha=0.1)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("radar.png",dpi=300)

plt.show()任务实施——绘制雷达图任务实施——绘制雷达图运行结果如下图所示:通过本任务的学习,我们巩固了Matplotlib的相关基础知识、在任务一基础上拓展知识并完成了基础图形的绘制。本任务的重点是使用相应的绘图函数对目的图形进行绘制,难点是深入理解绘图原理、正确选择绘图函数、正确设置绘图数据,需要在任务一基础上对绘图逻辑提高认知。基于本任务的成果,我们对于Matplotlib绘制图表的原理有了更加深入的了解和练习,提高了绘图实践水平,通过案例更好地理解Matplotlib绘图原理、掌握了绘图方法。任务总结5绘制复杂图形任务描述本任务对Matplotlib绘制破碎的水平条形图、填充多边形图、带渐变的条形图、水平堆积条形图、绘制棒棒糖图、绘制百分位水平图进行讲解与实践,初步了解绘图的基本步骤,认知Matplotlib绘图风格与绘图原理,从而在后续实践操作中根据实际需求绘制所需图形。通过学习本任务内容,从画布的设置到绘图函数的正确调用,掌握更加复杂图形的绘制,目的是掌握更多实用的Matplotlib图形绘制方法。完成本任务需要学生进一步加深对Matplotlib绘图风格和

温馨提示

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

最新文档

评论

0/150

提交评论