当前位置: 首页 > 后端技术 > Python

这5张很酷的动态图都是用Python实现的!

时间:2023-03-25 23:24:02 Python

数据可以帮助我们描述世界,解释我们的想法,展示我们的成就,但如果我们只有单调的文字和数字,我们往往很难抓住观众的注意力。很多时候,一个漂亮的视觉图表足以抵得上一千个字。本文将介绍5种基于Plotly的可视化方法。你会发现直方图和箱形图不仅可以用于可视化,而且非常动态和美观,甚至可以交互。那么,Plotly有什么好处呢?Plotly的集成能力很强:它可以与JupyterNotebooks一起使用,可以嵌入到网站中,并与Dash完全集成,Dash是构建仪表板和分析应用程序的绝佳工具。开始如果您还没有安装Plotly,只需在终端中运行以下命令即可安装它:pipinstallplotly安装后,让我们开始使用吧!动画在研究这个或那个指标的演变时,我们经常处理时间数据。Plotly动画工具只需要一行代码就可以让人看到数据随时间的变化,如下图:代码如下:importplotly.expressaspxfromvega_datasetsimportdatadf=data.disasters()df=df[df.Year>1990]fig=px.bar(df,y=“Entity”,x=“Deaths”,animation_frame=“Year”,Orientation='H',Range_x=[0,DF.Deaths.max()],color=“entity”)#改进美学(尺寸,网格等)图.update_layout(width=1000,高度=800,xaxis_showgrid=false,yaxis_showgrid=false,paper_bgcolor0,0)',plot_bgcolor='rgba(0,0,0,0)',title_text='自然灾害的演变',showlegend=False)fig.update_xaxes(title_text='死亡人数')leg.update_yaxes='tshow()只要您有一个时间变量来过滤,几乎任何图表都可以制作动画。下面是一个制作散点图动画的例子:size="pop",color="continent",hover_name="country",log_x=True,size_max=55,range_x=[100,100000],range_y=[25,90],#color_continuous_scale=px.colors顺序。emrld)fig.update_layout(width=1000,高度=800,xaxis_showgrid=false,yaxis_showgrid=false,paper_bgcolor='rgba(0,0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)')Sunburst图表Sunburst图表是可视化groupby语句的好方法。如果您想按一个或多个分类变量分解给定数量,请使用太阳图。假设我们想按性别和一天中的时间细分平均小费数据,这个双分组语句可以比表格更有效地可视化。该图表是交互式的,允许您自己单击和浏览类别。您只需要定义所有类别,声明它们之间的层次结构(请参阅下面代码中的parents参数)并分配相应的值,在我们的例子中是groupby语句的输出。importplotly.graph_objectsasgoimportplotly.expressaspximportnumpyasnpiportpandasaspddf=px.data.tips()fig=go.Figure(go.Sunburst(labels=["Female","Male","Dinner","午餐",'晚餐','午餐'],parents=["","","女","女",'男','男'],values=np.append(df.groupby('sex').tip.mean().values,df.groupby(['sex','time']).tip.mean().values),marker=dict(colors=px.colors.sequential.Emrld)),layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)'))fig.update_layout(margin=dict(t=,l=0,r=0,b=0),title_text='TippingHabitsPerGender,TimeandDay')fig.show()现在我们在这个层级中添加另一个层:为此我们添加另一个值组by涉及三个分类变量的语句。importplotly.graph_objectsasgoimportplotly.expressaspximportpandasaspdimportnumpyasnpdf=px.data.tips()fig=go.Figure(go.Sunburst(labels=[“女”,“男”,“晚餐”,“午餐”、“晚餐”、“午餐”、“周五”、“周六”、“周日”、“周四”、“周五”、“周四”、“周五”、“周六”、“周日”、“周五”','th'],父母=[“”,“”,“女”,“女”,“男性”,“男性”,“晚餐”,“晚餐”,“晚餐”,“晚餐”,'晚餐,'午餐','午餐',“晚餐”,“晚餐”,“晚餐”,“午餐”,“午餐”],values=np.append(np.append(df.groupby('sexsex')。).values,df.groupby(['性别','时间'])。Tip.mean()。values,),df.groupby(['sex','time','day'].tip.mean().values),marker=dict(color=px.colors.sequential.Emrld)),layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)')date_layout。(margin=dict(t=0,l=0,r=0,b=0),title_text='TippingHabbitsPerGender,TimeandDay')fig.show()平行类别探索分类变量之间的另一种方式关系的方法是下面的流程图,可以随时拖放、高亮、浏览数值,非常适合在演示中使用。代码如下:importplotly.expressaspxfromvega_datasetsimportdataimportpandasaspddf=data.movi??es()df=df.dropna()df['Genre_id']=df.Major_Genre.factorize()[0]fig=px.parallel_categories(df,dimensions=['MPAA_Rating','Creative_Type','Major_Genre'],color="Genre_id",color_continuous_scale=px.colors.sequential.Emrld,)fig.show()平行坐标图平行坐标图在图表的连续版本上方。在这里,每个字符串代表一个单独的观察。这是一种可用于识别异常值(远离数据其余部分的单线)、聚类、趋势和冗余变量(例如,如果两个变量在同一水平线上具有相似值,则位于同一水平线上的方法)每次观察,表示冗余)。代码如下:importplotly.expressaspxfromvega_datasetsimportdataimportpandasaspddf=data.movi??es()df=df.dropna()df['Genre_id']=df.Major_Genre.factorize()[0]fig=px.parallel_coordinates(df,尺寸=['IMDB_Rating','IMDB_Votes','Production_Budget','Running_Time_min','US_Gross','Worldwide_Gross','US_DVD_Sales'],颜色='IMDB.color.xuous_ating='IMDBsequential.Emrld)fig.show()仪表图和指标仪表图只是为了好看。在报告KPI等成功指标并显示您离目标的距离时使用这种类型的图表。\指标在商业和咨询中非常有用。他们可以用文字标记来补充视觉效果,吸引观众的注意力并展示您的增长指标。将plotly.graph_objects导入为gofig=go.Figure(go.Indicator(domain={'x':[0,1],'y':[0,1]},value=4.3,mode="gauge+number+delta",title={'text':"SuccessMetric"},delta={'reference':3.9},gauge={'bar':{'color':"lightgreen"},'axis':{'range':[None,5]},'steps':[{'range':[0,2.5],'color':"lightgray"},{'range':[2.5,4],'color':"灰色"}],}))fig.show()以上就是本次分享的全部内容。如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发“J”回传即可获取海量学习资料。或者去编程学习网了解更多编程技术知识。