当前位置: 东方母婴网 >资讯 > 文章

太阳图平行坐标…5种动态交互可视化让数据讲出更悦耳的故事

2020-04-10 18:15:33  阅读:4140+ 作者:责任编辑。陈微竹0371

选自TowardsDataScience

作者:Liana Mehrabyan

机器之心编译

参加:Panda

数据可以在必定程度上协助咱们描绘这样一个国际、阐释自己的主意和展示自己的效果,但假如只需单调乏味的文本和数字,咱们却往往能难捉住观众的眼球。而许多时分,一张美丽的可视化图表就足以胜过千言万语。本文将介绍 5 种依据 Plotly 的可视化办法,你会发现,本来可视化不只可用直方图和箱形图,还能做得如此动态美观乃至可交互。

对数据科学家来说,讲故事是一个至关重要的技能。为了表达咱们的思维而且压服他人,咱们应该有用的交流。而漂美丽亮的可视化是完结这一使命的绝佳东西。本文将介绍5 种非传统的可视化技能,可让你的数据故事更美丽和更有用。这儿将运用 Python 的 Plotly 图形库(也可经过 R 运用),让你可以毫不费力地生成动画图表和交互式图表。

那么,Plotly 有哪些优点?Plotly 的整合才能很强:可与 Jupyter Notebook 一同运用,可嵌入网站,而且完好集成了 Dash——一种用于构建仪表盘和剖析运用的超卓东西。

发动

假如你还没装置 Plotly,只需在你的终端运转以下指令即可完结装置:

pip install plotly

装置完结后,就开始运用吧!

动画

在研讨这个或那个方针的演化时,咱们常触及到时刻数据。Plotly 动画东西仅需一行代码就能让人观看数据随时刻的改变状况,如下图所示:

代码如下:

import plotly.express as px

from vega_datasets import data

df = 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")

# improve aesthetics (size, grids etc.)

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='Evolution of Natural Disasters',

showlegend=False)

fig.update_xaxes(title_text='Number of Deaths')

fig.update_yaxes(title_text='')

fig.show()

只需你有一个时刻变量来过滤,那么简直任何图表都可以做成动画。下面是一个制造散点图动画的比方:

import plotly.express as px

df = px.data.gapminder()

fig = px.scatter(

df,

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

太阳图

太阳图(sunburst chart)是一种可视化 group by 句子的好办法。假如你想经过一个或多个类别变量来分化一个给定的量,那就用太阳图吧。

假定咱们想依据性别和每天的时刻分化均匀小费数据,那么相较于表格,这种两层 group by 句子可以终究靠可视化来更有用地展示。

这个图表是交互式的,让你可以自己点击并探究各个类别。你只需要界说你的一切类别,并声明它们之间的层次结构(见以下代码中的 parents 参数)并分配对应的值即可,这在咱们事例中即为 group by 句子的输出。

import plotly.graph_objects as go

import plotly.express as px

import numpy as np

import pandas as pd

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='Tipping Habbits Per Gender, Time and Day')

fig.show()

现在咱们向这个层次结构再增加一层:

为此,咱们再增加另一个触及三个类别变量的 group by 句子的值。

import plotly.graph_objects as go

import plotly.express as px

import pandas as pd

import numpy as np

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='Tipping Habbits Per Gender, Time and Day')

fig.show()

平行类别

另一种探究类别变量之间联络的办法是以下这种流程图。你可以随时拖放、高亮和阅读值,很合适演示时运用。

代码如下:

import plotly.express as px

from vega_datasets import data

import pandas as pd

df = data.movies()

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

平行坐标图

平行坐标图是上面的图表的接连版别。这儿,每一根弦都代表单个调查。这是一种可用于辨认离群值(远离其它数据的单条线)、聚类、趋势和冗余变量(比方假如两个变量在每个调查上的值都附近,那么它们将坐落同一水平线上,表明存在冗余)的好用东西。

代码如下:

import plotly.express as px

from vega_datasets import data

import pandas as pd

df = data.movies()

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.sequential.Emrld)

fig.show()

量表图和指示器

量表图只是是为了美观。在陈述 KPI 等成功方针并展示其与你的方针的间隔时,可以正常的运用这种图表。

指示器在事务和咨询中非常有用。它们可以终究靠文字记号来弥补视觉效果,招引观众的注意力并展示你的增加方针。

import plotly.graph_objects as go

fig = go.Figure(go.Indicator(

domain = {'x': [0, 1], 'y': [0, 1]},

value = 4.3,

mode = "gauge+number+delta",

title = {'text': "Success Metric"},

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

原文链接:https://towardsdatascience.com/5-visualisations-to-level-up-your-data-story-e131759c2f41

本文为机器之心编译,转载请联络本大众号取得授权。

------------------------------------------------

参加机器之心(全职记者 / 实习生):hr@jiqizhixin.com

投稿或寻求报导:content@jiqizhixin.com

广告 & 商务协作:bd@jiqizhixin.com

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!

点击排行
睿宝儿科联合富士instax教育:守护儿童健康,共创美好回忆
睿宝儿科联合富士instax教育:守护儿童健康,共创美好回忆

所有家长都希望自己的孩子能够健康快乐的成...

富士instax教育联手三野石孕童摄影,为准妈妈送上“爱的体验”
富士instax教育联手三野石孕童摄影,为准妈妈送上“爱的体验”

摄影的意义在于它能留住生命中美好的瞬间。...

孩子早产脑子发育不良的后果早产儿如何护理
孩子早产脑子发育不良的后果早产儿如何护理

一、早产儿脑部发育不良的并发症  1.心血...

Kipling官宣品牌大使Selina任家萱 携手乐活女神——“轻轻我行,即兴乐活”
Kipling官宣品牌大使Selina任家萱 携手乐活女神——“轻轻我行,

明媚而崭新的春日与3.8女神节共同来临之际...

新生儿水中毒了怎么办怎么给宝宝科学的喂水
新生儿水中毒了怎么办怎么给宝宝科学的喂水

一、婴儿水中毒的症状有哪些  要知道对于...

青紫型新生儿的原因解析新生儿皮肤青紫的6大原因
青紫型新生儿的原因解析新生儿皮肤青紫的6大原因

一、新生儿皮肤青紫的原因  局部青紫  ...

儿童喉咙发炎引起呕吐的原因儿童喉咙发炎引起呕吐的
儿童喉咙发炎引起呕吐的原因儿童喉咙发炎引起呕吐的

  在日常生活之中,小孩子经常会出现喉咙...

16天新生儿黄疸值190高吗新生儿黄疸指数高的原因有哪些
16天新生儿黄疸值190高吗新生儿黄疸指数高的原因有哪些

一、正常新生儿黄疸值是多少  足月出生宝...

黄疸指数高的危害黄疸高怎么治疗
黄疸指数高的危害黄疸高怎么治疗

一、为什么黄疸会偏高  1、新生儿的体内...

小孩出麻疹症状小孩护理措施
小孩出麻疹症状小孩护理措施

  因为宝宝的身体比较弱,抵抗力还没有发...

新生儿脐炎首选抗生素九个步骤轻松护理宝宝的脐部
新生儿脐炎首选抗生素九个步骤轻松护理宝宝的脐部

一、新生儿脐炎首选抗生素  新生儿脐带发...

曼龙,用爱见证传承,一路陪伴成长
曼龙,用爱见证传承,一路陪伴成长

曼龙创始人:“做这个品牌的初衷,只是为了...