Python數(shù)據(jù)可視化編程指南_第1頁
Python數(shù)據(jù)可視化編程指南_第2頁
Python數(shù)據(jù)可視化編程指南_第3頁
Python數(shù)據(jù)可視化編程指南_第4頁
Python數(shù)據(jù)可視化編程指南_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 Python 數(shù)據(jù)可視化編程指南01 前言Python 數(shù)據(jù)可視化利器,Bokeh、pyecharts 的用法,本文增加了 Plotly 的部分教程。02 推薦數(shù)據(jù)可視化的庫有挺多的,這里推薦幾個比較常用的:MatplotlibPlotlySeabornGgplotBokehPyechartPygal03 PlotlyPlotly 文檔地址:https:/plot.ly/python/#financial-charts使用方式:Plotly 有 online 和 offline 兩種方式,這里只介紹 offline 的。這是 Plotly 官方教程的一部分importplotly.plotl

2、yaspyimportnumpyasnpdata=dict(visible=False,line=dict(color=#00CED1,width=6),#配置線寬和顏色name=+str(step),x=np.arange(0,10,0.01),#x軸參數(shù)y=np.sin(step*np.arange(0,10,0.01)forstepinnp.arange(0,5,0.1)#y軸參數(shù)data10visible=Truepy.iplot(data,filename=SingleSineWave)只要將最后一行中的py.iplot替換為下面代碼py.offline.plot便可以運行。漏斗圖這

3、個圖代碼太長了,就不 po 出來了。Basic Box Plotimportplotly.plotlyimportplotly.graph_objsasgoimportnumpyasnpy0=np.random.randn(50)-1y1=np.random.randn(50)+1trace0=go.Box(y=y0)trace1=go.Box(y=y1)data=trace0,trace1plotly.offline.plot(data)Wind Rose Chartimportplotly.graph_objsasgotrace1=go.Barpolar(r=77.5,72.5,70.0,

4、45.0,22.5,42.5,40.0,62.5,text=North,N-E,East,S-E,South,S-W,West,N-W,name=11-14m/s,marker=dict(color=rgb(106,81,163)trace2=go.Barpolar(r=57.49999999999999,50.0,45.0,35.0,20.0,22.5,37.5,55.00000000000001,text=North,N-E,East,S-E,South,S-W,West,N-W,#鼠標浮動標簽文字描述name=8-11m/s,marker=dict(color=rgb(158,154,2

5、00)trace3=go.Barpolar(r=40.0,30.0,30.0,35.0,7.5,7.5,32.5,40.0,text=North,N-E,East,S-E,South,S-W,West,N-W,name=5-8m/s,marker=dict(color=rgb(203,201,226)trace4=go.Barpolar(r=20.0,7.5,15.0,22.5,2.5,2.5,12.5,22.5,text=North,N-E,East,S-E,South,S-W,West,N-W,name=5m/s,marker=dict(color=rgb(242,240,247)data

6、=trace1,trace2,trace3,trace4layout=go.Layout(title=WindSpeedDistributioninLaurel,NE,font=dict(size=16),legend=dict(font=dict(size=16),radialaxis=dict(ticksuffix=%),orientation=270)fig=go.Figure(data=data,layout=layout)plotly.offline.plot(fig,filename=polar-area-chart)Basic Ternary Plot with Markers篇

7、幅有點長,這里就不 po 代碼了。04 Bokeh這里展示一下常用的圖表和比較搶眼的圖表,詳細的文檔可查看。條形圖這配色看著還挺舒服的,比 pyecharts 條形圖的配色好看一點。frombokeh.ioimportshow,output_filefrombokeh.modelsimportColumnDataSourcefrombokeh.palettesimportSpectral6frombokeh.plottingimportfigureoutput_file(colormapped_bars.html)#配置輸出文件名fruits=Apples,魅族,OPPO,VIVO,小米,華為

8、#數(shù)據(jù)counts=5,3,4,2,4,6#數(shù)據(jù)source=ColumnDataSource(data=dict(fruits=fruits,counts=counts,color=Spectral6)p=figure(x_range=fruits,y_range=(0,9),plot_height=250,title=FruitCounts,toolbar_location=None,tools=)#條形圖配置項p.vbar(x=fruits,top=counts,width=0.9,color=color,legend=fruits,source=source)p.xgrid.grid_

9、line_color=None#配置網(wǎng)格線顏色p.legend.orientation=horizontal#圖表方向為水平方向p.legend.location=top_centershow(p)#展示圖表年度條形圖可以對比不同時間點的量。frombokeh.ioimportshow,output_filefrombokeh.modelsimportColumnDataSource,FactorRangefrombokeh.plottingimportfigureoutput_file(bars.html)#輸出文件名fruits=Apple,魅族,OPPO,VIVO,小米,華為#參數(shù)yea

10、rs=2015,2016,2017#參數(shù)data=fruits:fruits,2015:2,1,4,3,2,4,2016:5,3,3,2,4,6,2017:3,2,4,4,5,3x=(fruit,year)forfruitinfruitsforyearinyearscounts=sum(zip(data2015,data2016,data2017),()source=ColumnDataSource(data=dict(x=x,counts=counts)p=figure(x_range=FactorRange(*x),plot_height=250,title=FruitCountsbyYe

11、ar,toolbar_location=None,tools=)p.vbar(x=x,top=counts,width=0.9,source=source)p.y_range.start=0p.x_range.range_padding=0.1p.xaxis.major_label_orientation=1p.xgrid.grid_line_color=Noneshow(p)餅圖fromcollectionsimportCounterfrommathimportpiimportpandasaspdfrombokeh.ioimportoutput_file,showfrombokeh.pale

12、ttesimportCategory20cfrombokeh.plottingimportfigurefrombokeh.transformimportcumsumoutput_file(pie.html)x=Counter(中國:157,美國:93,日本:89,巴西:63,德國:44,印度:42,意大利:40,澳大利亞:35,法國:31,西班牙:29)data=pd.DataFrame.from_dict(dict(x),orient=index).reset_index().rename(index=str,columns=0:value,index:country)dataangle=d

13、atavalue/sum(x.values()*2*pidatacolor=Category20clen(x)p=figure(plot_height=350,title=PieChart,toolbar_location=None,tools=hover,tooltips=country:value)p.wedge(x=0,y=1,radius=0.4,start_angle=cumsum(angle,include_zero=True),end_angle=cumsum(angle),line_color=white,fill_color=color,legend=country,sour

14、ce=data)p.axis.axis_label=Nonep.axis.visible=Falsep.grid.grid_line_color=Noneshow(p)條形圖年度水果進出口frombokeh.ioimportoutput_file,showfrombokeh.modelsimportColumnDataSourcefrombokeh.palettesimportGnBu3,OrRd3frombokeh.plottingimportfigureoutput_file(stacked_split.html)fruits=Apples,Pears,Nectarines,Plums,G

15、rapes,Strawberriesyears=2015,2016,2017exports=fruits:fruits,2015:2,1,4,3,2,4,2016:5,3,4,2,4,6,2017:3,2,4,4,5,3imports=fruits:fruits,2015:-1,0,-1,-3,-2,-1,2016:-2,-1,-3,-1,-2,-2,2017:-1,-2,-1,0,-2,-2p=figure(y_range=fruits,plot_height=250,x_range=(-16,16),title=Fruitimport/export,byyear,toolbar_locat

16、ion=None)p.hbar_stack(years,y=fruits,height=0.9,color=GnBu3,source=ColumnDataSource(exports),legend=%sexports%xforxinyears)p.hbar_stack(years,y=fruits,height=0.9,color=OrRd3,source=ColumnDataSource(imports),legend=%simports%xforxinyears)p.y_range.range_padding=0.1p.ygrid.grid_line_color=Nonep.legend

17、.location=top_leftp.axis.minor_tick_line_color=Nonep.outline_line_color=Noneshow(p)散點圖frombokeh.plottingimportfigure,output_file,showoutput_file(line.html)p=figure(plot_width=400,plot_height=400)p.circle(1,2,3,4,5,6,7,2,4,5,size=20,color=navy,alpha=0.5)show(p)六邊形圖這兩天,馬蜂窩剛被發(fā)現(xiàn)數(shù)據(jù)造假,這不,與馬蜂窩應(yīng)應(yīng)景。importnum

18、pyasnpfrombokeh.ioimportoutput_file,showfrombokeh.plottingimportfigurefrombokeh.util.heximportaxial_to_cartesianoutput_file(hex_coords.html)q=np.array(0,0,0,-1,-1,1,1)r=np.array(0,-1,1,0,1,-1,0)p=figure(plot_width=400,plot_height=400,toolbar_location=None)#p.grid.visible=False#配置網(wǎng)格是否可見p.hex_tile(q,r

19、,size=1,fill_color=firebrick*3+navy*4,line_color=white,alpha=0.5)x,y=axial_to_cartesian(q,r,1,pointytop)p.text(x,y,text=(%d,%d)%(q,r)for(q,r)inzip(q,r),text_baseline=middle,text_align=center)show(p)環(huán)比條形圖這個實現(xiàn)挺厲害的,看了一眼就吸引了我。我在代碼中都做了一些注釋,希望對你理解有幫助。注:圓心為正中央,即直角坐標系中標簽為(0,0)的地方。fromcollectionsimportOrdere

20、dDictfrommathimportlog,sqrtimportnumpyasnpimportpandasaspdfromsix.movesimportcStringIOasStringIOfrombokeh.plottingimportfigure,show,output_fileantibiotics=bacteria,penicillin,streptomycin,neomycin,gram結(jié)核分枝桿菌,800,5,2,negative沙門氏菌,10,0.8,0.09,negative變形桿菌,3,0.1,0.1,negative肺炎克雷伯氏菌,850,1.2,1,negative布魯

21、氏菌,1,2,0.02,negative銅綠假單胞菌,850,2,0.4,negative大腸桿菌,100,0.4,0.1,negative產(chǎn)氣桿菌,870,1,1.6,negative白色葡萄球菌,0.007,0.1,0.001,positive溶血性鏈球菌,0.001,14,10,positive草綠色鏈球菌,0.005,10,40,positive肺炎雙球菌,0.005,11,10,positivedrug_color=OrderedDict(#配置中間標簽名稱與顏色(盤尼西林,#0d3362),(鏈霉素,#c64737),(新霉素,black),)gram_color=positive

22、:#aeaeb8,negative:#e69584,#讀取數(shù)據(jù)df=pd.read_csv(StringIO(antibiotics),skiprows=1,skipinitialspace=True,engine=python)width=800height=800inner_radius=90outer_radius=300-10minr=sqrt(log(.001*1E4)maxr=sqrt(log(1000*1E4)a=(outer_radius-inner_radius)/(minr-maxr)b=inner_radius-a*maxrdefrad(mic):returna*np.s

23、qrt(np.log(mic*1E4)+bbig_angle=2.0*np.pi/(len(df)+1)small_angle=big_angle/7#整體配置p=figure(plot_width=width,plot_height=height,title=,x_axis_type=None,y_axis_type=None,x_range=(-420,420),y_range=(-420,420),min_border=0,outline_line_color=black,background_fill_color=#f0e1d2)p.xgrid.grid_line_color=None

24、p.ygrid.grid_line_color=None#annularwedgesangles=np.pi/2-big_angle/2-df.index.to_series()*big_angle#計算角度colors=gram_colorgramforgramindf.gram#配置顏色p.annular_wedge(0,0,inner_radius,outer_radius,-big_angle+angles,angles,color=colors,)#smallwedgesp.annular_wedge(0,0,inner_radius,rad(df.penicillin),-big_

25、angle+angles+5*small_angle,-big_angle+angles+6*small_angle,color=drug_color盤尼西林)p.annular_wedge(0,0,inner_radius,rad(df.streptomycin),-big_angle+angles+3*small_angle,-big_angle+angles+4*small_angle,color=drug_color鏈霉素)p.annular_wedge(0,0,inner_radius,rad(df.neomycin),-big_angle+angles+1*small_angle,

26、-big_angle+angles+2*small_angle,color=drug_color新霉素)#繪制大圓和標簽labels=np.power(10.0,np.arange(-3,4)radii=a*np.sqrt(np.log(labels*1E4)+bp.circle(0,0,radius=radii,fill_color=None,line_color=white)p.text(0,radii:-1,str(r)forrinlabels:-1,text_font_size=8pt,text_align=center,text_baseline=middle)#半徑p.annula

27、r_wedge(0,0,inner_radius-10,outer_radius+10,-big_angle+angles,-big_angle+angles,color=black)#細菌標簽xr=radii0*np.cos(np.array(-big_angle/2+angles)yr=radii0*np.sin(np.array(-big_angle/2+angles)label_angle=np.array(-big_angle/2+angles)label_anglelabel_angle-np.pi/2+=np.pi#easiertoreadlabelsontheleftside#

28、繪制各個細菌的名字p.text(xr,yr,df.bacteria,angle=label_angle,text_font_size=9pt,text_align=center,text_baseline=middle)#繪制圓形,其中數(shù)字分別為x軸與y軸標簽p.circle(-40,-40,-370,-390,color=list(gram_color.values(),radius=5)#繪制文字p.text(-30,-30,-370,-390,text=Gram-+grforgringram_color.keys(),text_font_size=7pt,text_align=left,

29、text_baseline=middle)#繪制矩形,中間標簽部分。其中-40,-40,-40為三個矩形的x軸坐標。18,0,-18為三個矩形的y軸坐標p.rect(-40,-40,-40,18,0,-18,width=30,height=13,color=list(drug_color.values()#配置中間標簽文字、文字大小、文字對齊方式p.text(-15,-15,-15,18,0,-18,text=list(drug_color),text_font_size=9pt,text_align=left,text_baseline=middle)output_file(burtin.h

30、tml,title=burtin.pyexample)show(p)元素周期表元素周期表,這個實現(xiàn)好牛逼啊,距離初三剛開始學(xué)化學(xué)已經(jīng)很遙遠了,想當(dāng)年我還是化學(xué)課代表呢!由于基本用不到化學(xué)了,這里就不實現(xiàn)了。真實狀態(tài)05 Pyechartspyecharts 也是一個比較常用的數(shù)據(jù)可視化庫,用得也是比較多的了,是百度 Echarts 庫的 Python 支持。這里也展示一下常用的圖表。文檔地址為:/#/zh-cn/prepare?id=%E5%AE%89%E8%A3%85-pyecharts條形圖frompyechartsimportBarbar=Bar(我的第一個圖表,這里是副標題)bar.a

31、dd(服裝,襯衫,羊毛衫,雪紡衫,褲子,高跟鞋,襪子,5,20,36,10,75,90)#bar.print_echarts_options()#該行只為了打印配置項,方便調(diào)試時使用bar.render()#生成本地HTML文件散點圖frompyechartsimportPolarimportrandomdata_1=(10,random.randint(1,100)foriinrange(300)data_2=(11,random.randint(1,100)foriinrange(300)polar=Polar(極坐標系-散點圖示例,width=1200,height=600)polar.

32、add(,data_1,type=scatter)polar.add(,data_2,type=scatter)polar.render()餅圖importrandomfrompyechartsimportPieattr=A,B,C,D,E,Fpie=Pie(餅圖示例,width=1000,height=600)pie.add(,attr,random.randint(0,100)for_inrange(6),radius=50,55,center=25,50,is_random=True,)pie.add(,attr,random.randint(20,100)for_inrange(6),

33、radius=0,45,center=25,50,rosetype=area,)pie.add(,attr,random.randint(0,100)for_inrange(6),radius=50,55,center=65,50,is_random=True,)pie.add(,attr,random.randint(20,100)for_inrange(6),radius=0,45,center=65,50,rosetype=radius,)pie.render()詞云這個是我在前面的文章中用到的圖片實例,這里就不 po 具體數(shù)據(jù)了。frompyechartsimportWordCloudname=SamSClub#詞條value=10000#權(quán)重wordcloud=WordCloud(width=1300,height=620)wordcloud.add(,name,value,word_size_range=20,100)wordcloud.r

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論