nba体育搜狐网

admin · 2017-12-01

  这日和大师来分享极少数据可视化偏向的干货,咱们来测试用Python来绘制一下漏斗图,希望大师正在看完本篇作品以后会有所成绩。

  

   对于漏斗图

  漏斗图常用于用户举动的转化率剖判,比如经由过程漏斗图来剖判用户进货流程中各个枢纽的转化率。固然正在扫数剖判历程傍边,咱们会把流程优化先后的漏斗图放正在一道,举办对比剖判,得出相干的论断,这日小编就用matplotlib、plotly以及pyecharts这几个模块来为大师演示一下如何画出漂后的漏斗图最先咱们先要导入必要用到的模块以及数据,

  

importmatplotlib.pyplotaspltimportpandasaspddf=pd.DataFrame({"枢纽":["枢纽一","枢纽二","枢纽三","枢纽四","枢纽五"],"人数":[1000,600,400,250,100],"总体转化率":[1.00,0.60,0.40,0.25,0.1]})

 

  必要用到的数据如下图所示:

  

  用matplotlib来修制漏斗图,修制出来的效率能够会稍显简略与粗陋,修制的道理也对比简略,先绘制出秤谌偏向的直方图,而后愚弄plot.barh()傍边的left参数将直方图向左移,便能出来仿佛于漏斗图的神情。

  

y=[5,4,3,2,1]x=[85,75,58,43,23]x_max=100x_min=0foridx,valinenumerate(x):plt.barh(y[idx],x[idx],left=idx+5)plt.xlim(x_min,x_max)

  而要绘制出咱们念要的念要的漏斗图的神情,代码示比如下:

  

fro妹妹atplotlibimportfont_managerasfm#funnelcharty=[5,4,3,2,1]labels=df["枢纽"].tolist()x=df["人数"].tolist()x_range=100font=fm.FontProperties(fname="KAITI.ttf")fig,ax=plt.subplots(1,figsize=(12,6))foridx,valinenumerate(x):left=(x_range-val)/2plt.barh(y[idx],x[idx],left=left,color=#808B96,height=.8,edgecolor=black)#labelplt.text(50,y[idx]+0.1,labels[idx],ha=center,fontproperties=font,fontsize=16,color=#2A2A2A)#valueplt.text(50,y[idx]-0.3,x[idx],ha=center,fontproperties=font,fontsize=16,color=#2A2A2A)ifidx!=len(x)-1:next_left=(x_range-x[idx+1])/2shadow_x=[left,next_left,100-next_left,100-left,left]shadow_y=[y[idx]-0.4,y[idx+1]+0.4,y[idx+1]+0.4,y[idx]-0.4,y[idx]-0.4]plt.plot(shadow_x,shadow_y)plt.xlim(x_min,x_max)plt.axis(off)plt.title(每一个枢纽的散失率,fontproperties=font,loc=center,fontsize=24,color=#2A2A2A)plt.show()

 

  绘制出来的漏斗图如下图所示:

  

  固然咱们用plotly来绘制的话则会更为的简略极少,代码示比如下:

  

importplotly.expressaspxdata=dict(values=[80,73,58,42,23],labels=[枢纽一,枢纽二,枢纽三,枢纽四,枢纽五])fig=px.funnel(data,y=labels,x=values)fig.show()

  末了咱们用pyecharts模块来绘制一下,傍边有特意用来绘制漏斗图的手段,咱们只要要挪用便可。

  

frompyecharts.chartsimportFunnelfrompyechartsimportoptionsasoptsfrompyecharts.globalsimportThemeTypec=(Funnel(init_opts=opts.InitOpts(width="900px",height="600px",theme=ThemeType.INFOGRAPHIC)).add("枢纽",df[["枢纽","总体转化率"]].values,sort_="descending",label_opts=opts.LabelOpts(position="inside"),).set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts漏斗图",pos_bottom="90%",pos_left="center")))c.render_notebook()

  咱们将数据标注上去以后。

  

c=(Funnel(init_opts=opts.InitOpts(width="900px",height="600px",theme=ThemeType.INFOGRAPHIC)).add("商品",df[["枢纽","总体转化率"]].values,sort_="descending",label_opts=opts.LabelOpts(position="inside"),).set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts漏斗图",pos_bottom="90%",pos_left="center")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}")))c.render_notebook()

文章推荐:

2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元

该来的总要来! 切尔西老板将彻底退出英国市场

雷神黑武士四代开售:i7搭RTX3060不到9千元

智慧城市中 5G 和物联网的未来