本文转载自微信公众号《python与大数据分析》,作者是一只小鸟。转载本文请联系python与大数据分析公众号。Dash是一个基于Flask的Python可视化工具。严格来说,它由三部分组成。首先,Flask提供了一个标准的web环境,然后是plotly,一个图表可视化工具,最后是与dash相匹配的html和图表等交互组件。我也陆续尝试过pyechart,但是在集成和可视化方面,和dash还是有一定的差距。代码示例importdash--集成flaskimportdash_core_componentsasdcc--图表相关的核心组件importdash_html_componentsashtml--HTML交互相关的组件importplotly.graph_objectsasgo--plotly的底层组件importplotly.expressaspx--plotly的高层组件,同时提供内置数据集fig=go.Figure()fig=go.Figure(data=go.Bar(y=[2,3,1]))#fig.add_trace(...)#fig.update_layout(...)df=px。data.gapminder()df=px.data.gapminder().query("country=='China'")fig=px.line(df,x="year",y="lifeExp",title='populationgrowthrate')app=dash.Dash()app.layout=html.Div([dcc.Graph(figure=fig)])app.run_server(debug=True,use_reloader=False)?PlotlyExpress对高级包Plotly.py内置了大量实用、现代的绘图模板,用户只需调用简单的API函数,即可快速生成精美的交互式图表,可满足90%以上的应用场景。plotly.express带有一些用于演示、教育和测试目的的内置数据集。这些数据以CSV格式存放在包目录下,数据以pandas类型获取,方便图表功能测试。1.gapminder():每一行代表一个国家在给定年份的GDP、人口增长等信息。包含1704行和以下列:['country','continent','year','lifeExp','pop','gdpPercap','iso_alpha','iso_num']。2、tips():每一行代表一张餐厅账单。包含244行和以下列:['total_bill','tip','sex','smoker','day','time','size']。3.iris():每一行代表一朵花。包含150行和以下列:['sepal_length','sepal_width','petal_length','petal_width','species','species_id']。4、wind():每条线代表一个基本方向的风强等级及其频率。包含128行和以下列:['direction','strength','frequency']。5、election():每一行代表一个选区在2013年蒙特利尔市长选举中的投票结果。包含58行和以下列:['district','Coderre','Bergeron','Joly','total','winner','result','district_id'].6,election_geojson():每个特征代表一个选区参加2013年蒙特利尔市长选举。GeoJSON格式的“dict”,具有58个多边形或多边形特征,其“id”为地区数字ID,其“地区”属性为ID和地区名称。7.carshare():每一行代表在蒙特利尔逗留一个月后区域中心附近汽车共享服务的可用性。包含249行和以下列:['centroid_lat','centroid_lon','car_hours','peak_hour']。8、stocks(indexed=False):这个庞大数据集中的每一行代表2018/2019年股票收盘价的6只科技股。包含100行和以下列:['date','GOOG','AAPL','AMZN','FB','NFLX','MSFT'].9,experiment(indexed=False):这个大数据集合的每一行代表100名模拟参与者在三个假设实验中的结果,以及他们的性别和控制/治疗组。包含100行和以下列:['experiment_1','experiment_2','experiment_3','gender','group'].10,medals_wide(indexed=False):此数据集代表截至2020年奥运会的前三个国家短道速滑奖牌榜。包含3行和以下列:['nation','gold','silver','bronze'].11,medals_long(indexed=False):这个数据集代表了截止到前三个国家的奥运会短道速度2020滑动奖牌表。包含9行和以下列:['nation','medal','count'].plotly.express提供了30多个标准绘图以简化操作。1.scatter:在散点图中,data_frame的每一行在二维空间中用一个符号表示;2.scatter_3d:三维散点图在3D散点图中,data_frame的每一行在3D空间中用一个符号表示;3.scatter_polar:极坐标散点图在极坐标散点图中,data_frame的每一行在极坐标中用一个符号标记表示;4.scatter_ternary:三元散点图三元散点图中,每一行data_frame在三元坐标中用符号标记表示;5.scatter_mapbox:地图散点图在Mapbox散点图中,每一行data_frame在Mapbox地图上用符号标记表示;6.scatter_geo:地理坐标散点图,在geographic散点图中,data_frame的每一行在地图上用符号标记表示;7.line:在二维折线图中,data_frame的每一行表示为二维空间中虚线标记的一个顶点;8.line_3d:三维线图in三维线图中,每一行数据框表示为三维空间中折线标记的顶点9、line_polar:极坐标线图inapolar折线图,data_frame的每一行表示为极坐标中折线标记的顶点;10、line_ternary:在三元折线图中,data_frame的每一行表示为三元坐标中折线标记的一个顶点;11、line_mapbox:在Mapbox折线图中,data_frame的每一行表示为一个顶点,在Mapbox地图Vertices上用折线标记;12.line_geo:地理坐标折线图在地理折线图中,data_frame的每一行表示为地图上折线标记的一个顶点;13.area:Stackedareagraph在一个stackedareagraph中,data_frame的每一行在2D空间中被表示为一个折线标记的顶点。连续折线之间的区域被填充;14、bar:条形图在条形图中,data_frame的每一行都表示为一个矩形标记;15、timeline:时间线图表在时间线图表中,每一行数据框在日期类型的x轴上表示为矩形标记,起始于x,结束于x。16.bar_polar:极坐标柱状图在极坐标柱状图中,data_frame的每一行在极坐标中表示为一个楔形标记;17.violin:Violinchart在小提琴图中,每一行data_frame被分组为一个曲线标记,以便可视化它们的分布;18、box:boxplot在boxplot中,将data_frame的每一行组合成一个box和whiskermark来显示它们的分布;19、strip:barchart中的barchart,每一行data_frame表示为category中的一个jittermarker;20、直方图:histogram在直方图中,data_frame的每一行被组合成一个矩形标记,以可视化值(例如count或sum)的聚合函数histfunc1D分布的y(或x,如果orientation是'h');21、pie:饼图在饼图中,数据框的每一行表示为饼图的一个扇区。22.treemap:dendrogram树状图将分层数据表示为嵌套的矩形扇区。23.sunburst:甜甜圈图甜甜圈图将分层数据表示为排列在多个同心环级别上的扇区。24.funnel:漏斗图在漏斗图中,数据框的每一行表示为漏斗的一个矩形扇区。25.funnel_area:漏斗面积图在漏斗面积图中,数据框的每一行表示为漏斗的一个梯形扇区。26.scatter_matrix:matrixscatterplot在散点图矩阵(或SPLOM)中,data_frame的每一行由多个符号标记表示,在2D散点图的网格的每个单元格中都有一个,这将每一对维度是彼此相对绘制;27、parallel_coordinates:平行坐标图在平行坐标图中,data_frame的每一行由一个折线标记表示,折线标记穿过一组平行轴,每个平行轴对应一个平行轴维度;28、parallel_categories:平行类别图在平行类别(或平行集)图中,data_frame的每一行与共享相同值的其他行组合,然后通过一组平行轴将维度绘制为折线标记,一个对于每个维度;29、choropleth:Contour(value)areamap在等高线区域图中,每一行data_frame在地图上用一个带颜色的区域标记表示;30、choropleth_mapbox:在Mapboxchoropleth地图中,每一行的数据在Mapbox地图上用彩色区域表示。31.density_contour:Densitycontourmap(bivariatedistribution)在密度等高线图中,将行data_frame组合成等高线标记,可视化value的聚合函数histfunc(eg:countorsum)分布z的2D;32、density_heatmap:densityheatmap(bivariatedistribution)在密度热图中,行data_frame被组合成彩色矩形块,以可视化值2D分布z的聚合函数histfunc(例如:count或sum);33、density_mapbox:Mapbox密度图在Mapbox密度图中,每一行数据框都会影响地图上相应点周围区域的颜色强度plotly.graph_objects是底层组件,提供图形、迹线和布局等底层接口,灵活开发。图容器布局布局简单跟踪简单跟踪分布跟踪分布跟踪财务跟踪财务跟踪地图跟踪地图跟踪专用跟踪专用跟踪dash_html_components库包含每个HTML标记的组件类和所有HTML参数的关键字参数。dash_html_components和HTML属性之间有几个重要的区别:1.在HTML中,style属性是一个以分号分隔的字符串。在Dash中,您可以使用字典。2、style字典中的key值为cameCase(驼峰样式),不是text-align,而是textAlign。3.HTMLclass属性在Dash中为className。4.HTML标记的子项由children关键字参数指定。dash_core_components库包含一组更高级别的组件,例如下拉列表、图形等。dash_html_components库为所有HTML标签提供类,而关键字参数描述HTML属性,例如样式、类名和ID。dash_core_components库生成高级组件,例如控件和图形。
