一文教会你用Python绘制动态可视化图表_第1页
一文教会你用Python绘制动态可视化图表_第2页
一文教会你用Python绘制动态可视化图表_第3页
一文教会你用Python绘制动态可视化图表_第4页
一文教会你用Python绘制动态可视化图表_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一文教会你用Python绘制动态可视化图表目录前言安装模块可视化动态图太阳图指针图桑基图平行坐标图总结

前言

对数据科学家来说,讲故事是一个至关重要的技能。为了表达我们的思想并且说服别人,我们需要有效的沟通。而漂漂亮亮的可视化是完成这一任务的绝佳工具。

本文将介绍5种非传统的可视化技术,可让你的数据故事更漂亮和更有效。这里将使用Python的Plotly图形库,让你可以毫不费力地生成动画图表和交互式图表。

安装模块

如果你还没安装Plotly,只需在你的终端运行以下命令即可完成安装:

pipinstallplotly

可视化动态图

在研究这个或那个指标的演变时,我们常涉及到时间数据。Plotly动画工具仅需一行代码就能让人观看数据随时间的变化情况,如下图所示:

代码如下:

importplotly.expressaspx

fromvega_datasetsimportdata

df=data.disasters()

df=df[df.Year1990]

fig=px.bar(df,

y="Entity",

x="Deaths",

animation_frame="Year",

orientation='h',

range_x=[0,df.Deaths.max()],

color="Entity")

#improveaesthetics(size,gridsetc.)

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='EvolutionofNaturalDisasters',

showlegend=False)

fig.update_xaxes(title_text='NumberofDeaths')

fig.update_yaxes(title_text='')

fig.show()

只要你有一个时间变量来过滤,那么几乎任何图表都可以做成动画。下面是一个制作散点图动画的例子:

importplotly.expressaspx

df=px.data.gapminder()

fig=px.scatter(

x="gdpPercap",

y="lifeExp",

animation_frame="year",

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.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)')

太阳图

太阳图(sunburstchart)是一种可视化groupby语句的好方法。如果你想通过一个或多个类别变量来分解一个给定的量,那就用太阳图吧。

假设我们想根据性别和每天的时间分解平均小费数据,那么相较于表格,这种双重groupby语句可以通过可视化来更有效地展示。

这个图表是交互式的,让你可以自己点击并探索各个类别。你只需要定义你的所有类别,并声明它们之间的层次结构(见以下代码中的parents参数)并分配对应的值即可,这在我们案例中即为groupby语句的输出。

importplotly.graph_objectsasgo

importplotly.expressaspx

importnumpyasnp

importpandasaspd

df=px.data.tips()

fig=go.Figure(go.Sunburst(

labels=["Female","Male","Dinner","Lunch",'Dinner','Lunch'],

parents=["","","Female","Female",'Male','Male'],

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()

现在我们向这个层次结构再添加一层:

为此,我们再添加另一个涉及三个类别变量的groupby语句的值。

importplotly.graph_objectsasgo

importplotly.expressaspx

importpandasaspd

importnumpyasnp

df=px.data.tips()

fig=go.Figure(go.Sunburst(labels=[

"Female","Male","Dinner","Lunch",'Dinner','Lunch','Fri','Sat',

'Sun','Thu','Fri','Thu','Fri','Sat','Sun','Fri','Thu'

parents=[

"","","Female","Female",'Male','Male',

'Dinner','Dinner','Dinner','Dinner',

'Lunch','Lunch','Dinner','Dinner',

'Dinner','Lunch','Lunch'

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.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()

指针图

指针图仅仅是为了好看。在报告KPI等成功指标并展示其与你的目标的距离时,可以使用这种图表。

importplotly.graph_objectsasgo

fig=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':"gray"}],

fig.show()

桑基图

另一种探索类别变量之间关系的方法是以下这种平行坐标图。你可以随时拖放、高亮和浏览值,非常适合演示时使用。

代码如下:

importplotly.expressaspx

fromvega_datasetsimportdata

importpandasaspd

df=data.movies()

df=df.dropna()

df['Genre_id']=df.Major_Genre.factorize()[0]

fig=px.parallel_categories(

dimensions=['MPAA_Rating','Creative_Type','Major_Genre'],

color="Genre_id",

color_continuous_scale=px.colors.sequential.Emrld,

fig.show()

平行坐标图

平行坐标图是上面的图表的衍生版本。这里,每一根弦都代表单个观察。这是一种可用于识别离群值(远离其它数据的单条线)、聚类、趋势和冗余变量(比如如果两个变量在每个观察上的值都相近,那么它们将位于同一水平线上,表示存在冗余)的好用工具。

代码如下:

importplotly.expressaspx

fromvega_datasetsimportdata

importpandasaspd

df=data.movies()

df=df.dropna()

df['Genre_id']=df.Major_Genre.factorize()[0]

fig=px.parallel_c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论