这5种动态炫酷图,用Python就可以画!
小白学视觉
共 6592字,需浏览 14分钟
·
2021-11-05 09:39
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
作者丨Liana Mehrabyan
数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。而很多时候,一张漂亮的可视化图表就足以胜过千言万语。本文将介绍 5 种基于 Plotly 的可视化方法,你会发现,原来可视化不仅可用直方图和箱形图,还能做得如此动态好看甚至可交互。
pip install 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) )
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()
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()
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()
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
评论