




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云南财经大学信息学院
Python程序设计及应用第9章9.2pyecharts数据可视化9.1matplotlib数据可视化目录学习目标知识目标掌握pyplot基础语法,掌握散点图、折线图、柱状图及饼图的作用及绘制方法。掌握pyecharts库绘图的基础知识,掌握柱状图、饼图、漏斗图及仪表盘的绘制方法。技能目标掌握pyplot基础图形的绘制方法;掌握pyecharts基础图形的绘制方法。素质目标具备一定的Python数据可视化分析能力。123本章导读在Python数据可视化中,“一图胜万言”这句话得到了充分体现。复杂的数据以可视化图形的方式展示,让你无需费力解读大量数字和表格,一眼就能洞察数据的特征和趋势。例如:《纽约时报》的疫情地图,展示了全球各地新冠疫情的传播情况,通过不同颜色的深浅代表病例数量的多少,直观地呈现了疫情的严重程度和扩散趋势。通过交互操作查看不同国家和地区的具体数据,帮助人们更好地了解疫情动态,为公共卫生决策提供了重要参考。Python作为一种编程语言,提供了丰富的工具和库,可以用于各行业数据可视化。我们可以用Pandas库来读取和处理数据,再使用matplotlib或pyecharts库进行数据可视化。本章将介绍如何分析财务经营数据和各电商平台销售数据等,根据选定的指标和分析方向,绘制相应的可视化图表,通过散点图,柱形图、折线图、饼图以展示不同数据指标的变化。Python数据可视化绘图中最为经典的是Matplotlib工具包,成为Python中应用非常广的绘图工具包之一。Matplotlib中应用最广的是Matplotlib.pyplot模块。pyplot提供了一套和MATLAB类似的绘图API,使得Matplotlib的机制更像MATLAB。我们只需要调用pyplot模块所提供的函数就可以实现快速绘图并设置图表的各个细节。
在Jupyternotebook中进行交互式绘图,需要执行一下语句:%matplotlibnotebook使用matplotlib时,使用的导入惯例为:importmatplotlib.pyplotasplt9.1matplotlib数据可视化9.1matplotlib数据可视化在Matplotlib库中,pyplot模块基本绘图流程主要分为3个部分,如图9-1所示图9-1
pyplot基本绘图流程1.创建画布与创建子图构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,以便于在同一幅图上绘制多个图形。当只需要绘制一幅简单图形时,创建子图这部分内容可以省略。在pyplot模块中创建画布,创建并选中子图的函数如表所示。函数名称函数作用figure用于创建一个空白画布,可以指定画布大小、像素add_subplot用于创建并选中子图,可以指定子图的行数、列数,并选中图片编号2.添加画布添加画布内容是绘图的主体部分,其中添加标题、坐标轴名称、绘制图形等步骤是并列的,没有先后顺序。可以先绘制图形,也可以先添加各类标签。值得注意的是图例只有在绘制图形之后才可进行添加。在pyplot模块中添加各类标签和图例的函数如表所示。函数名称函数作用title用于在当前图形中添加标题xlabel用于在当前图形中添加x轴名称ylabel用于在当前图形中添加y轴名称xlim用于指定当前图形x轴的范围ylim用于指定当前图形y轴的范围legend用于指定当前图形的图例3.保存与显示图形保存和显示图形常用函数如表所示。函数名称函数作用savafig用于保存绘制的图片show用于在本机显示图形pyplot基础语法
为扩展部分
老师可根据情况选择讲解pyplot基础语法1.创建画布与创建子图第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。函数名称函数作用plt.figure创建一个空白画布,可以指定画布大小,像素。figure.add_subplot创建并选中子图,可以指定子图的行数,列数,与选中图片编号。pyplot基础语法importmatplotlib.pyplotaspltimportnumpyasnpdata=np.arange(10)plt.plot(data)绘制的图位于图片(figure)对象中。pyplot基础语法创建子图importmatplotlib.pyplotaspltfig=plt.figure()#不能使用空白的figure绘图,需要创建子图ax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)ax3=fig.add_subplot(2,2,3)pyplot基础语法子图绘制fig=plt.figure()ax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)ax3=fig.add_subplot(2,2,3)ax1.plot([1.5,2,3.5,-1,1.6])pyplot基础语法2.添加画布内容第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。函数名称函数作用plt.title在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数。plt.xlabel在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数。plt.ylabel在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数。plt.xlim指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。plt.ylim指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。plt.xticks指定x轴刻度的数目与取值。plt.yticks指定y轴刻度的数目与取值。plt.legend指定当前图形的图例,可以指定图例的大小、位置、标签。pyplot基础语法importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinedata=np.arange(0,1,0.01)plt.title('mylinesexample')plt.xlabel('X')plt.ylabel('Y')plt.xlim(0,1)plt.ylim(0,1)plt.xticks([0,0.2,0.4,0.6,0.8,1])plt.yticks([0,0.2,0.4,0.6,0.8,1])plt.plot(data,data**2)plt.plot(data,data**3)plt.legend(['y=x^2','y=x^3'])plt.show()pyplot基础语法
Matplotlib的Legend图例就是为了帮助我们展示每个数据对应的图像名称,更好的让读者认识到你的数据结构。关于plt.legend()的说明如下:常用设置示例:plt.legend(loc='best',frameon=False)#去掉图例边框,推荐使用plt.legend(loc='best',edgecolor='blue')#设置图例边框颜色plt.legend(loc='best',facecolor='blue')#设置图例背景颜色,若无边框,参数无效0:’best’1:‘upperright’2:‘upperleft’3:‘lowerleft’4:‘lowerright’5:‘right’6:‘centerleft’7:‘centerright’8:‘lowercenter’9:‘uppercenter’10:‘center’pyplot基础语法
3.保存与显示图形
figure.savefig选项参数描述fname包含文件路径或Python文件型对象的字符串。图片格式是从文件扩展名中推断出来的(例如pdf格式的.pdf)dpi设置每英寸点数的分辨率,默认为100facecolor,edgecolor子图之外的图形背景颜色,默认是’w’(白色)format文件格式(’png’,’pdf’,’svg’,’ps’等)bbox_inches要保存的图片范围,如果设置为‘tight‘则去除图片周围的空白散点图(ScatterDiagram)又称为散点分布图,是以一个特征为横坐标、另一个特征为纵坐标、使用坐标点(散点)的分布形态反映特征间统计关系的一种图形。值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。散点图包含的数据点越多,比较的效果就会越好。scatter方法的格式:matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None)scatter函数主要参数及其说明。参数描述x,y表示x轴和y轴对应的数据s指定点的大小c指定点的颜色marker表示绘制的散点类型alpha表示点的透明度,接收0~1之间的小数9.1.1绘制散点图实例9-1scatter绘图实例。importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlib%matplotlibinlineplt.rcParams['font.family']=['SimHei']
#用来显示中文标签plt.rcParams['axes.unicode_minus']=False
#用来正常显示负号x=np.arange(1,20)y=np.cos(x)lvalue=x#绘制散点图plt.scatter(x,y,c='g',s=100,linewidths=lvalue,marker='o',alpha=0.6)#添加标题plt.title('散点图')
#
添加x轴的名称plt.xlabel('X-axis')#添加y轴的名称plt.ylabel('Y-axis')
plt.show()实例9-2
scatter绘图实例。importpandasaspdimportmatplotlib.pyplotasplt#读取数据frame=pd.read_csv('C:\\temp\\股票数据.csv',encoding='GBK')#绘制散点图plt.scatter(frame['开盘价'],frame['收盘价'],c='r',s=10,alpha=0.6)#添加标题plt.title('股票数据散点图')#添加x轴的名称plt.xlabel('开盘价')
#添加y轴的名称plt.ylabel('收盘价')
plt.show()折线图(LineChart)是一种将数据点按照顺序连接起来的图形,也可以看作是将散点图按照X轴坐标顺序连接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时,还可以看出数量的差异、增长趋势的变化。绘制折线图plot的格式:matplotlib.pyplot.plot(x,y,color=None,linestyle=None,
linewidth=None,
marker=None,alpha=None)plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数及其说明见表9-5。参数描述x,y表示x轴和y轴对应的数据linestyle指定线型样式,有“-”“--”“-.”“:”4种,默认为“-”linewidth指定线条宽度,默认为1.5color指定数据点的颜色marker表示数据点样式,有“o”“D”“h”“.”“*”“s”等alpha表示数据点的透明度,接收0~1之间的小数9.1.2绘制折线图实例9-3plot绘制折线图实例。importmatplotlib.pyplotaspltimportnumpyasnp%matplotlibinlineplt.rcParams['font.family']=['SimHei']#用来显示中文标签plt.rcParams['axes.unicode_minus']=False#用来正常显示负号x=np.arange(30)y1=2*x+9y2=x**2+1#marker数据点样式,linewidth线宽,linestyle线型样式,#color表示颜色plt.plot(x,y1,marker='*',linewidth=1,linestyle='--',color='orange')plt.plot(x,y2)plt.title('plot折线图')plt.xlabel('x',fontsize=15)plt.ylabel('y',fontsize=15)#设置图例plt.legend(['y=2*x+9','y=x**2+1'],loc='upperleft')plt.grid(True)plt.show()实例9-4plot绘制折线图实例。importmatplotlib.pyplotaspltimportpandasaspd%matplotlibinline#设置显示中文字体plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel(
'C:\\temp\\财务数据.xlsx',
#Excel文件路径
sheet_name='运营资产',
#获取'营运资产'工作表的数据
index_col=0,
#把第1列数据设置为索引列
)#绘制折线图plt.plot(df.index,df.应收账款,linestyle='--',marker='*',color='b',linewidth=2)#x轴标签plt.xlabel("年份")#y轴标签plt.ylabel("金额(万)")#图标题plt.title("2018年-2022年应收账款")#显示图例plt.legend(['应收账款'])#保存图片plt.savefig("C:\\temp\\应收账款情况.jpg")plt.show()柱状图(Histogram)由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。用柱状图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。柱状图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。绘制柱状图函数bar的格式:matplotlib.pyplot.bar(left,height,width=0.8,color=None,bottom=None,data=None)函数bar的常用参数及其说明见表9-6。参数描述left表示
X轴数据,无默认height表示每个柱状图的高度width表示每个柱状图的宽度,默认为0.8color表示柱状图颜色bottom表示每个柱状图的底部位置,默认值为None,即表示与x轴距离为0data表示用于绘制的数据集,可以是DataFrame、Series或数组格式的数据9.1.3绘制柱状图实例9-5bar绘制柱状图实例。importmatplotlib.pyplotaspltimportpandasaspd%matplotlibinline#设置显示中文字体plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel(
'C:\\temp\\财务数据.xlsx',
#Excel文件路径
sheet_name='运营资产',
#获取'营运资产'工作表的数据
index_col=0,
#把第1列数据设置为索引列
)#绘制柱状图plt.bar(df.index,df.预付款项,width=0.5)#x轴标签plt.xlabel("年份")#y轴标签plt.ylabel("金额(万元)")#图标题plt.title("2018年-2022年预付款项情况")#显示图例plt.legend(['预付款项'])实例9-6bar绘制多条柱状图实例。importmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnp%matplotlibinline#设置显示中文字体plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel(
'C:\\temp\\财务数据.xlsx',
#Excel文件路径
sheet_name='运营资产',
#获取'营运资产'工作表的数据
index_col=0,
#把第1列数据设置为索引列)#根据index生成一维数组x=np.arange(5)print(x)#柱状图plt.bar(x,df.应收票据,width=0.2)plt.bar(x+0.2,df.应收账款,width=0.2)plt.bar(x+0.2*2,df.预付款项,width=0.2)#x轴标签plt.xlabel("年份")#y轴标签plt.ylabel("金额(万元)")#图标题plt.title("2018年-2022年资产情况")#x轴刻度值
plt.xticks(x,df.index)#显示图例plt.legend(['应收票据','应收账款','预付款项'])plt.show()实例9-7bar绘制堆叠柱状图实例。importmatplotlib.pyplotaspltimportpandasaspd%matplotlibinline#设置显示中文字体plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel(
'C:\\temp\\财务数据.xlsx',
#Excel文件路径
sheet_name='运营资产',
#获取'营运资产'工作表的数据
index_col=0,
#把第1列数据设置为索引列
)#堆叠柱状图plt.bar(df.index,df.应收票据,width=0.5)plt.bar(df.index,df.应收账款,bottom=df.应收票据,width=0.5)plt.bar(df.index,df.预付款项,bottom=df.应收票据+df.应收账款,width=0.5)#x轴标签plt.xlabel("年份")#y轴标签plt.ylabel("金额(万元)")#图标题plt.title("2018年-2022年资产情况")plt.legend(['应收票据','应收账款','预付款项'])plt.show()饼图(PieGraph)用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。绘制饼图pie方法的格式:matplotlib.pyplot.pie(x,explode=None,labels=None,
autopct=None,
pctdistance=0.6,
labeldistance=1.1)pie函数常用参数及其说明见表9-7。参数说明x接收array,表示用于绘制饼图的数据explode控制各个饼块之间的间距,可以指定每个饼块的间距,也可以不指定直接使用默认间距labels接收array,每个饼块的标签autopct接收特定string,指定数值的显示方式pctdistancefloat型,指定每一项的比例和距离饼图圆心n个半径,默认为0.6labeldistanceloat型,指定每一项的名称和距离饼图圆心的半径数,默认为1.19.1.4绘制饼图实例9-8pie绘制饼图实例。importmatplotlib.pyplotaspltimportpandasaspd%matplotlibinline#设置显示中文字体plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel(
'C:\\temp\\财务数据.xlsx',
#Excel文件路径
sheet_name='运营资产',
#获取'营运资产'工作表的数据
index_col=0,
#把第1列数据设置为索引列
)#创建画布,将画布设定为正方形,则绘制的饼图是正圆plt.figure(figsize=(6,6))
#提取数据的columns字段,视为数据的标签name=df.columns
#提取2020年的values字段,数据的存在位置values=df.loc['2020年']
#控制分离的距离的,默认饼图不分离explode=[0.02,0.02,0.02,0.02,0.02]
#绘制饼图plt.pie(values,explode=explode,labels=name,autopct='%1.2f%%',labeldistance=1.1)#图标题plt.title("2020年各资产数据情况")plt.show()9.2matplotlib数据可视化pyecharts主要基于Web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、仪表盘、地图及极坐标图等。使用pyecharts绘图代码量很少,而且绘制出来的图形较美观。使用pyecharts时,需要安装相应的库,安装命令为:pipinstallpyechartspyecharts提供了一些全局配置和系列配置选项,用于控制图表的外观和行为。全局配置通过set_global_opts()方法进行设置,可以修改图表的默认配置,例如主题、自动调整大小、宽度和高度等。系列配置通过set_series_opts()方法进行设置,用于控制每个系列(series)的图表样式和数据,例如线条样式、柱状图颜色、标签格式等。pyecharts模块配置文档具体使用可从官方网站查阅学习(/#/zh-cn/)。pyecharts模块有很多配置选项,常用的全局配置项有以下几种,如图9-10所示:初始化配置项(InitOpts)标题配置项(TitleOpts)图例配置项(LegendOpts)工具箱配置项(ToolboxOpts)视觉映射配置项(VisualMapOpts)提示框配置项(TooltipOpts)区域缩放配置项(DataZoomOpts)图9-10常见全局配置项系列配置项共包含18项配置内容,主要偏重于可视化过程中的图像细节把控和调整。常用的系列配置项有如下几种:LabelOpts:标签配置项LineStyleOpts:线样式配置项TextStyleOpts:文字样式配置项MarkPointOpts:标记点配置项(设置标记点相关)MarkLineOpts:标记线配置项(设置标记线相关)使用Bar函数可以绘制柱状图。Bar函数的常用方法及说明见表9-8。方法说明add_xaxis()加入
X轴参数add_yaxis()加入
Y轴参数,可以设置Y轴参数,也可在全局设置中设置set_global_opts全局配置设置set_series_opts系列配置设置实例9-9Bar绘制柱状图实例。#V1版本开始支持链式调用frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts%matplotlibinlinebar=(
Bar()
.add_xaxis(['华为','小米','三星','苹果','荣耀','OPPO','VIVO']).add_yaxis('平台A',[3200,321,413,1986,674,793,1070]).set_global_opts(title_opts=opts.TitleOpts(title='平台A销售情况柱形图')))bar.render_notebook()#bar.render()生产html9.2.1绘制柱状图pyecharts从V1版本开始支持链式调用,不习惯链式调用的依旧可以单独调用方法,代码可以写为:
#单独调用方法frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts%matplotlibinlinebar=Bar()bar.add_xaxis(['华为','小米','三星','苹果','荣耀','OPPO','VIVO'])bar.add_yaxis('平台A',[3200,321,413,1986,674,793,1070])bar.set_global_opts(title_opts=opts.TitleOpts(title='平台A销售情况柱形图'))bar.render_notebook()程序运行结果如图所示。实例9-10Bar绘制多个柱状图实例。#使用多个add_yaxis可以绘制并列柱状图frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts%matplotlibinlinebar=Bar()bar.add_xaxis(['华为','小米','三星','苹果','荣耀','OPPO','VIVO'])bar.add_yaxis('平台A',[3200,321,413,1986,674,793,1070])bar.add_yaxis('平台B',[800,140,153,345,800,900,540])bar.set_global_opts(title_opts=opts.TitleOpts(title='平台A和平台B销售情况'))bar.render_notebook()程序运行结果如图所示。实例9-11Bar绘制堆叠柱状图实例。frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts%matplotlibinlinebar=Bar()bar.add_xaxis(['华为','小米','三星','苹果','荣耀','OPPO','VIVO'])bar.add_yaxis('平台A',[3200,321,413,1986,674,793,1070],stack='stack1',
label_opts=opts.LabelOpts(position='insideTop'))bar.add_yaxis('平台B',[800,140,153,345,800,900,540],stack='stack1',
label_opts=opts.LabelOpts(position='insideTop'))bar.set_global_opts(title_opts=opts.TitleOpts(title='平台A和平台B销售情况叠状图'))bar.render_notebook()程序运行结果如图所示。实例9-12Bar绘制水平直方图实例。frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts%matplotlibinlinebar=Bar()bar.add_xaxis(['华为','小米','三星','苹果','荣耀','OPPO','VIVO'])bar.add_yaxis('平台A',[3200,321,413,1986,674,793,1070])bar.add_yaxis('平台B',[800,140,153,345,800,900,540])#toolbox_opts工具箱选项,允许用户交互式操作图表,例如保存图表、切换图表等bar.set_global_opts(title_opts=opts.TitleOpts(title='平台A和平台B销售情况'),toolbox_opts=opts.ToolboxOpts(is_show=True))bar.set_series_opts(label_opts=opts.LabelOpts(position='right'))bar.reversal_axis()#绘制水平直方图bar.render_notebook()程序运行结果如图所示。饼图常用于表现不同类别的占比情况。使用Pie方法可以绘制饼图。实例9-13Pie绘制饼图实例。frompyecharts.chartsimportPiefrompyechartsimportoptionsasopts%matplotlibinlinelabels=['华为','小米','三星','苹果','荣耀','OPPO','VIVO']data=[800,140,153,345,800,900,540]pie=Pie()pie.add('',[list(z)forzinzip(labels,data)])pie.set_global_opts(title_opts=opts.TitleOpts(title='平台B销售情况饼图'))pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}({d}%)'))pie.render_notebook()
程序运行结果如图所示。9.2.2绘制饼图在pie.add的方法中,参数radius用于设置饼图半径
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 329.3-2021重点单位重要部位安全技术防范系统要求第3部分:金融机构
- DB31/ 850-2014挤拉截工艺成型轴流风机能效限定值及能效等级
- 2024年真空管太阳热水器资金需求报告代可行性研究报告
- 故事代替道理:《不迎合不将就》
- 数据库监控与管理系统中的高效实践试题及答案
- 团队创造力激发的领导策略技巧试题及答案
- 行动学习在领导力培养中的应用试题及答案
- 2025年中国鳊鲂行业市场前景预测及投资价值评估分析报告
- 跨境电商开源软件贡献者协议
- 跨国医疗培训注射泵租赁及安装协议
- 入伍面试问题回答范文
- 泪道手术护理配合
- 老年骨病课件
- 老旧小区电力安全改造方案
- 中华人民共和国农村集体经济组织法
- 2024房屋外墙保温施工合同范本
- 颂钵疗愈师培训
- 律师事务所律师事务所风险管理手册
- 中华传统文化之文学瑰宝学习通超星期末考试答案章节答案2024年
- DB34∕T 4410-2023 灿型水稻苗期耐热性鉴定技术规程
- 水利水电工程施工(CB)、监理(JL)表格大全
评论
0/150
提交评论