当前位置:主页 > 业界动态 > WEB3.0 > 元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

2022-06-03 17:59:04来源:互联网

文章导读
作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来为大家安利另外一个用于绘制可视化图表的 Python 框架,名叫 Dash ,建立在 Flask 、 Plotly.js 以及 React.js 的基础之上,在创建之出的目的是 ...

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

作者 | 俊欣

来源 | 关于数据分析与可视化

今天小编来为大家安利另外一个用于绘制可视化图表的Python框架,名叫Dash,建立在FlaskPlotly.js以及React.js的基础之上,在创建之出的目的是为了帮助前端知识匮乏的数据分析人员,以纯Python编程的方式快速制作出交互特性强的数据可视化大屏,在经过多年的迭代发展,如今不仅仅可以用来开发在线数据可视化作品,即便是轻量级的数据仪表盘、BI应用甚至是博客或者是常规的网站都随处可见Dash框架的影子,今天小编就先来介绍一下该框架的一些基础知识,并且来制作一个简单的数据可视化大屏。

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了


元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

Dash框架中的两个基本概念


我们先来了解一下Dash框架中的两个基本概念

Layout

Callbacks

Layout顾名思义就是用来设计可视化大屏的外观和布局,添加一些例如下拉框、单选框、复选框、输入框、文本框、滑动条等组件,其中Dash框架对HTML标签也进行了进一步的封装,使得我们直接可以通过Python代码来生成和设计每一个网页所需要的元素,例如

<div>
<h1>HelloWorld!!</h1>
<div>
<p>DashconvertsPythonclassesintoHTML</p>
</div>
</div>

我们转化成DashPython结构就是

html.Div([
html.H1('HelloDash'),
html.Div([
html.P('DashconvertsPythonclassesintoHTML'),
])
])

Callbacks也就是回调函数,基本上是以装饰器的形式来体现的,实现前后端异步通信的交互,例如我们在点击按钮或者下拉框之后出现的功能就是通过回调函数来实现的。


元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

安装和导入模块


在导入模块之前,我们先用pip命令来进行安装,!pipinstalldash
!pipinstalldash-html-components
!pipinstalldash-core-components
!pipinstallplotly
然后我们导入这些刚刚安装完的模块,其中dash-html-components用来生成HTML标签,dash-core-components模块用来生成例如下拉框、输入框等组件,这里我们还需要用到plotly模块,因为我们需要用到的数据来自该模块,里面是一众互联网公司过去一段时间中股价的走势importdash
importdash_html_componentsashtml
importdash_core_componentsasdcc
importplotly.graph_objectsasgo
importplotly.expressaspx


元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

读取数据并且绘制折线图


那么我们读取数据并且用plotly来绘制折线图,代码如下:app=dash.Dash()#实例化Dash
df=px.data.stocks()#读取股票数据

defstock_prices():
#绘制折线图
fig=go.Figure([go.Scatter(x=df['date'],y=df['AAPL'],
line=dict(color='firebrick',width=4),name='Apple')
])
fig.update_layout(title='股价随着时间的变幻',
xaxis_title='日期',
yaxis_title='价格'
)
returnfig

app.layout=html.Div(id='parent',children=[
html.H1(id='H1',children='Dash案例一',style={'textAlign':'center',
'marginTop':40,'marginBottom':40}),
dcc.Graph(id='line_plot',figure=stock_prices())
])

if__name__=='__main__':
app.run_server()
我们点击运行之后会按照提示将url复制到浏览器当中便可以看到出来的结果了,如下所示

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

从代码的逻辑上来看,我们通过Dash框架中的Div方法来进行页面的布局,其中有参数id来指定网页中的元素,以及style参数来进行样式的设计,最后我们将会指出来的图表放在dcc.Graph()函数当中。

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

添置一个下拉框


然后我们再添置一个下拉框,当我们点击这个下拉框的时候,可是根据我们的选择展示不同公司的股价,代码如下:dcc.Dropdown(id='dropdown',
options=[
{'label':'谷歌','value':'GOOG'},
{'label':'苹果','value':'AAPL'},
{'label':'亚马逊','value':'AMZN'},
],
value='GOOG'),
output

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

options参数中的label对应的是下拉框中的各个标签,而value对应的是DataFrame当中的列名df.head()
output

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了


元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

添加回调函数


最后我们将下拉框和绘制折线图的函数给连接起来,我们点击下拉框选中不同的选项的时候,折线图也会相应的产生变化,@app.callback(Output(component_id='bar_plot',component_property='figure'),
[Input(component_id='dropdown',component_property='value')])
defgraph_update(dropdown_value):
print(dropdown_value)
#FunctionforcreatinglinechartshowingGooglestockpricesovertime
fig=go.Figure([go.Scatter(x=df['date'],y=df['{}'.format(dropdown_value)],
line=dict(color='firebrick',width=4))
])
fig.update_layout(title='股价随着时间的变幻',
xaxis_title='日期',
yaxis_title='价格'
)
returnfig

我们看到callback()方法中指定输入和输出的媒介,其中Input参数,里面的component_id对应的是下拉框的id也就是dropdown,而Output参数,当中的component_id对应的是折线图的id也就是bar_plot,我们来看一下最后出来的结果如下

元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了

最后,全部的代码如下所示

importdash
importdash_html_componentsashtml
importdash_core_componentsasdcc
importplotly.graph_objectsasgo
importplotly.expressaspx
fromdash.dependenciesimportInput,Output

app=dash.Dash()
df=px.data.stocks()

app.layout=html.Div(id='parent',children=[
html.H1(id='H1',children='Dash案例一',style={'textAlign':'center',
'marginTop':40,'marginBottom':40}),
dcc.Dropdown(id='dropdown',
options=[
{'label':'谷歌','value':'GOOG'},
{'label':'苹果','value':'AAPL'},
{'label':'亚马逊','value':'AMZN'},
],
value='GOOG'),
dcc.Graph(id='bar_plot'),
])

@app.callback(Output(component_id='bar_plot',component_property='figure'),
[Input(component_id='dropdown',component_property='value')])
defgraph_update(dropdown_value):
print(dropdown_value)
fig=go.Figure([go.Scatter(x=df['date'],y=df['{}'.format(dropdown_value)],
line=dict(color='firebrick',width=4))
])
fig.update_layout(title='股价随着时间的变幻',
xaxis_title='日期',
yaxis_title='价格'
)
returnfig

if__name__=='__main__':
app.run_server()


元宇宙快讯:50 行 Python 代码绘制数据大屏,这个可视化框架真的太神了



往期回顾




热门文章
日榜 周榜
1 V神:加密世界的和平与共识 需要斗争与付出

10-15 年前的「新理想主义运动」场景与今天的一个很大区别在于,当时人们感觉可以同时加入...

2 Vitalik:激进去中心化——实现自由之路

如今,各种世界性问题层出不穷,民粹主义甚嚣尘上。资本和技术都没有带给我们“美好的明...

3 Meta Football World Cup进军足球元宇宙

你肯定听说过 Metaverse ,以及它会如何成为互联网的下一个版本。对大多数人来说,它带来了巨...

4 世界首台常温量子计算机启用!无需绝对零度,主核竟然「镶钻

新智元报道 编辑:拉燕 好困 【新智元导读】 21世纪初「一直有进展、永远没落地」的吹嘘性...

5 Web3将开辟新大陆

告诉我动机,我就会告诉你结果。 查理·芒格的这句著名的台词虽然有点过于简单,但有点像...

6 全球Web3生态云端峰会顺利收官,GWEI 2022-新加坡大会即将接棒!

2022年4月13日,由DeFi之道主办的全球Web3生态创新云端峰会(Global Web3 Eco Innovation Online Summit)正...

7 Web3公司收入情况概览:Ethereum成最强收入机器

TLDR; 结论: (1)总收入: Web3商业模式已经大有发展,其中最强大的仍然是出售区块空间,其...

8 为什么说a16z可能在“垄断”Web 3?

距离Bill Hwang单日暴亏150亿美元,终结中概股行情仅过去一年,另一位韩国人Do Kwon用了三天,便...

9 热点新闻 | 小派发布行业首款8K双模一体机Pimax Crystal、MagicLeap

XR领域热点新闻 撰写:新浪VR |图源:互联网 |排版:潇飞 小派发布行业首款8K双模一体机Pima...

10 NBA Top Shot 已经衰落;「饥饿游戏」联合制片人推出Web3多媒体科

眼看NBA Top Shot高楼起,又见它不合时宜的衰落 「饥饿游戏」联合制片人推出Web3.0多媒体科幻项...

1 V神:加密世界的和平与共识 需要斗争与付出

10-15 年前的「新理想主义运动」场景与今天的一个很大区别在于,当时人们感觉可以同时加入...

2 Vitalik:激进去中心化——实现自由之路

如今,各种世界性问题层出不穷,民粹主义甚嚣尘上。资本和技术都没有带给我们“美好的明...

3 Meta Football World Cup进军足球元宇宙

你肯定听说过 Metaverse ,以及它会如何成为互联网的下一个版本。对大多数人来说,它带来了巨...

4 世界首台常温量子计算机启用!无需绝对零度,主核竟然「镶钻

新智元报道 编辑:拉燕 好困 【新智元导读】 21世纪初「一直有进展、永远没落地」的吹嘘性...

5 Web3将开辟新大陆

告诉我动机,我就会告诉你结果。 查理·芒格的这句著名的台词虽然有点过于简单,但有点像...

6 全球Web3生态云端峰会顺利收官,GWEI 2022-新加坡大会即将接棒!

2022年4月13日,由DeFi之道主办的全球Web3生态创新云端峰会(Global Web3 Eco Innovation Online Summit)正...

7 Web3公司收入情况概览:Ethereum成最强收入机器

TLDR; 结论: (1)总收入: Web3商业模式已经大有发展,其中最强大的仍然是出售区块空间,其...

8 为什么说a16z可能在“垄断”Web 3?

距离Bill Hwang单日暴亏150亿美元,终结中概股行情仅过去一年,另一位韩国人Do Kwon用了三天,便...

9 热点新闻 | 小派发布行业首款8K双模一体机Pimax Crystal、MagicLeap

XR领域热点新闻 撰写:新浪VR |图源:互联网 |排版:潇飞 小派发布行业首款8K双模一体机Pima...

10 NBA Top Shot 已经衰落;「饥饿游戏」联合制片人推出Web3多媒体科

眼看NBA Top Shot高楼起,又见它不合时宜的衰落 「饥饿游戏」联合制片人推出Web3.0多媒体科幻项...

撤稿申请|

备案号:鄂ICP备2022006215号 Copyright © 2002-2022 metaversezj.com.cn 元宇宙之家 版权所有