讲故事是数据科学家的一项关键技能。为了表达我们的想法并说服他人,我们需要进行有效的沟通。漂亮的可视化效果是完成这项任务的绝佳工具。本文将介绍5种非常规的可视化技术,它们可以使您的数据故事更加美观和有效。这里我们将使用Python的Plotly图形库,它可以让你毫不费力地生成动画图表和交互式图表。安装模块如果您还没有安装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")#改进美学(尺寸、网格等)fig.update_layout(width=1000,height=800,xaxis_showgrid=False,yaxis_showgrid=False,paper_bgcolor='rgba(0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)',title_text='自然灾害的演变',showlegend=False)fig.update_xaxes(title_text='死亡人数')fig.update_yaxes(title_text='')图。show()几乎任何图表都可以制作动画,只要您有一个时间变量来过滤。下面是一个散点图的动画示例:="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.sequential.Emrld)fig.update_layout(width=1000,height=800,xaxis_showgrid=False,yaxis_showgrid=False,paper_bgcolor='rgba(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=0,l=0,r=0,b=0),title_text='TippingHabbitsPerGender,TimeandDay')fig.show()现在我们在这个层次结构中再添加一层:为此,我们添加另一个The包含三个分类变量的groupby语句的值。importplotly.graph_objectsasgoimportplotly.expressaspximportpandasaspdimportnumpyasnpdf=px.data.tips()fig=go.Figure(go.Sunburst(labels=["Female","Male","Dinner",“午餐”、“晚餐”、“午餐”、“周五”、“周六”、“周日”、“周四”、“周五”、“周四”、“周五”、“周六”、“周日”、“周五”','周四'],parents=["","","女","女",'男','男','晚餐','晚餐','晚餐','晚餐','午餐','午餐','晚餐','晚餐','晚餐','午餐','午餐'],values=np.append(np.append(df.groupby('sex').tip.mean().values,df.groupby(['sex','time']).tip.mean().values,),df.groupby(['sex','time','day']).tip.mean().values),marker=dict(colors=px.colors.sequential.Emrld)),layout=go。布局(paper_bgcolor='rgba(0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)'))fig.update_layout(margin=dict(t=0,l=0,r=0,b=0),title_text='按性别、时间和日期给小费的习惯')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()桑基图探索分类变量之间关系的另一种方法是以下平行坐标图。您可以随时拖放、突出显示和浏览值,非常适合演示。代码如下: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,dimensions=['IMDB_Rating','IMDB_Votes','Production_Budget','Running_Time_min','US_Gross','Worldwide_Gross','US_DVD_Sales'],color='IMDB_Rating',color_continuous_scale=px.colors。顺序.Emrld)图。展示()
