




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一文教会你用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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店产权归属协议书
- 茶地种植合同协议书
- 配合申报工伤协议书
- 人工费调整补充协议书
- 办公室家具供货协议书
- 邻居旧房拆建协议书
- 集体商铺转让协议书
- 进京车辆租赁协议书
- 菜鸟驿站合伙协议书
- 餐饮海鲜合作协议书
- 科学探究二力平衡说课课件
- 城市供热管网施工中的重点难点分析及应对措施
- 痛风诊疗规范2023版课件
- 【MOOC】走近国粹 中国陶瓷-中国地质大学(武汉) 中国大学慕课MOOC答案
- 2024年G1工业锅炉司炉理论考试1000题及答案
- 【MOOC】颈肩腰腿痛中医防治-暨南大学 中国大学慕课MOOC答案
- 安全法规-终结性考试-国开(SC)-参考资料
- 公司用工协议书简单范本(2篇)
- 第三单元《增强法治意识》测试卷-高二思想政治课《职业道德与法治》附答案
- 教育革新:2024版《认识交通标志》课件
- (高清版)DB4202∕T 39-2024 城市桥梁与隧道运行监测技术规范
评论
0/150
提交评论