版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Python 数据可视化编程指南01 前言Python 数据可视化利器,Bokeh、pyecharts 的用法,本文增加了 Plotly 的部分教程。02 推荐数据可视化的库有挺多的,这里推荐几个比较常用的: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轴参数y=np.sin(step*np.arange(0,10,0.01)forstepinnp.arange(0,5,0.1)#y轴参数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、#数据counts=5,3,4,2,4,6#数据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#配置网格线颜色p.legend.orientation=horizontal#图表方向为水平方向p.legend.location=top_centershow(p)#展示图表年度条形图可以对比不同时间点的量。frombokeh.ioimportshow,output_filefrombokeh.modelsimportColumnDataSource,FactorRangefrombokeh.plottingimportfigureoutput_file(bars.html)#输出文件名fruits=Apple,魅族,OPPO,VIVO,小米,华为#参数yea
10、rs=2015,2016,2017#参数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)六边形图这两天,马蜂窝刚被发现数据造假,这不,与马蜂窝应应景。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#配置网格是否可见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)环比条形图这个实现挺厉害的,看了一眼就吸引了我。我在代码中都做了一些注释,希望对你理解有帮助。注:圆心为正中央,即直角坐标系中标签为(0,0)的地方。fromcollectionsimportOrdere
20、dDictfrommathimportlog,sqrtimportnumpyasnpimportpandasaspdfromsix.movesimportcStringIOasStringIOfrombokeh.plottingimportfigure,show,output_fileantibiotics=bacteria,penicillin,streptomycin,neomycin,gram结核分枝杆菌,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产气杆菌,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,#读取数据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)#绘制圆形,其中数字分别为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)元素周期表元素周期表,这个实现好牛逼啊,距离初三刚开始学化学已经很遥远了,想当年我还是化学课代表呢!由于基本用不到化学了,这里就不实现了。真实状态05 Pyechartspyecharts 也是一个比较常用的数据可视化库,用得也是比较多的了,是百度 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()#该行只为了打印配置项,方便调试时使用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 具体数据了。frompyechartsimportWordCloudname=SamSClub#词条value=10000#权重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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度农村房屋改造装修环保材料采购与施工合同2篇
- 2025年度智慧城市建设中股东股权变更管理合同3篇
- 2025年度跨境电商仓储租赁服务协议3篇
- 2025年度教育科技公司股权置换合同样本3篇
- 2025年度汽车环保材料研发与应用合作合同3篇
- 二零二五年度纳米材料研发委托合同2篇
- 二零二五年度智慧养老设施运营管理服务合同3篇
- 二零二五年度农村土地置换与农业人才培养合作协议2篇
- 2025年度公司高管聘用合同全新版:企业数字化转型合作协议3篇
- 二零二五年度养殖场动物福利保障承包协议3篇
- 非急救转运合同范例
- 车辆使用安全培训
- 《中国传统文化》课件模板(六套)
- 民航客舱服务管理Ⅱ学习通超星期末考试答案章节答案2024年
- 儿科主任年终总结
- 期末 (试题) -2024-2025学年人教PEP版英语四年级上册
- 第三单元 (单元测试)-2024-2025学年-四年级上册语文统编版
- 浪潮销售在线测评题
- 总经理年会发言稿模板怎么写(8篇素材参考)
- 《完善中国特色社会主义法治体系》课件
- 2024年人教版小学四年级信息技术(上册)期末试卷附答案
评论
0/150
提交评论