大數(shù)據(jù)可視化 課件 項目5、6 Plotly應(yīng)用、Plotly實戰(zhàn)_第1頁
大數(shù)據(jù)可視化 課件 項目5、6 Plotly應(yīng)用、Plotly實戰(zhàn)_第2頁
大數(shù)據(jù)可視化 課件 項目5、6 Plotly應(yīng)用、Plotly實戰(zhàn)_第3頁
大數(shù)據(jù)可視化 課件 項目5、6 Plotly應(yīng)用、Plotly實戰(zhàn)_第4頁
大數(shù)據(jù)可視化 課件 項目5、6 Plotly應(yīng)用、Plotly實戰(zhàn)_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

項目五:—Plotly應(yīng)用(用戶畫像數(shù)據(jù)可視化)目錄CONTENTS繪制直方圖和餅圖繪制面積圖、子圖與坐標(biāo)軸圖形思考與練習(xí)項目概述學(xué)習(xí)目標(biāo)Plotly繪制柱狀圖繪制散點圖和線形圖形1項目概述繼Matplotlib、Pyecharts之后,本項目介紹Plotly繪圖庫。與Matplotlib和Pyecharts相比,Plotly與Pyecharts都可實現(xiàn)非常炫酷的繪圖效果,也具有它獨有的特點。Plotly在基本圖表、地圖、3D圖表、多子圖、動畫效果、交互控件等方面都非常優(yōu)秀,是功能非常全面的繪圖包,學(xué)習(xí)和使用Plotly是非常有必要的。本項目融合Plotly基礎(chǔ)知識與綜合繪圖與一體,著重介紹Plotly常用圖表的繪制,并結(jié)合綜合應(yīng)用對所學(xué)內(nèi)容進行練習(xí),熟練掌握本項目內(nèi)容。本項目具體工作如下:1.Plotly簡介;2.Plotly繪圖模塊graph_objs和express;3.Plotly常用圖表繪制。項目概述2學(xué)習(xí)目標(biāo)任務(wù)目標(biāo)現(xiàn)如今Plotly在國內(nèi)的用戶量并不是十分龐大,但是Plotly豐富的功能和精美的圖表,在大數(shù)據(jù)可視化眾多包中表現(xiàn)出色,相比Matplotlib具有更精美的圖表,相對Pyecharts具有更強的交互性,并且繪制出的交互式圖表更易共享。通過本項目的學(xué)習(xí),了解Plotly并掌握Plotly安裝與入門使用、Plotly常用圖表繪制、Plotly繪制多圖等,具備Plotly大數(shù)據(jù)可視化的基本技能,拓展大數(shù)據(jù)專業(yè)素養(yǎng)。3Plotly繪制柱狀圖任務(wù)描述本任務(wù)學(xué)習(xí)的是Plotly在2016年增加的Python接口,使得更多的Python用戶可以使用Plotly繪制圖表,而不需要花費大量精力學(xué)習(xí)JavaScript等知識。通過對Plotly簡介、特點、安裝入門、基本用法進行講解與實踐,初步了解Plotly并展現(xiàn)Plotly繪圖風(fēng)格,激發(fā)學(xué)習(xí)大數(shù)據(jù)可視化課程的興趣與積極性。通過學(xué)習(xí)本任務(wù)內(nèi)容,掌握Plotly兩種繪圖模塊的入門操作以及柱狀圖、層疊柱狀圖、并列柱狀圖、水平柱狀圖、連續(xù)顏色柱狀圖等圖形繪制,掌握柱狀圖主要參數(shù)含義,深入理解Plotly兩種繪圖模塊繪圖步驟與原理,并通過練習(xí)題將所學(xué)知識鞏固應(yīng)用。知識與技能Plotly的基礎(chǔ)圖表目前有19種,包括散點圖、線形圖、柱狀圖、餅圖、泡沫圖、點狀圖、填充面積圖、水平條形圖、甘特圖、旭日圖、表、?;鶊D、樹形圖等;16種統(tǒng)計圖表,21種科學(xué)圖表,8種財務(wù)圖表,13種地圖,13種3D圖表,6種人工智能和機器學(xué)習(xí)圖表,4種生物信息學(xué)圖表,除此之外還提供了很多其他圖表,隨著Plotly的不斷升級與發(fā)展,以及需求的不斷增加,會出現(xiàn)越來越多的圖表格式供用戶使用。Plotly是使用plotly.js制作的,支持多種語言,如R、MATLAB、Python、JavaScript、F#等,目前,Python發(fā)展迅猛,并且已經(jīng)超過Java,成為最熱的語言,在大數(shù)據(jù)、數(shù)據(jù)分析、人工智能、數(shù)據(jù)挖掘等領(lǐng)域均有涉及,故本書介紹Plotly的PythonAPI接口。Plotly既有Matplotlib的穩(wěn)定和靈活,也有Pyecharts具有的精致與優(yōu)雅,可以生成圖片文件,也可以生成HTML文件,能夠?qū)⒗L制好的交互式圖表分享給他人,同樣也支持3D圖表,分享的交互式圖表是JavaScript腳本,所有的圖表、互動、動畫等都是Python調(diào)用函數(shù)生成的、一、Plotly簡介知識與技能Plotly常用的繪圖模塊有兩個,graph_objs和express,我們將隨機使用這兩個繪圖模塊進行繪圖,逐步掌握Plotly。graph_objs的繪圖原理:1.導(dǎo)包2.讀取數(shù)據(jù)3.定義圖形軌跡4.形成軌跡列表5.添加圖形參數(shù)6.顯示圖形express的繪圖原理較為簡單,在使用express調(diào)用方法時,自動創(chuàng)建畫布繪圖,然后展示圖表即可。二、繪圖模塊graph_objs和express知識與技能express是Plotly為了簡化繁瑣的繪圖步驟推出的簡化接口,通常簡稱為px。px是Plotly.py的高級封裝,內(nèi)置了非常多的繪圖模板,只需簡單調(diào)用API就可以迅速的繪制精致、美觀、交互的圖表。plotly.graph_objs通常簡稱為go,一般稱為“低級”接口,同樣非常優(yōu)秀。本任務(wù)中,我們既有g(shù)raph_objs繪圖方法實例,也有express繪圖方法實例。這里主要介紹express相關(guān)函數(shù)和參數(shù),express模塊內(nèi)置了大量的圖表類型。三、Plotly繪圖形類型知識與技能三、Plotly繪圖形類型名稱功能express.scatter散點圖express.scatter_3d三維散點圖express.scatter_polar極坐標(biāo)散點圖express.scatter_ternary三元散點圖express.scatter_mapbox地圖散點圖express.scatter_geo地理坐標(biāo)散點圖express.line折線圖express.line_3d三維線形圖express.line_polar極坐標(biāo)線形圖express.line_ternary三元線形圖express.line_mapbox地圖線形圖express.line_geo地理坐標(biāo)線形圖express.area堆積區(qū)域圖express.bar柱狀圖express.timeline時間軸圖express.bar_polar極坐標(biāo)條形圖express.violin小提琴圖express.box箱型圖express.strip長條圖express.histogram直方圖知識與技能三、Plotly繪圖形類型名稱功能express.ecdf經(jīng)驗累積分布函數(shù)圖express.scatter_matrix矩陣散點圖express.parallel_coordinates平行坐標(biāo)圖express.parallel_categories平行類別圖express.choropleth等高區(qū)域地圖express.density_

contour密度等值線圖express.density_heatmap密度熱力圖express.pie餅圖express.sunburst旭日圖express.treemap樹形圖express.icicle冰柱圖express.funnel漏斗圖express.funnel_area漏斗區(qū)域圖express.choropleth_mapbox分級統(tǒng)計圖express.density_mapbox密度地圖使用express.bar繪制柱狀圖,bar方法可以傳入很多參數(shù),如表5-2所示:知識與技能任務(wù)實施第一步:安裝pipinstallplotly5.1.1

Plotly安裝任務(wù)實施5.1.1Plotly安裝第二步:查看版本號

pipshowplotly任務(wù)實施5.1.2

Plotly繪制普通柱狀圖我們分別使用graph_objs和express模塊繪柱狀圖為例,來熟悉Plotly繪圖流程,這里用農(nóng)業(yè)塑料薄膜使用量數(shù)據(jù)來做演示。方式一、graph_objs繪制柱狀圖第一步:導(dǎo)入包并加載數(shù)據(jù)#導(dǎo)包importpandasaspdimportnumpyasnpimportplotly.expressaspximportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#當(dāng)瀏覽器不支持渲染當(dāng)前圖時,可以用下列代碼選擇支持瀏覽器版本#importplotly.ioaspio#pio.renderers.default='browser'#加載數(shù)據(jù)#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)任務(wù)實施5.1.2Plotly繪制普通柱狀圖#柱狀圖用Bartrace=go.Bar(x=df["時間"],y=df["農(nóng)用塑料薄膜使用量(噸)"])data=[trace]layout=go.Layout(title='農(nóng)林牧漁',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坐標(biāo)軸fig.update_xaxes(

side='bottom',

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

side='left',

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

title={

'text':"2012年~2021年農(nóng)林牧漁業(yè)總產(chǎn)值",

'y':0.9,

'x':0.5

})fig.show()任務(wù)實施繪圖效果如下:5.1.2Plotly繪制普通柱狀圖任務(wù)實施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)第一步:導(dǎo)包并加載數(shù)據(jù)第二步:繪圖并設(shè)置畫布#柱狀圖fig=px.bar(df,x=df["時間"],y=df["農(nóng)用塑料薄膜使用量(噸)"])fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.2,

xanchor="center",

x=0.5,

title_text=''))任務(wù)實施5.1.2Plotly繪制普通柱狀圖第三步:更新畫布并顯示圖形fig.update_xaxes(

side='bottom',

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

side='left',

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

title={

'text':"2012年~2019年農(nóng)用塑料薄膜使用量",

'y':0.95,

'x':0.5

})fig.show()任務(wù)實施5.1.3 Plotly繪制層疊柱狀圖我們使用graph_objs模塊來繪制層疊柱狀圖時,需要將layout中的barmode參數(shù)值設(shè)為stack,即barmode='stack',這里選用農(nóng)林牧漁產(chǎn)值數(shù)據(jù)做演示。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)第一步:導(dǎo)包加載數(shù)據(jù)任務(wù)實施5.1.3 Plotly繪制層疊柱狀圖trace0=go.Bar(x=df["year"],y=df["ny"],name="農(nóng)業(yè)總產(chǎn)值")trace1=go.Bar(x=df["year"],y=df["ly"],name="林業(yè)總產(chǎn)值")trace2=go.Bar(x=df["year"],y=df["my"],name="牧業(yè)總產(chǎn)值")trace3=go.Bar(x=df["year"],y=df["yy"],name="漁業(yè)總產(chǎn)值")data=[trace0,trace1,trace2,trace3]#stack層疊柱狀圖layout=go.Layout(title='農(nóng)林牧漁',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=''))第二步:繪圖任務(wù)實施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年農(nóng)林牧漁業(yè)總產(chǎn)值",

'y':0.9,

'x':0.5})fig.show()第三步:更新軸并繪圖任務(wù)實施5.1.4 Plotly繪制并列柱狀圖第一步:導(dǎo)包加載數(shù)據(jù)并創(chuàng)建trace#導(dǎo)包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#讀取數(shù)據(jù)engine=sql.create_engine('mysql+pymysql://root:root@localhost:3306/bdv')sql1='''select*from1_fruits'''df=pd.read_sql(sql1,engine)#定義trace任務(wù)實施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]#設(shè)置布局并顯示圖形#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=''))第二步:繪圖任務(wù)實施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()任務(wù)實施5.1.5 Plotly繪制水平柱狀圖我們繪制水平柱狀圖時,需要在柱狀圖函數(shù)中設(shè)置參數(shù)orientation='h',即px.bar(oritention=“h”)或者go.Bar(oritention="h),本實例選用使用graph_objs模塊來繪制水平柱狀圖。#導(dǎo)包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#讀取數(shù)據(jù)#讀取數(shù)據(jù)

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["產(chǎn)量"],y=df["茶葉種類"],orientation='h')第一步:導(dǎo)包并定義trace任務(wù)實施5.1.5 Plotly繪制水平柱狀圖第二步:繪制圖形#創(chuàng)建trace列表layout=go.Layout(title='茶葉產(chǎn)量(千克)',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=''))任務(wù)實施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()任務(wù)總結(jié)通過本任務(wù)的學(xué)習(xí),我們了解了Plotly相關(guān)基礎(chǔ)知識、初步掌握Plotly兩種繪圖模塊的使用、繪制了柱狀圖、并列柱狀圖、層疊柱狀圖等,對涉及的參數(shù)有了一定了解。本任務(wù)的重點是使用兩種繪圖模塊進行繪圖,以及定制化繪制柱狀圖,難點在于兩種繪圖模塊繪制柱狀圖參數(shù)的選擇,定制化對不同數(shù)據(jù)繪圖的學(xué)習(xí)與靈活運用,可以通過練習(xí)題進行掌握與提升、課外學(xué)習(xí)更多Plotly知識加深和拓寬知識儲備?;诒救蝿?wù)的成果,對于Plotly繪制圖形的原理有了一定的了解與練習(xí),為后續(xù)學(xué)習(xí)做好了鋪墊,通過案例更好的理解了Plotly繪圖原理。4繪制散點圖和線形圖形任務(wù)描述本任務(wù)學(xué)習(xí)的是Plotly的兩個繪圖模塊,使用兩個模塊繪制散點圖與折線圖,此任務(wù)引用農(nóng)業(yè)年度數(shù)據(jù),對數(shù)據(jù)進行散點圖與折線圖展示。通過學(xué)習(xí)本任務(wù)內(nèi)容,達(dá)到讓學(xué)生初步了解Plotly的express和graph_objs目的,展現(xiàn)Plotly繪圖風(fēng)格與繪圖原理,從而掌握Plotly的兩個模塊繪圖方法、Plotly兩個模塊繪制散點圖與線形圖的區(qū)別、掌握Plotly繪制散點圖、指定散點圖顏色、大小的方法,掌握分類軸散點圖、誤差線圖、邊緣分布圖、連接的散點圖、氣泡散點圖、線形圖及綜合兩個模塊繪制線形圖和散點圖的方法,并通過練習(xí)題將所學(xué)知識鞏固應(yīng)用。知識與技能一、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模塊的線形圖和散點圖是不同的函數(shù),且函數(shù)眾多,如:知識與技能一、express繪圖模塊的散點圖和線形圖對于plotly.graph_objs來說,線形圖和散點圖所用函數(shù)為同一個,plotly.graph_objs沒有獨立的線形圖或者散點圖函數(shù),線形圖和散點圖全部使用Scatter繪制,以下plotly.graph_objs簡稱go。plotly.graph_objs.Figure函數(shù)用來繪圖,此函數(shù)可以傳入data、layout等參數(shù),data[]內(nèi)存放一條條圖形軌跡,如:trace0=go.Scatter(…)

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

fig=go.Figure(data)知識與技能一、express繪圖模塊的散點圖和線形圖layout參數(shù)有很多包括x軸、y軸、注釋、滾動條、顏色、線型、標(biāo)題等Figure的更新非常靈活函數(shù)來進行更新。使用plotly.graph_objs.Scatter繪制散點圖和線形圖主要有以下參數(shù):connectgaps:布爾變量,用于連接缺失數(shù)據(jù)dx:x軸的步進值error_x:x數(shù)據(jù)誤差值error_y:y數(shù)據(jù)誤差值fillcolor:填充顏色fill:填充模式hoverinfo:指針懸停顯示信息hoveron:指針懸停顯示模式legendgroup:圖例參數(shù)line:線條參數(shù)marker:數(shù)據(jù)節(jié)點參數(shù)mode:圖形格式name:名稱opacity:透明度參數(shù)xaxys:x坐標(biāo)數(shù)據(jù)yaxis:y坐標(biāo)數(shù)據(jù)5.2.1Plotly繪制普通散點圖任務(wù)實施方式一、graph_objs繪制散點圖第一步:導(dǎo)包和定義trace#導(dǎo)包importplotly.graph_objsasgoimportpandasaspdimportnumpyasnpimportpymysqlimportsqlalchemyassqlimportwarningswarnings.filterwarnings("ignore")#讀取數(shù)據(jù)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="農(nóng)業(yè)總產(chǎn)值",mode='markers')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林業(yè)總產(chǎn)值",mode='markers')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧業(yè)總產(chǎn)值",mode='markers')trace3=go.Scatter(x=df["year"],y=df["yy"],name="漁業(yè)總產(chǎn)值",mode='markers')5.2.1Plotly繪制普通散點圖任務(wù)實施方式一、graph_objs繪制散點圖#創(chuàng)建trace列表data=[trace0,trace1,trace2,trace3]#設(shè)置布局并顯示圖形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年農(nóng)林牧漁業(yè)總產(chǎn)值趨勢圖",

'y':0.9,

'x':0.5

})fig.show()5.2.1Plotly繪制普通散點圖任務(wù)實施程序運行結(jié)果如圖所示:任務(wù)實施我們使用express模塊來繪制鏈接的散點圖。第一步:導(dǎo)包并加載數(shù)據(jù)#導(dǎo)包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繪制連接散點圖任務(wù)實施第二步:繪制圖形并展示結(jié)果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年農(nóng)業(yè)柴油與農(nóng)藥消耗量走勢圖",

'y':0.95,

'x':0.5

})fig.show()任務(wù)實施程序運行結(jié)果:5.2.2Plotly繪制連接散點圖5.2.3Plotly繪制氣泡散點圖任務(wù)實施氣泡散點圖是也是一種散點圖。這種散點圖和普通散點圖的不同之處在于:它會引入第三方維度,即標(biāo)記markers的大小來進行展示。在Plotly中散點的大小是通過size參數(shù)來設(shè)置。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)第一步:導(dǎo)包并加載數(shù)據(jù)5.2.3Plotly繪制氣泡散點圖任務(wù)實施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=''第二步:設(shè)置參數(shù)并繪圖5.2.3Plotly繪制氣泡散點圖任務(wù)實施第三步:更新布局并顯示圖形))fig.update_xaxes(

side='bottom',

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

side='left',

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

title={

'text':"2012年到2019年農(nóng)業(yè)柴油與農(nóng)藥消耗量圖",

'y':0.95,

'x':0.5

})fig.show()5.2.4Plotly繪制普通線形圖任務(wù)實施我們通過graph_objs模塊中的Scatter()函數(shù)來繪制線型圖,關(guān)鍵是通過正確的模式,需要設(shè)置參數(shù)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)第一步:導(dǎo)入包并加載數(shù)據(jù)5.2.4Plotly繪制普通線形圖任務(wù)實施第二步:定義trace并設(shè)置布局trace0=go.Scatter(x=df["year"],y=df["ny"],name="農(nóng)業(yè)總產(chǎn)值",mode='lines')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林業(yè)總產(chǎn)值",mode='lines')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧業(yè)總產(chǎn)值",mode='lines')trace3=go.Scatter(x=df["year"],y=df["yy"],name="漁業(yè)總產(chǎn)值",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繪制普通線形圖任務(wù)實施第三步:更新布局并顯示結(jié)果fig.update_xaxes(

side='bottom',

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

side='left',

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

title={

'text':"2012年~2021年農(nóng)林牧漁業(yè)總產(chǎn)值趨勢圖",

'y':0.9,

'x':0.5

})fig.show()5.2.5Plotly繪制線形和散點復(fù)合圖任務(wù)實施下面我們利用.graph_objs繪制線性和散點的復(fù)合圖形。第一步:導(dǎo)入包并加載數(shù)據(jù)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繪制線形和散點復(fù)合圖任務(wù)實施trace0=go.Scatter(x=df["year"],y=df["ny"],name="農(nóng)業(yè)總產(chǎn)值",mode='markers')trace1=go.Scatter(x=df["year"],y=df["ly"],name="林業(yè)總產(chǎn)值",mode='lines+markers')trace2=go.Scatter(x=df["year"],y=df["my"],name="牧業(yè)總產(chǎn)值",mode='lines+markers')trace3=go.Scatter(x=df["year"],y=df["yy"],name="漁業(yè)總產(chǎn)值",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并設(shè)置布局5.2.5Plotly繪制線形和散點復(fù)合圖任務(wù)實施第三步驟:更新布局并顯示圖形fig.update_xaxes(

side='bottom',

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

side='left',

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

title={

'text':"2012年~2021年農(nóng)林牧漁業(yè)總產(chǎn)值趨勢圖",

'y':0.9,

'x':0.5

})fig.show()5.2.6Plotly繪制普通散點圖任務(wù)實施*知識拓展*express包與graph_objs可結(jié)合使用,express參數(shù)不在此單獨提供。graph_objs部分參數(shù)見表所示。參數(shù)名稱參數(shù)解釋x,yx,y軸數(shù)據(jù)error_x、error_yx、y軸fillcplor填充顏色fill填充模式hoverinfo懸停鼠標(biāo)信息legendgroup圖例參數(shù)line線條參數(shù)marker數(shù)據(jù)節(jié)點參數(shù)mode圖形格式name名稱參數(shù)5.2.6Plotly繪制普通散點圖任務(wù)總結(jié)通過本任務(wù)的學(xué)習(xí),了解了Plotly的相關(guān)基礎(chǔ)知識、初步掌握Plotly兩種繪圖模塊的使用、繪制了散點圖、連接的散點圖、氣泡散點圖、線形圖、線形和散點的復(fù)合圖,對涉及的參數(shù)有了一定了解。本任務(wù)的重點是使用兩種繪圖模塊繪制散點圖和線形圖,難點在于兩種繪圖模塊繪制線形圖和散點圖參數(shù)的掌握,定制化對不同數(shù)據(jù)繪圖的學(xué)習(xí)與靈活運用,可以通過練習(xí)題進行掌握與提升、課外學(xué)習(xí)更多Plotly知識加深和拓寬知識儲備?;诒救蝿?wù)的成果,對于Plotly繪制圖形的原理有了更進一定的了解,為后續(xù)學(xué)習(xí)做好了鋪墊,通過案例更好的理解了Plotly繪圖原理。5繪制直方圖和餅圖任務(wù)描述本任務(wù)是對Plotly兩個繪圖模塊知識的鞏固與加深,使用兩個繪圖模塊進行繪制直方圖和餅圖,引用農(nóng)業(yè)數(shù)據(jù),對數(shù)據(jù)進行直方圖和餅圖的展示。通過學(xué)習(xí)本任務(wù)內(nèi)容,達(dá)到讓學(xué)生初步逐步掌握Plotly的express和graph_objs的目的,熟悉Plotly繪圖風(fēng)格和原理,逐步加深對Plolty的理解與使用。掌握Plotly兩種繪圖模塊繪圖原理與繪圖方法,掌握兩個繪圖模塊繪制直方圖與水平直方圖的方法,掌握Plotly繪制層疊直方圖、繪制重疊直方圖、分類數(shù)據(jù)直方圖、水平直方圖、累積直方圖、環(huán)形餅圖、旭日圖的方法,掌握如何設(shè)置餅狀圖顏色、掌握兩個模塊繪制直方圖和餅圖的主要參數(shù),并通過練習(xí)題將所學(xué)知識鞏固應(yīng)用。一、express繪圖模塊的直方圖和餅圖知識與技能express模塊的直方圖使用histogram函數(shù)進行繪制,該函數(shù)具有參數(shù)眾多,在此介紹部分,如: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:用于為標(biāo)記分配圖案形狀。2.facet_row:用于在垂直方向上為分面子圖分配標(biāo)記。3.facet_col:用于在水平方向上為分面子圖分配標(biāo)記。4.hover_name:用于設(shè)置懸停指針提示,data_frame中的列的名稱。5.hover_data:傳入的參數(shù)的值在懸停工具提示中作為額外數(shù)據(jù)顯示。6.animation_frame:用于給動畫幀分配標(biāo)記。知識與技能7.animation_group:用于提供動畫幀的對象穩(wěn)定性。8.category_orders:用于強制每個列的值的特定順序。9.labels:在圖中用于設(shè)置軸標(biāo)題、圖例條目和懸停。10.color_discrete_sequence:當(dāng)設(shè)置了color并且對應(yīng)列中的值不是數(shù)值時,該列中的值將按照category_orders中描述的順序通過循環(huán)遍歷color_discretete_sequence來分配顏色,除非color的值是color_discretete_map中的鍵。11.color_discrete_map:用于覆蓋color_discrete_sequence,為與特定值相對應(yīng)的標(biāo)記分配特定的顏色。12.marginal:用于在主圖旁繪制一個副圖。13.opacity:值在0-1之間,用于設(shè)置標(biāo)記的透明度。14.orientation:設(shè)置圖形的方向,有v和h兩個可選參數(shù),v表示垂直顯示,h表示水平顯示。知識與技能15.barmode:有'group','overlay','relative'三種取值,用于設(shè)置直方圖顯示模式。16.barnorm:條形圖參數(shù)。17.log_x:如果為True,則x軸在笛卡爾坐標(biāo)中是對數(shù)縮放的。18.log_y:如果為True,則y軸在笛卡爾坐標(biāo)中是對數(shù)縮放的。19.range_x:如果提供,則覆蓋笛卡爾坐標(biāo)中x軸上的自動縮放。20.range_y:如果提供,則覆蓋直角坐標(biāo)y軸上的自動縮放。21.text_auto:如果是True或字符串,則x、y或z值將顯示為文本,這取決于字符串的方向。22.title:圖像標(biāo)題。23.template:圖形模板名稱知識與技能使用pie函數(shù)繪制餅圖plotly.express.pieplotly.express.pie

參數(shù)有: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:用于為標(biāo)記分配顏色。2、facet_row:用于在垂直方向上為分面子圖分配標(biāo)記。3、facet_col:用于在水平方向上為分面子圖分配標(biāo)記。4、hover_name:參數(shù)的值在懸停工具提示中以粗體顯示。5、hover_data:懸停工具中作為額外數(shù)據(jù)顯示。6、labels:文本標(biāo)簽。7、hole:設(shè)置要切出餅圖的半徑的百分比。二、plotly.graph_objs繪圖模塊的直方圖和餅圖知識與技能plotly.graph_objs的直方圖使用Histogram繪制:plotly.graph_objects.Histogram

主要參數(shù)有: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:確定文本節(jié)點是否圍繞子圖軸被剪切。要顯示軸線和標(biāo)記以上的文本節(jié)點,請確保設(shè)置xaxis。2.constraintext:將直方圖內(nèi)或外的文本大小限制為不大于它本身。3.customdata:為每個數(shù)據(jù)分配額外的數(shù)據(jù)。當(dāng)監(jiān)聽?wèi)彝!Ⅻc擊和選擇事件時,這可能很有用。4.histfunc:指定用于此直方圖跟蹤的分組函數(shù)。可選參數(shù)有count、sum、avg、min、max。5.hoverinfo當(dāng)用戶與圖表交互時,鼠標(biāo)指針顯示的參數(shù)。6.hoverlabel:懸停標(biāo)簽。7.hovertemplate:用于呈現(xiàn)懸??蛏铣霈F(xiàn)的信息的模板字符串。8.ids:為每個數(shù)據(jù)分配id標(biāo)簽。9.insidetextfont:設(shè)置位于欄內(nèi)的文本所使用的字體。上述函數(shù)參數(shù)說明:知識與技能二、plotly.graph_objs繪圖模塊的直方圖和餅圖上述函數(shù)參數(shù)說明:10.legendgroup:為trace設(shè)置圖例組。11.legendrank:設(shè)置此trace的圖例級別,排名較小的物品和組被顯示在頂部/左側(cè),同時帶有“反轉(zhuǎn)”的圖例。12.legendwidth:設(shè)置此trace的圖例的寬度。13.name:設(shè)置trace名稱。trace名稱顯示為圖例項并懸停。14.opacity:設(shè)置trace的透明度。15.orientation:圖形顯示方向參數(shù),包括:v(垂直模式)和h(水平模式)。16.outsidetextfont:設(shè)置位于圖形外的文本所使用的字體。17.showlegend:確定圖例中是否顯示與此trace相對應(yīng)的項。知識與技能plotly.graph_objs的餅圖使用Pie繪制:二、plotly.graph_objs繪圖模塊的直方圖和餅圖plotly.graph_objects.Pieplotly.graph_objects.Pie

主要參數(shù)有: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:可選,直方圖的數(shù)據(jù)??梢允且痪S數(shù)組或Series。如果指定了values參數(shù),則arg會被忽略。automargin:布爾型,可選,是否自動調(diào)整圖表邊距以適應(yīng)標(biāo)簽、標(biāo)題等。默認(rèn)為None,表示不自動調(diào)整。customdata:可選,自定義數(shù)據(jù)數(shù)組。長度應(yīng)與x或y相同。這些數(shù)據(jù)可以用于在事件處理程序中自定義懸停文本等。customdatasrc:可選,自定義數(shù)據(jù)數(shù)組的源。direction:可選,直方圖的方向。支持"vertical"(垂直)和"horizontal"(水平)兩種。默認(rèn)為"vertical"。dlabel:可選,指定是否在圖例中顯示每個直方條的標(biāo)簽。domain:可選,指定直方圖所占區(qū)域的位置和大小。格式為{'x':[0,0.5],'y':[0,1]},表示直方圖占據(jù)整個圖表區(qū)域的左半部分。hole:可選,中心空洞的半徑。值為0-1之間的小數(shù),其中0表示沒有空洞,1表示完全空洞。默認(rèn)為0。hoverinfo:可選,指定鼠標(biāo)懸停時顯示的信息。支持多種格式,如"%"表示百分?jǐn)?shù),".2f"表示保留2位小數(shù)。默認(rèn)為"x+y",表示顯示x和y值。知識與技能hoverlabel:可選,指定懸停標(biāo)簽的樣式。例如,可以設(shè)置字體大小、顏色等。hovertemplate:可選,指定鼠標(biāo)懸停時顯示的模板。可以包含文本和變量。例如,"{x:.2f}-{y}"表示x的值保留兩位小數(shù),后面跟著一個短橫線和y值。hovertemplatesrc:可選,hovertemplate的源。hovertext:可選,指定鼠標(biāo)懸停時顯示的文本。長度應(yīng)與x或y相同。如果指定了hovertemplate,則忽略hovertext。hovertextsrc:可選,hovertext的源。ids:可選,用于綁定事件處理程序的ID數(shù)組。idssrc:可選,ids的源。insidetextfont:可選,直方圖內(nèi)部文本的字體樣式。insidetextorientation:可選,直方圖內(nèi)部文本的方向。支持"horizontal"和"radial"兩種。默認(rèn)為"horizontal"。label0:可選,指定x或y軸的起始標(biāo)簽。當(dāng)數(shù)據(jù)是離散型時,可以用這個參數(shù)來控制標(biāo)簽的起始位置。labels:可選,指定x或y軸上的標(biāo)簽。如果數(shù)據(jù)是離散型,則應(yīng)該指定這個參數(shù)。知識與技能labelssrc:可選,labels的源。legendgroup:可選,指定圖例分組。指定相同的值會將圖例項分組到同一組中。legendgrouptitle:可選,指定圖例分組的標(biāo)題。legendrank:可選,指定圖例項的排名。legendwidth:可選,指定圖例的寬度。默認(rèn)為0,表示自適應(yīng)。marker:可選,直方條的標(biāo)記樣式。meta:可選,指定元數(shù)據(jù)數(shù)組。長度應(yīng)與x或y相同。metasrc:可選,meta的源。name:可選,直方圖的名稱。opacity:可選,直方條的不透明度。取值范圍為0-1,其中0表示完全透明,1表示完全不透明。默認(rèn)為1。outsidetextfont:可選,直方圖外部文本的字體樣式。pull:可選,指定每個直方條的偏移量。取值范圍為0-1,其中0表示不偏移,1表示完全偏移。默認(rèn)為0。pullsrc:可選,pull的源。知識與技能rotation:可選,文本旋轉(zhuǎn)角度。支持0-360度之間的任意角度。scalegroup:可選,指定比例尺分組。showlegend:可選,是否顯示圖例。默認(rèn)為True。sort:可選,是否對數(shù)據(jù)進行排序。默認(rèn)為True。stream:可選,用于流動數(shù)據(jù)的對象。text:可選,直方條的標(biāo)簽文本。長度應(yīng)與x或y相同。textfont:可選,直方條的標(biāo)簽字體樣式。textinfo:可選,指定直方條的標(biāo)簽顯示內(nèi)容。例如,"value"表示顯示數(shù)值,"percent"表示顯示百分比。textposition:可選,直方條的標(biāo)簽位置。支持"inside"(內(nèi)部)和"outside"(外部)兩種。默認(rèn)為"inside"。textpositionsrc:可選,textposition的源。textsrc:可選,text的源。知識與技能texttemplate:可選,直方條的標(biāo)簽?zāi)0???梢允褂米兞亢透袷交址?。例如?{x:.2f}-{y}"表示x的值保留兩位小數(shù),后面跟著一個短橫線和y值。texttemplatesrc:可選,texttemplate的源。title:可選,直方圖的標(biāo)題。titlefont:可選,直方圖的標(biāo)題字體樣式。titleposition:可選,指定標(biāo)題的位置。支

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論