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

用Python画动态可视化图表,爽!

时间:2023-03-26 15:28:59 Python

讲故事是数据科学家的一项关键技能。为了表达我们的想法并说服他人,我们需要进行有效的沟通。漂亮的可视化效果是完成这项任务的绝佳工具。本文将介绍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",方向='H',Range_x=[0,DF.Deaths.max(],color=“entity”)#改进美学(尺寸,网格等)图.update_layout(width=1000,高度=800,xaxis_showgrid=false,yaxis_showgrid=false,paper_bgcolor,paper_bgcolor='rgba(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)',plot_bgcolor='rgba(0,0,0,0)',title_text='自然灾害的演变',showshowlegend=False)fig.update_xaxes(title_text='死亡人数')leg.update_yaxes='t()几乎任何图表都可以制作动画,只要您有时间变量作为过滤依据。下面是一个制作散点图动画的例子: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='TippingHabbitsPerGender,TimeandDay')fig.show()现在我们在这个层次结构中添加另一个层:为此我们添加另一个组值涉及三个分类变量的语句e(go.Sunburst(labels=[“女性”,“男性”,“晚餐”,“午餐”,'晚餐','午餐','周五','周六','周日','周四','星期五','星期四','星期五','星期六','星期日','星期五','星期四'],父母=['''''''''''男性”,“晚餐”,“晚餐”,“晚餐”,“晚餐”,“午餐”,“午餐”,“晚餐”,“晚餐”,“晚餐”,“午餐”,“午餐”],Values=np.append(np.append(df.groupby('sex')。tip.mean()。值,df.groupby(['sex','time'])。tip.mean()df。groupby(['sex','time','day'].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)',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,尺寸=['IMDB_Rating','IMDB_Votes','Production_Budget','Running_Time_min','US_Gross','Worldwide_Gross','US_DVD_Sales'],颜色='IMDB.color.xuous_ating='IMDBsequential.Emrld)fig.show()以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,内容涵盖Python电子书、教程、数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。