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

下载本文档

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

文档简介

项目五:—Plotly应用(用户画像数据可视化)目录CONTENTS绘制直方图和饼图绘制面积图、子图与坐标轴图形思考与练习项目概述学习目标Plotly绘制柱状图绘制散点图和线形图形1项目概述继Matplotlib、Pyecharts之后,本项目介绍Plotly绘图库。与Matplotlib和Pyecharts相比,Plotly与Pyecharts都可实现非常炫酷的绘图效果,也具有它独有的特点。Plotly在基本图表、地图、3D图表、多子图、动画效果、交互控件等方面都非常优秀,是功能非常全面的绘图包,学习和使用Plotly是非常有必要的。本项目融合Plotly基础知识与综合绘图与一体,着重介绍Plotly常用图表的绘制,并结合综合应用对所学内容进行练习,熟练掌握本项目内容。本项目具体工作如下:1.Plotly简介;2.Plotly绘图模块graph_objs和express;3.Plotly常用图表绘制。项目概述2学习目标任务目标现如今Plotly在国内的用户量并不是十分庞大,但是Plotly丰富的功能和精美的图表,在大数据可视化众多包中表现出色,相比Matplotlib具有更精美的图表,相对Pyecharts具有更强的交互性,并且绘制出的交互式图表更易共享。通过本项目的学习,了解Plotly并掌握Plotly安装与入门使用、Plotly常用图表绘制、Plotly绘制多图等,具备Plotly大数据可视化的基本技能,拓展大数据专业素养。3Plotly绘制柱状图任务描述本任务学习的是Plotly在2016年增加的Python接口,使得更多的Python用户可以使用Plotly绘制图表,而不需要花费大量精力学习JavaScript等知识。通过对Plotly简介、特点、安装入门、基本用法进行讲解与实践,初步了解Plotly并展现Plotly绘图风格,激发学习大数据可视化课程的兴趣与积极性。通过学习本任务内容,掌握Plotly两种绘图模块的入门操作以及柱状图、层叠柱状图、并列柱状图、水平柱状图、连续颜色柱状图等图形绘制,掌握柱状图主要参数含义,深入理解Plotly两种绘图模块绘图步骤与原理,并通过练习题将所学知识巩固应用。知识与技能Plotly的基础图表目前有19种,包括散点图、线形图、柱状图、饼图、泡沫图、点状图、填充面积图、水平条形图、甘特图、旭日图、表、桑基图、树形图等;16种统计图表,21种科学图表,8种财务图表,13种地图,13种3D图表,6种人工智能和机器学习图表,4种生物信息学图表,除此之外还提供了很多其他图表,随着Plotly的不断升级与发展,以及需求的不断增加,会出现越来越多的图表格式供用户使用。Plotly是使用plotly.js制作的,支持多种语言,如R、MATLAB、Python、JavaScript、F#等,目前,Python发展迅猛,并且已经超过Java,成为最热的语言,在大数据、数据分析、人工智能、数据挖掘等领域均有涉及,故本书介绍Plotly的PythonAPI接口。Plotly既有Matplotlib的稳定和灵活,也有Pyecharts具有的精致与优雅,可以生成图片文件,也可以生成HTML文件,能够将绘制好的交互式图表分享给他人,同样也支持3D图表,分享的交互式图表是JavaScript脚本,所有的图表、互动、动画等都是Python调用函数生成的、一、Plotly简介知识与技能Plotly常用的绘图模块有两个,graph_objs和express,我们将随机使用这两个绘图模块进行绘图,逐步掌握Plotly。graph_objs的绘图原理:1.导包2.读取数据3.定义图形轨迹4.形成轨迹列表5.添加图形参数6.显示图形express的绘图原理较为简单,在使用express调用方法时,自动创建画布绘图,然后展示图表即可。二、绘图模块graph_objs和express知识与技能express是Plotly为了简化繁琐的绘图步骤推出的简化接口,通常简称为px。px是Plotly.py的高级封装,内置了非常多的绘图模板,只需简单调用API就可以迅速的绘制精致、美观、交互的图表。plotly.graph_objs通常简称为go,一般称为“低级”接口,同样非常优秀。本任务中,我们既有graph_objs绘图方法实例,也有express绘图方法实例。这里主要介绍express相关函数和参数,express模块内置了大量的图表类型。三、Plotly绘图形类型知识与技能三、Plotly绘图形类型名称功能express.scatter散点图express.scatter_3d三维散点图express.scatter_polar极坐标散点图express.scatter_ternary三元散点图express.scatter_mapbox地图散点图express.scatter_geo地理坐标散点图express.line折线图express.line_3d三维线形图express.line_polar极坐标线形图express.line_ternary三元线形图express.line_mapbox地图线形图express.line_geo地理坐标线形图express.area堆积区域图express.bar柱状图express.timeline时间轴图express.bar_polar极坐标条形图express.violin小提琴图express.box箱型图express.strip长条图express.histogram直方图知识与技能三、Plotly绘图形类型名称功能express.ecdf经验累积分布函数图express.scatter_matrix矩阵散点图express.parallel_coordinates平行坐标图express.parallel_categories平行类别图express.choropleth等高区域地图express.density_

contour密度等值线图express.density_heatmap密度热力图express.pie饼图express.sunburst旭日图express.treemap树形图express.icicle冰柱图express.funnel漏斗图express.funnel_area漏斗区域图express.choropleth_mapbox分级统计图express.density_mapbox密度地图使用express.bar绘制柱状图,bar方法可以传入很多参数,如表5-2所示:知识与技能任务实施第一步:安装pipinstallplotly5.1.1

Plotly安装任务实施5.1.1Plotly安装第二步:查看版本号

pipshowplotly任务实施5.1.2

Plotly绘制普通柱状图我们分别使用graph_objs和express模块绘柱状图为例,来熟悉Plotly绘图流程,这里用农业塑料薄膜使用量数据来做演示。方式一、graph_objs绘制柱状图第一步:导入包并加载数据#导包importpandasaspdimportnumpyasnpimportplotly.expressaspximportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#当浏览器不支持渲染当前图时,可以用下列代码选择支持浏览器版本#importplotly.ioaspio#pio.renderers.default='browser'#加载数据#create_engine(‘dialect+driver://username:password@host:port/database’)engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_plastic'''df=pd.read_sql(sql1,engine)任务实施5.1.2Plotly绘制普通柱状图#柱状图用Bartrace=go.Bar(x=df["时间"],y=df["农用塑料薄膜使用量(吨)"])data=[trace]layout=go.Layout(title='农林牧渔',barmode='stack',font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",#y轴方向相对位置

yanchor="bottom",

y=-0.2,

xanchor="center",

x=0.5,

title_text=''))#更新x坐标轴fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年农林牧渔业总产值",

'y':0.9,

'x':0.5

})fig.show()任务实施绘图效果如下:5.1.2Plotly绘制普通柱状图任务实施5.1.2Plotly绘制普通柱状图方式二、express绘制柱状图importpandasaspdimportnumpyasnpimportplotly.expressaspximportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_plastic'''df=pd.read_sql(sql1,engine)第一步:导包并加载数据第二步:绘图并设置画布#柱状图fig=px.bar(df,x=df["时间"],y=df["农用塑料薄膜使用量(吨)"])fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.2,

xanchor="center",

x=0.5,

title_text=''))任务实施5.1.2Plotly绘制普通柱状图第三步:更新画布并显示图形fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2019年农用塑料薄膜使用量",

'y':0.95,

'x':0.5

})fig.show()任务实施5.1.3 Plotly绘制层叠柱状图我们使用graph_objs模块来绘制层叠柱状图时,需要将layout中的barmode参数值设为stack,即barmode='stack',这里选用农林牧渔产值数据做演示。importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_nlmy'''df=pd.read_sql(sql1,engine)第一步:导包加载数据任务实施5.1.3 Plotly绘制层叠柱状图trace0=go.Bar(x=df["year"],y=df["ny"],name="农业总产值")trace1=go.Bar(x=df["year"],y=df["ly"],name="林业总产值")trace2=go.Bar(x=df["year"],y=df["my"],name="牧业总产值")trace3=go.Bar(x=df["year"],y=df["yy"],name="渔业总产值")data=[trace0,trace1,trace2,trace3]#stack层叠柱状图layout=go.Layout(title='农林牧渔',barmode='stack',font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.2,

xanchor="center",

x=0.5,

title_text=''))第二步:绘图任务实施5.1.3 Plotly绘制层叠柱状图fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年农林牧渔业总产值",

'y':0.9,

'x':0.5})fig.show()第三步:更新轴并绘图任务实施5.1.4 Plotly绘制并列柱状图第一步:导包加载数据并创建trace#导包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#读取数据engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_fruits'''df=pd.read_sql(sql1,engine)#定义trace任务实施5.1.4 Plotly绘制并列柱状图#定义tracetrace0=go.Bar(x=df["year"],y=df["gy"],name="果园面积")trace1=go.Bar(x=df["year"],y=df["xj"],name="香蕉园面积")trace2=go.Bar(x=df["year"],y=df["pg"],name="苹果园面积")trace3=go.Bar(x=df["year"],y=df["gj"],name="柑橘园面积")trace4=go.Bar(x=df["year"],y=df["ly"],name="梨园面积")trace5=go.Bar(x=df["year"],y=df["pt"],name="葡萄园面积")#把trace放到一个列表data=[trace0,trace1,trace2,trace3,trace4,trace5]#设置布局并显示图形#barmode=’group’是簇状柱状图,也为并列柱状图layout=go.Layout(title='果园面积',barmode='group',font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))第二步:绘图任务实施5.1.4 Plotly绘制并列柱状图第三步:更新轴并绘图fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2019年果园面积",

'y':0.9,

'x':0.5

})fig.show()任务实施5.1.5 Plotly绘制水平柱状图我们绘制水平柱状图时,需要在柱状图函数中设置参数orientation='h',即px.bar(oritention=“h”)或者go.Bar(oritention="h),本实例选用使用graph_objs模块来绘制水平柱状图。#导包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#读取数据#读取数据

engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')

sql1='''select*from2_tea'''

df=pd.read_sql(sql1,engine)

#定义trace

#orientation=’h’为水平

trace0=go.Bar(x=df["产量"],y=df["茶叶种类"],orientation='h')第一步:导包并定义trace任务实施5.1.5 Plotly绘制水平柱状图第二步:绘制图形#创建trace列表layout=go.Layout(title='茶叶产量(千克)',font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(orientation="h",yanchor="bottom",y=-0.4,xanchor="center",x=0.5,title_text=''))任务实施5.1.5 Plotly绘制水平柱状图第三步:更新画布并显示图形fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年茶园面积",

'y':0.9,

'x':0.5

})fig.show()任务总结通过本任务的学习,我们了解了Plotly相关基础知识、初步掌握Plotly两种绘图模块的使用、绘制了柱状图、并列柱状图、层叠柱状图等,对涉及的参数有了一定了解。本任务的重点是使用两种绘图模块进行绘图,以及定制化绘制柱状图,难点在于两种绘图模块绘制柱状图参数的选择,定制化对不同数据绘图的学习与灵活运用,可以通过练习题进行掌握与提升、课外学习更多Plotly知识加深和拓宽知识储备。基于本任务的成果,对于Plotly绘制图形的原理有了一定的了解与练习,为后续学习做好了铺垫,通过案例更好的理解了Plotly绘图原理。4绘制散点图和线形图形任务描述本任务学习的是Plotly的两个绘图模块,使用两个模块绘制散点图与折线图,此任务引用农业年度数据,对数据进行散点图与折线图展示。通过学习本任务内容,达到让学生初步了解Plotly的express和graph_objs目的,展现Plotly绘图风格与绘图原理,从而掌握Plotly的两个模块绘图方法、Plotly两个模块绘制散点图与线形图的区别、掌握Plotly绘制散点图、指定散点图颜色、大小的方法,掌握分类轴散点图、误差线图、边缘分布图、连接的散点图、气泡散点图、线形图及综合两个模块绘制线形图和散点图的方法,并通过练习题将所学知识巩固应用。知识与技能一、express绘图模块的散点图和线形图plotly.express.scatter

plotly.express.scatter_3d

plotly.express.scatter_polar

plotly.express.scatter_ternary

plotly.express.scatter_mapbox

plotly.express.scatter_geo

plotly.express.line

plotly.express.line_3d

plotly.express.line_polar

plotly.express.line_ternary

plotly.express.line_mapbox

plotly.express.line_geoexpress模块的线形图和散点图是不同的函数,且函数众多,如:知识与技能一、express绘图模块的散点图和线形图对于plotly.graph_objs来说,线形图和散点图所用函数为同一个,plotly.graph_objs没有独立的线形图或者散点图函数,线形图和散点图全部使用Scatter绘制,以下plotly.graph_objs简称go。plotly.graph_objs.Figure函数用来绘图,此函数可以传入data、layout等参数,data[]内存放一条条图形轨迹,如:trace0=go.Scatter(…)

trace1=go.Scatter(…)使用时为:data=data[trace0,trace1]

fig=go.Figure(data)知识与技能一、express绘图模块的散点图和线形图layout参数有很多包括x轴、y轴、注释、滚动条、颜色、线型、标题等Figure的更新非常灵活函数来进行更新。使用plotly.graph_objs.Scatter绘制散点图和线形图主要有以下参数:connectgaps:布尔变量,用于连接缺失数据dx:x轴的步进值error_x:x数据误差值error_y:y数据误差值fillcolor:填充颜色fill:填充模式hoverinfo:指针悬停显示信息hoveron:指针悬停显示模式legendgroup:图例参数line:线条参数marker:数据节点参数mode:图形格式name:名称opacity:透明度参数xaxys:x坐标数据yaxis:y坐标数据5.2.1Plotly绘制普通散点图任务实施方式一、graph_objs绘制散点图第一步:导包和定义trace#导包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#读取数据engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_nlmy'''df=pd.read_sql(sql1,engine)#定义trace#mode=’markers’为散点图trace0=go.Scatter(x=df["year"],y=df["ny"],name="农业总产值",mode='markers')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林业总产值",mode='markers')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧业总产值",mode='markers')trace3=go.Scatter(x=df["year"],y=df["yy"],name="渔业总产值",mode='markers')5.2.1Plotly绘制普通散点图任务实施方式一、graph_objs绘制散点图#创建trace列表data=[trace0,trace1,trace2,trace3]#设置布局并显示图形layout=go.Layout(font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))第二步骤:绘制图形第三步骤:更新轴并显示图形fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年农林牧渔业总产值趋势图",

'y':0.9,

'x':0.5

})fig.show()5.2.1Plotly绘制普通散点图任务实施程序运行结果如图所示:任务实施我们使用express模块来绘制链接的散点图。第一步:导包并加载数据#导包importpandasaspdimportnumpyasnpimportplotly.expressaspximportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")

engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*fromdieselandpesticides_1'''df=pd.read_sql(sql1,engine)

fig=px.line(df,x="year",y="count",color="target",text="count")fig.update_traces(textposition="bottomright")5.2.2

Plotly绘制连接散点图5.2.2Plotly绘制连接散点图任务实施第二步:绘制图形并展示结果fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年到2019年农业柴油与农药消耗量走势图",

'y':0.95,

'x':0.5

})fig.show()任务实施程序运行结果:5.2.2Plotly绘制连接散点图5.2.3Plotly绘制气泡散点图任务实施气泡散点图是也是一种散点图。这种散点图和普通散点图的不同之处在于:它会引入第三方维度,即标记markers的大小来进行展示。在Plotly中散点的大小是通过size参数来设置。importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")

engine=sql.create_engine('mysql+pymysql://root:123456@localhost:3306/bdv')sql1='''select*from1_dieselandpesticides'''df=pd.read_sql(sql1,engine)第一步:导包并加载数据5.2.3Plotly绘制气泡散点图任务实施trace0=go.Scatter(

x=df["year"],

y=df["Diesel"],

mode='markers',

marker=dict(size=[10,20,30,40,50,60,70,80],

color=[1,2,3,4,5,6,7,8]))trace1=go.Scatter(

x=df["year"],

y=df["pesticides"],

mode='markers',

marker=dict(size=[10,20,30,40,50,60,70,80],

color=[8,7,6,5,4,3,2,1]))

data=[trace0,trace1]layout=go.Layout(font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''第二步:设置参数并绘图5.2.3Plotly绘制气泡散点图任务实施第三步:更新布局并显示图形))fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年到2019年农业柴油与农药消耗量图",

'y':0.95,

'x':0.5

})fig.show()5.2.4Plotly绘制普通线形图任务实施我们通过graph_objs模块中的Scatter()函数来绘制线型图,关键是通过正确的模式,需要设置参数mode='lines'。importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")

engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_nlmy'''df=pd.read_sql(sql1,engine)第一步:导入包并加载数据5.2.4Plotly绘制普通线形图任务实施第二步:定义trace并设置布局trace0=go.Scatter(x=df["year"],y=df["ny"],name="农业总产值",mode='lines')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林业总产值",mode='lines')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧业总产值",mode='lines')trace3=go.Scatter(x=df["year"],y=df["yy"],name="渔业总产值",mode='lines')

data=[trace0,trace1,trace2,trace3]

layout=go.Layout(font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))5.2.4Plotly绘制普通线形图任务实施第三步:更新布局并显示结果fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年农林牧渔业总产值趋势图",

'y':0.9,

'x':0.5

})fig.show()5.2.5Plotly绘制线形和散点复合图任务实施下面我们利用.graph_objs绘制线性和散点的复合图形。第一步:导入包并加载数据importplotlyaspyimportplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")

engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_nlmy'''df=pd.read_sql(sql1,engine)5.2.5Plotly绘制线形和散点复合图任务实施trace0=go.Scatter(x=df["year"],y=df["ny"],name="农业总产值",mode='markers')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林业总产值",mode='lines+markers')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧业总产值",mode='lines+markers')trace3=go.Scatter(x=df["year"],y=df["yy"],name="渔业总产值",mode='lines+markers')

data=[trace0,trace1,trace2,trace3]layout=go.Layout(font={'size':22})fig=go.Figure(data=data,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))第二步骤:定义trace并设置布局5.2.5Plotly绘制线形和散点复合图任务实施第三步骤:更新布局并显示图形fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"2012年~2021年农林牧渔业总产值趋势图",

'y':0.9,

'x':0.5

})fig.show()5.2.6Plotly绘制普通散点图任务实施*知识拓展*express包与graph_objs可结合使用,express参数不在此单独提供。graph_objs部分参数见表所示。参数名称参数解释x,yx,y轴数据error_x、error_yx、y轴fillcplor填充颜色fill填充模式hoverinfo悬停鼠标信息legendgroup图例参数line线条参数marker数据节点参数mode图形格式name名称参数5.2.6Plotly绘制普通散点图任务总结通过本任务的学习,了解了Plotly的相关基础知识、初步掌握Plotly两种绘图模块的使用、绘制了散点图、连接的散点图、气泡散点图、线形图、线形和散点的复合图,对涉及的参数有了一定了解。本任务的重点是使用两种绘图模块绘制散点图和线形图,难点在于两种绘图模块绘制线形图和散点图参数的掌握,定制化对不同数据绘图的学习与灵活运用,可以通过练习题进行掌握与提升、课外学习更多Plotly知识加深和拓宽知识储备。基于本任务的成果,对于Plotly绘制图形的原理有了更进一定的了解,为后续学习做好了铺垫,通过案例更好的理解了Plotly绘图原理。5绘制直方图和饼图任务描述本任务是对Plotly两个绘图模块知识的巩固与加深,使用两个绘图模块进行绘制直方图和饼图,引用农业数据,对数据进行直方图和饼图的展示。通过学习本任务内容,达到让学生初步逐步掌握Plotly的express和graph_objs的目的,熟悉Plotly绘图风格和原理,逐步加深对Plolty的理解与使用。掌握Plotly两种绘图模块绘图原理与绘图方法,掌握两个绘图模块绘制直方图与水平直方图的方法,掌握Plotly绘制层叠直方图、绘制重叠直方图、分类数据直方图、水平直方图、累积直方图、环形饼图、旭日图的方法,掌握如何设置饼状图颜色、掌握两个模块绘制直方图和饼图的主要参数,并通过练习题将所学知识巩固应用。一、express绘图模块的直方图和饼图知识与技能express模块的直方图使用histogram函数进行绘制,该函数具有参数众多,在此介绍部分,如:data_frame=None,x=None,y=None,color=None,pattern_shape=None,facet_row=None,facet_col=None,facet_col_wrap=0,facet_row_spacing=None,facet_col_spacing=None,hover_name=None,hover_data=None,animation_frame=None,animation_group=None,category_orders=None,labels=None,color_discrete_sequence=None,color_discrete_map=None,pattern_shape_sequence=None,pattern_shape_map=None,marginal=None,opacity=None,orientation=None,barmode='relative',barnorm=None,histnorm=None,log_x=False,log_y=False,range_x=None,range_y=None,histfunc=None,cumulative=None,nbins=None,text_auto=False,title=None,template=None,width=None,height=None1.pattern_shape:用于为标记分配图案形状。2.facet_row:用于在垂直方向上为分面子图分配标记。3.facet_col:用于在水平方向上为分面子图分配标记。4.hover_name:用于设置悬停指针提示,data_frame中的列的名称。5.hover_data:传入的参数的值在悬停工具提示中作为额外数据显示。6.animation_frame:用于给动画帧分配标记。知识与技能7.animation_group:用于提供动画帧的对象稳定性。8.category_orders:用于强制每个列的值的特定顺序。9.labels:在图中用于设置轴标题、图例条目和悬停。10.color_discrete_sequence:当设置了color并且对应列中的值不是数值时,该列中的值将按照category_orders中描述的顺序通过循环遍历color_discretete_sequence来分配颜色,除非color的值是color_discretete_map中的键。11.color_discrete_map:用于覆盖color_discrete_sequence,为与特定值相对应的标记分配特定的颜色。12.marginal:用于在主图旁绘制一个副图。13.opacity:值在0-1之间,用于设置标记的透明度。14.orientation:设置图形的方向,有v和h两个可选参数,v表示垂直显示,h表示水平显示。知识与技能15.barmode:有'group','overlay','relative'三种取值,用于设置直方图显示模式。16.barnorm:条形图参数。17.log_x:如果为True,则x轴在笛卡尔坐标中是对数缩放的。18.log_y:如果为True,则y轴在笛卡尔坐标中是对数缩放的。19.range_x:如果提供,则覆盖笛卡尔坐标中x轴上的自动缩放。20.range_y:如果提供,则覆盖直角坐标y轴上的自动缩放。21.text_auto:如果是True或字符串,则x、y或z值将显示为文本,这取决于字符串的方向。22.title:图像标题。23.template:图形模板名称知识与技能使用pie函数绘制饼图plotly.express.pieplotly.express.pie

参数有:data_frame=None,names=None,values=None,color=None,facet_row=None,facet_col=None,facet_col_wrap=0,facet_row_spacing=None,facet_col_spacing=None,color_discrete_sequence=None,color_discrete_map=None,hover_name=None,hover_data=None,custom_data=None,category_orders=None,labels=None,title=None,template=None,width=None,height=None,opacity=None,hole=None)1、color:用于为标记分配颜色。2、facet_row:用于在垂直方向上为分面子图分配标记。3、facet_col:用于在水平方向上为分面子图分配标记。4、hover_name:参数的值在悬停工具提示中以粗体显示。5、hover_data:悬停工具中作为额外数据显示。6、labels:文本标签。7、hole:设置要切出饼图的半径的百分比。二、plotly.graph_objs绘图模块的直方图和饼图知识与技能plotly.graph_objs的直方图使用Histogram绘制:plotly.graph_objects.Histogram

主要参数有:arg=None,alignmentgroup=None,autobinx=None,autobiny=None,bingroup=None,cliponaxis=None,constraintext=None,cumulative=None,customdata=None,customdatasrc=None,error_x=None,error_y=None,histfunc=None,histnorm=None,hoverinfo=None,hoverinfosrc=None,hoverlabel=None,hovertemplate=None,hovertemplatesrc=None,hovertext=None,hovertextsrc=None,ids=None,idssrc=None,insidetextanchor=None,insidetextfont=None,legendgroup=None,legendgrouptitle=None,legendrank=None,legendwidth=None,marker=None,meta=None,metasrc=None,name=None,nbinsx=None,nbinsy=None,offsetgroup=None,opacity=None,orientation=None,outsidetextfont=None,selected=None,selectedpoints=None,showlegend=None,stream=None,text=None,textangle=None,textfont=None,textposition=None,textsrc=None,texttemplate=None,uid=None,uirevision=None,unselected=None,visible=None,x=None,xaxis=None,xbins=None,xcalendar=None,xhoverformat=None,xsrc=None,y=None,yaxis=None,ybins=None,ycalendar=None,yhoverformat=None,ysrc=None,**kwargs知识与技能二、plotly.graph_objs绘图模块的直方图和饼图1.cliponaxis:确定文本节点是否围绕子图轴被剪切。要显示轴线和标记以上的文本节点,请确保设置xaxis。2.constraintext:将直方图内或外的文本大小限制为不大于它本身。3.customdata:为每个数据分配额外的数据。当监听悬停、点击和选择事件时,这可能很有用。4.histfunc:指定用于此直方图跟踪的分组函数。可选参数有count、sum、avg、min、max。5.hoverinfo当用户与图表交互时,鼠标指针显示的参数。6.hoverlabel:悬停标签。7.hovertemplate:用于呈现悬停框上出现的信息的模板字符串。8.ids:为每个数据分配id标签。9.insidetextfont:设置位于栏内的文本所使用的字体。上述函数参数说明:知识与技能二、plotly.graph_objs绘图模块的直方图和饼图上述函数参数说明:10.legendgroup:为trace设置图例组。11.legendrank:设置此trace的图例级别,排名较小的物品和组被显示在顶部/左侧,同时带有“反转”的图例。12.legendwidth:设置此trace的图例的宽度。13.name:设置trace名称。trace名称显示为图例项并悬停。14.opacity:设置trace的透明度。15.orientation:图形显示方向参数,包括:v(垂直模式)和h(水平模式)。16.outsidetextfont:设置位于图形外的文本所使用的字体。17.showlegend:确定图例中是否显示与此trace相对应的项。知识与技能plotly.graph_objs的饼图使用Pie绘制:二、plotly.graph_objs绘图模块的直方图和饼图plotly.graph_objects.Pieplotly.graph_objects.Pie

主要参数有:arg=None,automargin=None,customdata=None,customdatasrc=None,direction=None,dlabel=None,domain=None,hole=None,hoverinfo=None,hoverinfosrc=None,hoverlabel=None,hovertemplate=None,hovertemplatesrc=None,hovertext=None,hovertextsrc=None,ids=None,idssrc=None,insidetextfont=None,insidetextorientation=None,label0=None,labels=None,labelssrc=None,legendgroup=None,legendgrouptitle=None,legendrank=None,legendwidth=None,marker=None,meta=None,metasrc=None,name=None,opacity=None,outsidetextfont=None,pull=None,pullsrc=None,rotation=None,scalegroup=None,showlegend=None,sort=None,stream=None,text=None,textfont=None,textinfo=None,textposition=None,textpositionsrc=None,textsrc=None,texttemplate=None,texttemplatesrc=None,title=None,titlefont=None,titleposition=None,uid=None,uirevision=None,values=None,valuessrc=None,visible=None,**kwargs知识与技能arg:可选,直方图的数据。可以是一维数组或Series。如果指定了values参数,则arg会被忽略。automargin:布尔型,可选,是否自动调整图表边距以适应标签、标题等。默认为None,表示不自动调整。customdata:可选,自定义数据数组。长度应与x或y相同。这些数据可以用于在事件处理程序中自定义悬停文本等。customdatasrc:可选,自定义数据数组的源。direction:可选,直方图的方向。支持"vertical"(垂直)和"horizontal"(水平)两种。默认为"vertical"。dlabel:可选,指定是否在图例中显示每个直方条的标签。domain:可选,指定直方图所占区域的位置和大小。格式为{'x':[0,0.5],'y':[0,1]},表示直方图占据整个图表区域的左半部分。hole:可选,中心空洞的半径。值为0-1之间的小数,其中0表示没有空洞,1表示完全空洞。默认为0。hoverinfo:可选,指定鼠标悬停时显示的信息。支持多种格式,如"%"表示百分数,".2f"表示保留2位小数。默认为"x+y",表示显示x和y值。知识与技能hoverlabel:可选,指定悬停标签的样式。例如,可以设置字体大小、颜色等。hovertemplate:可选,指定鼠标悬停时显示的模板。可以包含文本和变量。例如,"{x:.2f}-{y}"表示x的值保留两位小数,后面跟着一个短横线和y值。hovertemplatesrc:可选,hovertemplate的源。hovertext:可选,指定鼠标悬停时显示的文本。长度应与x或y相同。如果指定了hovertemplate,则忽略hovertext。hovertextsrc:可选,hovertext的源。ids:可选,用于绑定事件处理程序的ID数组。idssrc:可选,ids的源。insidetextfont:可选,直方图内部文本的字体样式。insidetextorientation:可选,直方图内部文本的方向。支持"horizontal"和"radial"两种。默认为"horizontal"。label0:可选,指定x或y轴的起始标签。当数据是离散型时,可以用这个参数来控制标签的起始位置。labels:可选,指定x或y轴上的标签。如果数据是离散型,则应该指定这个参数。知识与技能labelssrc:可选,labels的源。legendgroup:可选,指定图例分组。指定相同的值会将图例项分组到同一组中。legendgrouptitle:可选,指定图例分组的标题。legendrank:可选,指定图例项的排名。legendwidth:可选,指定图例的宽度。默认为0,表示自适应。marker:可选,直方条的标记样式。meta:可选,指定元数据数组。长度应与x或y相同。metasrc:可选,meta的源。name:可选,直方图的名称。opacity:可选,直方条的不透明度。取值范围为0-1,其中0表示完全透明,1表示完全不透明。默认为1。outsidetextfont:可选,直方图外部文本的字体样式。pull:可选,指定每个直方条的偏移量。取值范围为0-1,其中0表示不偏移,1表示完全偏移。默认为0。pullsrc:可选,pull的源。知识与技能rotation:可选,文本旋转角度。支持0-360度之间的任意角度。scalegroup:可选,指定比例尺分组。showlegend:可选,是否显示图例。默认为True。sort:可选,是否对数据进行排序。默认为True。stream:可选,用于流动数据的对象。text:可选,直方条的标签文本。长度应与x或y相同。textfont:可选,直方条的标签字体样式。textinfo:可选,指定直方条的标签显示内容。例如,"value"表示显示数值,"percent"表示显示百分比。textposition:可选,直方条的标签位置。支持"inside"(内部)和"outside"(外部)两种。默认为"inside"。textpositionsrc:可选,textposition的源。textsrc:可选,text的源。知识与技能texttemplate:可选,直方条的标签模板。可以使用变量和格式化字符串。例如,"{x:.2f}-{y}"表示x的值保留两位小数,后面跟着一个短横线和y值。texttemplatesrc:可选,texttemplate的源。title:可选,直方图的标题。titlefont:可选,直方图的标题字体样式。titleposition:可选,指定标题的位置。支

温馨提示

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

评论

0/150

提交评论