当前位置: 首页 > 科技观察

50行Python代码做一个数据大屏!

时间:2023-03-16 17:41:46 科技观察

PywebIO在Python中引入了PywebIO模块,可以帮助开发者在没有HTML和JavaScript的情况下快速构建Web应用程序或基于浏览器的GUI应用程序。PywebIO还可以与一些常用的可视化模块结合使用。把它变成一个大的可视屏幕。让我们先安装我们需要的模块。pipinstallpywebiopipinstallcutecharts上面提到的cutecharts模块是Python中的手绘视觉神器。相信大家都不陌生。下面看一下结合PywebIO模块绘制图表的效果。代码如下:fromcutecharts.chartsimportBarfromcutecharts.fakerimportFakerfrompywebioimportstart_serverfrompywebio.outputimportput_htmldefbar_base():chart=Bar("Bar-baseexample",width="100%")chart.set_options(labels=Faker.choose(),x_label="我是xlabel",y_label="我是ylabel")图表。add_series("series-A",Faker.values())put_html(chart.render_notebook())if__name__=='__main__':start_server(bar_base,debug=True,port=8080)output上面代码的逻辑是不难理解,先实例化一个直方图Bar()对象,然后填入X轴对应的标签和Y轴对应的值,最后调用PywebIO模块中的put_html()方法,我们会看到一个网址。在浏览器中输入网址就可以看到我们绘制的图表了。当然,在cutecharts模块中有一个Page()方法,可以将各个图表连接起来,组成一个可视化大屏幕。代码如下:defbar_base():chart=Bar("Bar-BasicExample",width="100%")chart.set_options(labels=Faker.choose(),x_label="I'mxlabel",y_label="我是ylabel")chart.add_series("series-A",Faker.values())返回chartdefpie_base()->Pie:chart=Pie("Title",width="100%")。.........返回chartdefradar_base()->雷达:chart=Radar("Title",width="100%")100%")......returnchartdefline_base()->Line:chart=Line("Title",width="100%")......returnchartdefmain():page=Page()page.add(pie_base(),pie_base(),radar_base(),line_base(),bar_base())put_html(page.render_notebook())if__name__=='__main__':start_server(main,debug=True,port=8080)输出PywebIO和Pyecharts的组合当PywebIO模块遇到Pyecharts模块,代码的逻辑和cutecharts基本一样,首先实例化一个图表对象,然后添加数据,设置图表样式后,最后调用put_html()方法渲染fi浏览器中的最终结果。#`chart`是你的图表的一个实例pywebio.output.put_html(chart.render_notebook())在这种情况下,我们调用Pyecharts中的组合组件来分别呈现绘制的图表。代码如下:defbar_plots():bar=(Bar().add_xaxis(Faker.choose()).add_yaxis("业务A",Faker.values()).add_yaxis("业务B",Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar")))returnbardefline_plots():line=(Line().add_xaxis(Faker.choose()).add_yaxis("业务A",Faker.values()).add_yaxis("业务B",Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line",pos_top="48%"),legend_opts=opts.LegendOpts(pos_top="48%"),))返回linedefmain():c=(Grid().add(bar_plots(),grid_opts=opts.GridOpts(pos_bottom="60%")).add(line_plots(),grid_opts=opts.GridOpts(pos_top="60%")))c.width="100%"put_html(c.render_notebook())if__name__=='__main__':start_server(main,debug=True,port=8080)outputPywebIO和Bokeh的结合PywebIO和Bokeh的结合在代码语法上会和上面略有不同,并且具体区别如下:frombokeh.ioimportoutput_notebookfrombokeh.ioimportshowoutput_notebook(notebook_type='pywebio')fig=figure(...)...show(fig)比如我们画一个简单的直方图,代码如下:defbar_plots():output_notebook(notebook_type='pywebio')fruits=['Apples','Pears','Nectarines','Plums','Grapes','Strawberries']counts=[5,3,4,2,4,6]p=figure(x_range=fruits,plot_height=350,title="水果数",toolbar_location=None,tools="")p.vbar(x=fruits,top=counts,width=0.9)p.xgrid.grid_line_color=Nonep.y_range.start=0show(p)if__name__=="__main__":start_server(bar_plots,debug=True,port=8080)除了输出基于浏览器的GUI应用程序Pywebio模块与common除了visualization模块组合用于绘制各种图表,我们也可以用它来构建基于浏览的图形界面。我们先做一个最简单的应用。代码如下:frompywebio.inputimport*frompywebio.outputimport*data=input_group("Userdata",[input("请问你叫什么名字:",name="name",type=TEXT),input("请输入你的年龄",name="age",type=NUMBER),radio("哪个洲",name="continent",options=["非洲","亚洲","澳大利亚","欧洲","北美洲","南美洲",],),checkbox("用户隐私政策",name="协议",options=["agree"]),],)put_text("表格输出:")put_table([["name",data["name"]],["age",data["age"]],["Location",data["continent"]],["Regulations",data["agreement"]],])output中一些函数和方法的解释如下:input():文本的输入contentradio():表示单选框checkbox():表示多选框input_group():表示输入组put_table():表示输出组put_text():表示输出文本

猜你喜欢