flask pyecharts_教你用pyecharts制作交互式桑基图,赶快学起来吧!

v2-dbc7f5db840949c8b057662cb4da6c81_1440w.jpg?source=172ae18b

由于工作的需要,经常需要进行可视化展示,除了一些常用的BI工具,我也会使用python对数据进行可视化。

python的第三方可视化库有很多,比如matplotlib、seaborn、plotly、bokeh、pyecharts等等。

这次就来说一说,如何用python的第三方库-pyecharts制作交互式桑基图。

v2-8ce04543397edad59d5ea84a0c815e6d_b.jpg
示例

什么是桑基图?

桑基图是可视化图表的一种,一般用来表示数据流量。

桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据 流量的大小,比较适用于用户流量等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

桑基图主要由边、流量和支点组成,其中边代表了流动的数据,流量代表了流动数据的具体数值,节点代表了不同分类。边的宽度与流量成比例地显示,边越宽,数值越大。

v2-a51f19e20f048d12346ac97672e7b5b9_b.jpg

举个例子,假如我记录了自己一段时间的消费金额,并且分门别类列出清单:

v2-ef56c192adfbe0ca8da79961b3d1635e_b.jpg

数据展示不足以一目了然地看出哪类消费多、哪类消费少,如果把它做成桑基图,就可以很完美地展现消费特征:

v2-8dd70424e7d99dabedd3f7c415791849_b.jpg
静图

v2-e7f273de20b340b7b41cb477a50eae3b_b.gif
可交互

什么是pyecharts?

大部分人可能听过echarts,它是百度旗下用于可视化设计的开源项目,而pyecharts则将echarts和python结合,方便在python中调用echarts接口,直接生成可视化图表。

官方对pyecharts特性的描述:

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

pyecharts安装过程很简单,用pip安装即可,在命令行输入:

pip install pyecharts

你只需要简单的代码就可以生成图表:

from 

v2-4dacd9f738d9fba873f93c690de67a03_b.jpg

使用pyecharts制作桑基图

前面我们展示了一张生活开支交互式桑基图:

v2-e7f273de20b340b7b41cb477a50eae3b_b.gif

下面就来用pyecharts实现它

桑基图在pyecharts中通过Sankey方法实现,它接受两个外部输入。一个是所有类别的集合-nodes,一个是子类、父类、数据的三方集合-links。这两个都是以json数据格式传入,最后以html形式输出图表。

nodes

v2-97a6dc60abc7e58b2a3e24f57dfe7abc_b.jpg

links:

v2-27a1bd702068db7256535ff6894c20cc_b.jpg

也就是说,首先你要把数据转换成Sankey可以接受的形式。

第一步:数据准备

我们已经有这样的数据表:

v2-ef56c192adfbe0ca8da79961b3d1635e_b.jpg

对数据进行整理,我的做法是先初步整理成:子类-父类-数据,以这样的数据形式保存在csv中:

v2-e792c41ca450f4561ead7d55ba6148c1_b.jpg

接着,写个简单转换代码,将上面数据转换成nodes和links:

# 导入相关库
import pandas as pd
from pyecharts.charts import Page, Sankey
from pyecharts import options as opts

# 读取csv文件
data = pd.read_csv(r'sample.csv',encoding='gbk',header=None)

# 生成nodes
nodes = []
nodes.append({'name':'总支出'})
for i in data[0].unique():
    dic = {}
    dic['name'] = i
    nodes.append(dic)

# 生成links
links = []
for i in data.values:
    dic = {}
    dic['source'] = i[0]
    dic['target'] = i[1]
    dic['value'] = i[2]
    links.append(dic)

第二步:生成可视化结果

准备好nodes和links后,就可以调用Sankey函数

# pyecharts 所有方法均支持链式调用。
c = (
        Sankey()
        .add(
"费用/元",
            nodes,
            links,
            linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source",type_="dotted"),
            label_opts=opts.LabelOpts(position="right",),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="我的生活支出一览"))
    )
# 输出html可视化结果
c.render('result.html')

你可以通过配置项otps来设置图表的颜色、标签、标题等信息,具体细节可以去官网查询,这里不做赘述。

官网链接:https://pyecharts.org

第三步:打开html文件

生成html文件后,直接通过浏览器打开即可,就可以看到能交互的桑吉图了

v2-e7f273de20b340b7b41cb477a50eae3b_b.gif

结论

本文介绍了如何使用pyecharts在python中制作交互式桑基图,希望能给大家的可视化提供帮助!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FlaskPyecharts都是Python中非常流行的库,可以用于制作数据大屏。下面是一个简单的步骤,帮助你开始制作属于自己的数据大屏。 步骤1:安装FlaskPyecharts 要使用FlaskPyecharts,首先需要安装它们。可以使用pip命令来安装它们,如下所示: ``` pip install flask pip install pyecharts ``` 步骤2:创建Flask应用程序 Flask是一个轻量级的Web框架,可以用于快速创建Web应用程序。在这个步骤中,我们将创建一个Flask应用程序。 创建一个名为app.py的文件,并输入以下代码: ```python from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True) ``` 这个应用程序很简单,只是返回了一个"Hello, World!"的字符串。但是,它可以运行在本地服务器上,这就是Flask的强大之处。 步骤3:创建Pyecharts图表 Pyecharts是一个非常强大的数据可视化库,可以用于创建各种各样的图表。在这个步骤中,我们将使用Pyecharts创建一个简单的柱状图。 在app.py文件中添加以下代码: ```python from pyecharts.charts import Bar from pyecharts import options as opts @app.route('/bar_chart') def bar_chart(): x_data = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] y_data = [820, 932, 901, 934, 1290, 1330, 1320] c = Bar() c.add_xaxis(x_data) c.add_yaxis("Sales", y_data) c.set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart")) return c.render_embed() ``` 这个代码将会创建一个柱状图,显示每周的销售情况。在这个例子中,我们使用了Bar类来创建柱状图。我们还设置了x轴和y轴的数据,然后在图表上添加了一个标题。 步骤4:在Flask应用程序中使用Pyecharts图表 在上一个步骤中,我们创建了一个Pyecharts图表。现在,我们需要在Flask应用程序中使用这个图表。 在app.py文件中添加以下代码: ```python from flask import Flask, render_template @app.route('/bar_chart') def bar_chart(): x_data = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] y_data = [820, 932, 901, 934, 1290, 1330, 1320] c = Bar() c.add_xaxis(x_data) c.add_yaxis("Sales", y_data) c.set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart")) return render_template('bar_chart.html', chart=c.render_embed()) ``` 在这个代码中,我们添加了一个新的路由'/bar_chart',当用户访问这个路由时,应用程序将返回一个包含图表的HTML页面。我们使用render_template函数来渲染这个页面,并将图表嵌入到HTML中。 步骤5:创建HTML模板 在前面的步骤中,我们创建了一个包含图表的HTML页面。现在,我们需要创建这个HTML页面的模板。 在项目的根目录中创建一个名为templates的文件夹,并在其中创建一个名为bar_chart.html的文件。在这个文件中,添加以下代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bar Chart</title> {{ chart }} </head> <body> </body> </html> ``` 这个HTML文件非常简单,只包含一个图表和一些基本的HTML代码。 步骤6:运行Flask应用程序 现在,我们已经完成了Flask应用程序和Pyecharts图表的创建,并且已经创建了一个HTML模板。现在,我们可以运行Flask应用程序,并在浏览器中查看我们创建的数据大屏。 在命令行中输入以下命令: ``` python app.py ``` 然后,在浏览器中输入以下URL: ``` http://localhost:5000/bar_chart ``` 你应该可以看到一个包含了我们创建的柱状图的页面。 这只是一个简单的例子,但是它展示了如何使用FlaskPyecharts创建一个数据大屏。你可以使用各种各样的Pyecharts图表来可视化不同的数据,从而创建一个更加复杂和有用的数据大屏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值