Python程序设计基础及应用(微课版)课件 -第11章 数据可视化基础_第1页
Python程序设计基础及应用(微课版)课件 -第11章 数据可视化基础_第2页
Python程序设计基础及应用(微课版)课件 -第11章 数据可视化基础_第3页
Python程序设计基础及应用(微课版)课件 -第11章 数据可视化基础_第4页
Python程序设计基础及应用(微课版)课件 -第11章 数据可视化基础_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

《Python程序设计基础及应用》配套课件第十一章数据可视化基础11.1数据可视化概述11.2pyplot基本绘图流程11.3基于函数的可视化操作11.4分类图11.5seaborn可视化11.6词云11.1数据可视化概述1.数据可视化概述

数据可视化是将数据以图表、图像、地图、关系图等形式展示出来,这种展示方式不仅可以帮助人们更快地理解数据中的信息,而且能够揭示数据之间的关联、趋势和模式,帮助决策者更好的利用大量数据中所蕴含的信息,更加准确和快速地进行数据分析。2.数据可视化流程

(1)准备要分析的数据。(2)根据数据类型和关注点,选择适合的图表,以便更好地表达数据之间的关系。(3)编写代码来绘制图形。(4)数据分析。揭示数据中有用的信息,得出有价值的结论。3.数据可视化库matplotlib是Python最著名的绘图库,它提供了一整套和matlab类似的绘图函数集seaborn扩展库在matplotlib的基础上进行了更高级的API封装,使得绘图更加简单和方便Bokeh用于创建交互式实时图表,可以在浏览器交互的数据可视化图表Plotly是一个交互式数据可视化库,可以绘制出高质量的折线图、散点图、3D图形等。它支持多种编程语言Networkx是一个用于创建、操作和可视化复杂网络的Python库Wordcloud是一个用于生成词云的Python库,可以将文本中出现频率高的词汇以图形的方式展示出来Pygal是一个可缩放矢量图表库,用于生成可在浏览器中打开的SVG格式的图表Pyecharts基于ECharts,提供了一套简单易用的Python接口用于创建交互式的图表11.2pyplot基本绘图流程Matplotlib提出了ObjectContainer概念,它有Figure、Axes、Axis和Tick四种类型的对象容器。Figure负责图像大小、位置等操作。Axes负责坐标系的位置、绘图等操作。Axis负责坐标轴的操作。Tick负责刻度的相关操作。Figure包含Axes、Axes包含Axis,Axis包含Tick。11.3基于函数的可视化操作为了方便快速绘图,matplotlib通过pyplot模块提供了一套和matlab类似的绘图函数,只需要调用pyplot模块所提供的函数,就可以实现快速绘图及设置图表的各种细节。使用pyplot之前要导入frommatplotlibimportpyplotasplt

或者importmatplotlib.pyplotasplt1.pyplot概述1.常用绘图函数1)创建图表和创建子图figure()该函数创建一个图表对象,并且成为当前的图表对象。当只需要绘制一幅简单的图形时,可以省略。

也可以不创建Figure对象而直接调用plot()进行绘图,这时matplotlib会自动创建一个Figure对象。2.pyplot常用函数1.常用绘图函数1)创建图表和创建子图subplot()将一个图表划分成多个子图进行绘制,该函数用来设置子图,第1个参数是行数,第2个参数是列数,第3个参数是子图的编号。subplots()该函数返回Figure对象和子图对应的Axes对象数组,Axes是可以进行绘图操作的对象2.pyplot常用函数1.常用绘图函数2)添加图表内容title()、text()在当前图表中添加标题、文本注释信息legend()设置图例xlabel()、ylabel()添加X轴和Y轴名称2.pyplot常用函数1.常用绘图函数2)添加图表内容xlim()、ylim()设置当前图表的X轴和Y轴取值范围xticks()、yticks()指定X轴和Y轴刻度的数目与取值2.pyplot常用函数1.常用绘图函数3)绘图plot()plot()的前两个参数是表示X、Y轴数据的对象,后面参数是一个格式化字符串,由颜色字符、风格字符和标记字符组成。设置图例函数legend()需要放到plot()之后。1.常用绘图函数4)保存与显示图形savefig()保存绘制的图形到文件中,可以指定图形的分辨率、边缘的颜色等参数show()显示图形2.pyplot常用函数frommatplotlibimportpyplotasplt #导入pyplot库importnumpyasnp #导入科学计算库numpy#设置中文字体font={'family':"KaiTi", #字库:楷体"weight":"bold", #加粗"size":16 #字号}plt.rc("font",**font) #设置配置参数plt.rc("axes",unicode_minus=False) #处理负号显示问题2.pyplot常用函数#

创建绘图数据x=np.arange(0.0,2.0,0.01) #x轴数据[0.0,2.0),间隔0.01y=1+np.sin(2*np.pi*x) #y轴数据1+sin(2Πx)fig=plt.figure(figsize=(20,8)) #设置图片宽度20英寸,高度8英寸plt.plot(x,y,"r--") #绘图参数设置plt.xlabel("时间/s") #设置x轴标签plt.ylabel("电压/mv") #设置y周标签plt.title("第一个图形示例")

#

设置图片的标题t=[r"$1+sin(2\pi{x})$"] #使用LaText语法描绘数学公式plt.legend(t,loc="upperleft",frameon=True) #设置图例,位置左上,带边框2.pyplot常用函数#savefig()函数保存图表到文件,可以指定要保存的文件名、分辨率、去除四周空白plt.savefig(r"d:\test2.png",dpi=1000,bbox_inches='tight',pad_inches=0) plt.show()2.pyplot常用函数2.绘制多个子图一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域(子图)。可以用subplot()函数快速绘制包含多个子图的图表。subplot(nrows,ncols,index,**kwargs)整个绘图区域被等分为nrows行和ncols列,然后按照从左到右、从上到下的顺序对每个区域进行编号,左上区域的编号为1。index参数指定创建Axes对象所在的区域。如果3个参数的值都小于10,那么就可以把它们缩写成一个整数。如223表示第2行第1列的子图。2.pyplot常用函数2.绘制多个子图一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域(子图)。可以用subplot()函数快速绘制包含多个子图的图表。subplot(nrows,ncols,index,**kwargs)整个绘图区域被等分为nrows行和ncols列,然后按照从左到右、从上到下的顺序对每个区域进行编号,左上区域的编号为1。index参数指定创建Axes对象所在的区域。如果3个参数的值都小于10,那么就可以把它们缩写成一个整数。如223表示第2行第1列的子图。2.pyplot常用函数plt.rcParams["font.family"]="SimHei"plt.rcParams["axes.unicode_minus"]="False"plt.figure(1) #创建图表1plt.figure(2) #创建图表2ax1=plt.subplot(211) #在图表2中创建子图1ax2=plt.subplot(212) #在图表2中创建子图2x=np.linspace(0,3,100) #生成X轴数据plt.figure(1)foriinrange(5): plt.plot(x,np.exp(i*x/3),label=r"$e^{%dx}$"%i) #在图表1中绘图 plt.legend() 4.编程实例plt.sca(ax1) #选择图表2的子图1 plt.plot(x,i+x,label=r"%d+x"%i) #在图表2的子图1中绘图 plt.legend() plt.sca(ax2) #选择图表2的子图2 plt.plot(x,np.cos(i*x),label=r"cos%dx"%i) #在图表2的子图2中绘图 plt.legend() plt.figure(1) plt.savefig("d:/test1.png") #图表1存盘 plt.figure(2) plt.show() 4.编程实例4.编程实例11.4分类图直方图是为了直观显示数据的分布情况,直方图的横轴表示数据,纵轴表示数据出现的次数。使用hist()函数可以绘制直方图。它的第1个参数表示数据,不能省略,其它参数为关键字参数,其中bins表示直方图的柱子数,normed/density表示是否归一化,alpha表示透明度,histtype设置直方图的类型,facecolor设置颜色等。1.直方图data1=np.random.randn(100000) #生成100000个(0,1)符合正态分布的样本data2=np.random.rand(100000) #生成100000个(0,1)符合均匀分布的样本plt.hist(data1,100,alpha=0.7,normed=True)plt.hist(data2,100,alpha=0.4,normed=True)plt.grid(True,ls='--') #绘制网格plt.legend(["Normal","Uniform"]) #设置图例plt.show()1.直方图1.直方图柱状图用每根柱子的长度表示值的大小,它们通常用来比较两组或多组值。柱状图主要用于查看各分组数据的数量分布,以及各个分组数据之间的数量比较。使用bar()函数可以绘制垂直柱状图。它的第1个参数为每根柱子左边缘的横坐标,第2个参数为每根柱子的高度,第三个参数指定所有柱子的宽度,默认是0.8。grid()函数用于绘制网格,通过对参数的个性化设置,可以绘制出个性化的网格。2.柱状图data1=[107,115,145,212,280,338,350,358,368]data2=[190,260,310,380,410,500,510,580,600] years=np.arange(2000,2009,1) #创建一维数组plt.figure(figsize=(10,6))plt.bar(years,data2,label="大学录取人数",color="b",width=0.3,alpha=0.3)forx,yinzip(years,data2):plt.text(x,y,y,ha="center",va="bottom")plt.bar(years+0.3,data1,label="大学毕业人数",color="g",width=0.3,alpha=0.6)plt.grid(color="r",linestyle="--",linewidth=1,axis="y",alpha=0.4) forx,zinzip(years+0.3,data1):plt.text(x,z,z,ha="center",va="bottom") plt.xlabel("年度")plt.ylabel("大学录取/毕业人数(万)")plt.title("中国大学录取/毕业人数数据(2000年-2008年)")2.柱状图2.柱状图饼状图是将各项的大小与各项总和的比例显示在一张“饼”上,以“饼”的大小来确定每一项的占比。饼状图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显示方式比较直观。pyplot中绘制饼状图使用函数pie()。pie()中参数startangel设置开始角度,autopct设置数值显示方式,radius设置半径,默认为13.饼状图fig=plt.figure(figsize=(8,3))ax1=fig.add_subplot(1,2,1) #定义子图1plt.sca(ax1) #选择子图1plt.pie(data1,explode=explode1,labels=label1,autopct="%1.1f%%",startangle=45,radius=0.8)ax2=fig.add_subplot(1,2,2) #定义子图2plt.sca(ax2) #选择子图2plt.pie(data2,explode=explode2,labels=label2,autopct="%1.1f%%",startangle=90)plt.show()3.饼状图3.饼状图散点图可以用来呈现数据点的分布,表现两个元素之间的相关性。scatter()函数可以用来绘制散点图,传入X和Y轴坐标数据即可。x=np.random.random(50) #产生50个0到1之间的随机数y=x+np.random.random(50)/8 #模拟X和Y之间的相关性plt.scatter(x,y,s=x*300,c='r',marker='*')

#参数s指定大小,c设置颜色,marker设置形状plt.show()4.散点图4.散点图箱线图可以观察最小值、下四分位数、中位数、上四分位数和最大值,它可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别是可以对几个样本进行比较。pyplot中绘制箱线图的函数是boxplot()。boxplot()函数中参数notch设置中间箱体是否有缺口,labels指定箱线图的标签,meanline表示是否显示均值线data1=[107,115,145,212,280,338,350,358,368]data2=[900,260,310,380,410,500,510,580,600]label=["毕业人数","录取人数"]plt.boxplot((data1,data2),notch=True,labels=label,meanline=True) 5.箱线图

5.箱线图11.5seaborn可视化seaborn预先设计好了5种主题样式:darkgrid、dark、whitegrid、white和ticks,默认使用darkgrid主题样式。searborn库的set()方法可以设置主题、调色板等多个样式。importseabornassns #导入seaborn扩展库sns.set(style="whitegrid",palette="muted",color_codes=True) #set()中style参数设置主题,palette参数设置调色板,color_codes参数设置颜色代码

1.seaborn样式通过seaborn库的stripplot()函数可以绘制散点图,当散点图中数据较多时,很多散点会被覆盖,可以通过加入抖动(jitter=True)来解决。如果要看清每个数据点,可以使用swarmplot()函数,该函数的参数x和y表示列名,hue参数表示颜色分类

2.散点图sns.set(style="ticks")tips=sns.load_dataset("tips") #使用seaborn自带tips数据集fig,axes=plt.subplots(1,2,figsize=(8,4))sns.stripplot(x='day',y="total_bill",ax=axes[0],data=tips,hue="smoker") #

当数据点多时,出现覆盖情况sns.swarmplot(x='day',y="total_bill",ax=axes[1],data=tips) #避免出现覆盖情况sns.despine() #去掉边框

2.散点图2.散点图在seaborn中使用boxplot()函数来绘制箱线图。sns.set(style="ticks")sns.boxplot(x="day",y="total_bill",hue="smoker",orient="v",palette="Set3",data=tips)#参数orient设置朝向,取“v”时沿Y轴方向绘图,取“h”时沿X轴方向绘图#x、y参数表示要绘制的列,hue参数表示分类变量sns.despine()plt.savefig(r"d:\test.png",dpi=1000,bbox_inches='tight',pad_inches=0)

3.箱线图3.箱线图琴形图结合了箱线图与核密度估计图,seaborn中,使用violinplot()函数来绘制琴形图。fig,axes=plt.subplots(1,2,figsize=(13,6)) #创建多子图,返回fig和axes对象#split参数可以将分类数据进行切分,这样两边的颜色就代表了不同的类别sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,split=True,ax=axes[0])#hue参数指定分类依据,inner参数对每个数据进行可视化sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,inner="stick",ax=axes[1])#琴形图可以和分类函数相互结合,实现更加强大的可视化效果sns.swarmplot(x="day",y="total_bill",data=tips,color="R",alpha=.6,ax=axes[0])

4.琴形图4.琴形图seaborn中使用barplot()函数来绘制柱状图,默认情况下使用该函数绘制的y轴是变量分布的平均值,并且在每个柱状条上绘制误差线。sns.barplot(x="day",y="tip",hue="sex",data=tips)

5.柱状图5.柱状图柱状图中,常常绘制类别的计数柱状图。在seaborn中,使用countplot()函数就可以完成。sns.countplot(x="day",data=tips,palette="Set2")6.计数图seaborn中,使用factorplot()函数完成分组统计功能。sns.factorplot(x="size",col="sex",data=tips,col_wrap=2,kind="count",size=4,aspect=.9)#参数col指定分组依据,参数col_wrap指定每行最多平铺数,kind指定绘图类型,size参数指定每个面的高度,aspect参数指定纵横比,每个面的宽度由size×aspect共同确定。7.分组关系图7.分组关系图利用热力图可以查看数据集中多个特征之间两两相关性的强弱。seaborn中heatmap()函数提供了热力图的绘制功能。ssns.set(font='SimHei') #设置中文字体sns.heatmap(tips.corr(),xticklabels=True,yticklabels=True,cmap='rainbow',annot=True,square=True)#tips.corr()计算tips数据集中每两列之间的相关性,xticklabels参数为True时,绘制列名,annot参数决定是否在网格中写入数字,square参数设置网格是否为正方形,cmap参数是colormap对象名或者颜色名称,fnt参数指定网格中数据的显示格式8.热力图8.热力图回归图用来揭示两个变量之间的线性关系。seaborn中使用regplot()和lmplot()函数来绘制回归图,其绘制的图表是一样的,但是两者传入的参数略有不同。

sns.lmplot("total_bill","tip",hue="smoker",markers=["x","o"],data=tips)#

使用hue参数可以加入一个分类变量,通过不同颜色来表示9.回归图9.回归图11.6词云词云图用于对文本中出现频率较高的关键词予以视觉上的突出展现,通过将文本中的词汇按照其出现的频率进行大小排序,然后将这些词汇以特定的形状、颜色等元素组合成一个图形,从而直观地展示文本的主题和关键词。绘制词云需要写安装WordCloud库和jieba库。jieba库用于从中文中分割出词汇,WordCloud统计词汇出现的频率,生成词云图。

1.seaborn样式

对于中文文本,分词处理一般需要遵循以下步骤。(1)先通过jieba库将文本分词处理,并把结果拼接成文本。(2)实例化一个WordCloud对象。需要指定中文字体,否则显示为乱码。(3)调用wordcloud.generate(text),对文本text进行分词,并生成词云图。(4)调用wordcloud.to_file(),把生成的词云图输出到图像文件。1.seaborn样式

对于中文文本,分词处理一般需要遵循以下步骤。(1)先通过jieba库将文本分词处理,并把结果拼接成文本。(2)实例化一个WordCloud对象。需要指定中文字体,否则显示为乱码。(3)调用wordcloud.generate(text),对文本text进行分词,并生成词云图。(4)调用wordcloud.to_file(),把生成的词云图输出到图像文件。1.seaborn样式importjiebafromwordcloudimportWordCloud #注意python

温馨提示

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

评论

0/150

提交评论