在本文中,我们将学习如何在Python中创建交互式可视化。我们将从简单地以不同格式绘制数据开始,然后探索添加更多交互式控件。今天,我们将学习如何使用Plotlyexpress。Plotly允许用户在肉眼可见的可视化界面上与数据进行交互,并且更容易与Web内容集成。plotlyexpress简介plotlyexpress是一个plotly包装器,它允许使用更简单的语法。受Seaborn和ggplot2的启发,它采用简洁、一致且易于学习的API设计:只需一次导入,您就可以在一次函数调用中创建丰富的交互式图表,包括分面、地图、动画和趋势线。如果想了解更多,可以访问Plotly的官方文档:https://medium.com/plotly/introducing-plotly-express-808df010143d只需两行代码,就可以拥有一个漂亮的交互式图表,非常简单:importplotly.expressaspxfig=px.line(x='xdataset',y='ydataset')fig.show()数据源和准备在本文中,我们将使用COVID-19数据集。我们将使用以下代码来获取和格式化数据:url,delimiter=',',header='infer')df_interest=df.loc[df['国家/地区'].isin(['英国','美国','意大利','巴西','印度'])&df['省/州'].isna()]df_interest.rename(index=lambdax:df_interest.at[x,'国家/地区'],inplace=True)df1=df_interest.transpose()df1=df1.drop(['省/州','国家/地区','纬度','经度'])df1=df1.loc[(df1!=0).any(1)]df1.index=pd.to_datetime(df1.index)df1=df1.diff()#数据每日变化创建图表1.折线图在图表上添加一个国家的疫情数据可视化,我们只需要两行代码:fig=px.line(x=df1.index,y=df1[df1.columns[0]],title='DailyDeathsduetoCOVID-19',name=df1.columns[0])fig.show()单线图要添加更多国家的数据,我们需要d.add_scatter()属性。通过使用循环,我们可以添加范围内的所有国家。fig=px.line()fori,ninenumerate(df1.columns):fig.add_scatter(x=df1.index,y=df1[df1.columns[i]],name=df1.columns[i])多行图表最后,我们可以考虑为图表添加更多细节,我个人喜欢在图表中突出显示不同的数据点。fig.update_traces(mode='markers+lines')Figurewithmarkers最后,添加相关轴标签,设置字体大小并替换默认模板。fig.update_layout(title='DailyDeathsduetoCOVID-19',xaxis_title='Dates',yaxis_title='NumberofDeaths',font=dict(size=25),template='plotly_dark'#"plotly","plotly_white","plotly_dark""ggplot2","seaborn","simple_white","none")2.条形图正如我们之前看到的,条形图可以非常快速地组合:fig=px.bar(x=df1.index,y=df1[df1.columns[0]])fori,ninenumerate(df1.columns):fig.add_bar(x=df1.index,y=df1[df1.columns[i]],name=df1.columns[i])图.update_layout(title='DailyDeathsduetoCOVID-19',xaxis_title='Dates',yaxis_title='NumberofDeaths',font=dict(size=25),template='plotly_dark'#"plotly","plotly_white","plotly_dark","ggplot2","seaborn","simple_white","none")fig.show()3.饼图和之前一样,唯一不同的是我们只展示了时间序列中的最新一天。df1=df1.tail(1).transpose()fig=px.pie(df1,values=str(df1.columns[0]),names=df1.index)fig.update_traces(textposition='inside',textinfo='percent+label')ddate=str(df1.columns[0])[:10]#timestampfig.update_layout(title=f'Deathson{ddate}duetoCOVID-19',xaxis_title='Dates',yaxis_title='NumberofDeaths',font=dict(size=25),template='seaborn'#"plotly","plotly_white","plotly_dark","ggplot2","seaborn","simple_white","none")fig.show()交互控件通过以上,我们知道了如何将不同类型的可视化快速组合在一起。接下来,我们使用交互式控件来增强数据的可视化。1.Rangeslider首先,通过下面这行代码添加一个rangeslider。这是一个非常有用的控件,可以让用户看到他们想看的特定部分。fig.update_xaxes(rangeslider_visible=True)2.Rangefocus如果我们的用户只想关注某个时间段的某些部分怎么办?我们可以直接构建这些控件!fig.update_xaxes(rangeslider_visible=True,rangeselector=dict(buttons=list([dict(count=7,label="1w",step="day",stepmode="backward"),dict(count=1,label="1m",step="month",stepmode="backward"),dict(count=2,label="2m",step="month",stepmode="backward"),dict(step="all")]),font=dict(color='#008000',size=11),))3.自定义按钮体验了上面的范围焦点功能后,我们很容易想象如何构建一个自定义按钮。Plotlyexpress以一种简单的方式满足了这一需求。让我们看看自定义按钮以关注各个国家/地区。fig.update_layout(updatemenus=[dict(type="buttons",direction="right",active=0,x=0.5,y=1.03,buttons=list([dict(label=df1.columns[0],方法="update",args=[{"visible":[True,False,False,False,False]},{'showlegend':True}]),dict(label=df1.columns[1],method="update",args=[{"visible":[False,True,False,False,False]},{'showlegend':True}]),dict(label=df1.columns[2],method="更新",args=[{"visible":[False,False,True,False,False]},{'showlegend':True}]),dict(label=df1.columns[3],method="update",args=[{"visible":[False,False,False,True,False]},{'showlegend':True}]),dict(label=df1.columns[4],method="update",args=[{"visible":[False,False,False,False,True]},{'showlegend':True}]),dict(label='All',method="update",args=[{"visible":[True,True,True,True,True]},{'showlegend':True}]),]),)])4.下拉菜单如果要可视化数据,搞个下拉菜单,就像注解一样简单,丢一行代码。在这里,你只需要注释掉“type="buttons":结论Plotlyexpress绝对是一个很棒的数据可视化工具,它非常容易获得,而且它的工作方式非常像Python。在本文中,我们只是简单介绍一下它所提供的内容的描述。我鼓励您进一步探索这个Python库,因为它的可能性是无穷无尽的!
