前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask和echarts做可视化图表

Flask和echarts做可视化图表

作者头像
赵云龙龙
发布2022-04-26 20:28:42
6450
发布2022-04-26 20:28:42
举报
文章被收录于专栏:python爱好部落python爱好部落

现在是数据的时代,但是一堆数据是不直观的。我们需要可观测性,用图表展现出来,各种大屏可视化,看起来高大上的样子。截图的话,不够灵活,如果在PPT里能用动图展示,会让你的PPT增色不少。 可视化的工具很多,现在python各种库都能可视化,比如matplotlib,pycharts.

今天要说的是echarts可视化。 echarts是百度开源的纯js的可视化,现在是apache开源项目。 可以直接在https://echarts.apache.org/examples/zh/index.html#chart-type-bar下载到各种模型。 安装也比较简单:

从 npm 获取

代码语言:javascript
复制
npm install echarts --save

详见在项目中引入 Apache ECharts。

从 CDN 获取

推荐从 jsDelivr 引用 echarts。

从 GitHub 获取

apache/echarts 项目的 release 页面可以找到各个版本的链接。点击下载页面下方 Assets 中的 Source code,解压后 dist 目录下的 echarts.js 即为包含完整 ECharts 功能的文件。

在线定制

如果只想引入部分模块以减少包体积,可以使用 ECharts 在线定制功能。

现在以矩形为例,看Echarts官网文档的教程,下面的代码也是复制教程里的。

代码语言:javascript
复制
<head>
    <meta charset="UTF-8">
    <title>Echarts</title>
    <script src="/static/js/echarts.min.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>

可以看出,上面的代码图表的元素都是写死的。我们改造一下,用flask搭建框架来获取。 先安装flask:

代码语言:javascript
复制
pip3 install flask

建一个template/data.html, 下面的代码是从后台读数据,使用json和ajax请求

代码语言:javascript
复制
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Echarts</title>
<!--    <script src="/static/js/echarts.min.js"></script>-->
    <script src="{{ url_for('static', filename='jquery-3.5.1.min.js') }}"></script>
     <script src="{{ url_for('static', filename='echarts.min.js') }}"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
$(function () {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main'));
            $.ajax({
                url:'/getdata',
                success:function (data) {
                    json_data=JSON.parse(data)

                    console.info(json_data['language'])
                    console.info(json_data['value'])

                    // 指定图表的配置项和数据
                    var option = {
                        title: {
                            text: '学习语言人数统计'
                        },
                        tooltip: {},
                        legend: {
                            data:['销量']
                        },
                        xAxis: {
                            data: json_data['language']
                        },
                        yAxis: {},
                        series: [{
                            name: '销量',
                            type: 'bar',
                            data: json_data['value']
                        }]
                    };
                    // 使用刚指定的配置项和数据显示图表。
                    myChart.setOption(option);

                }
            })
        })
    </script>
</body>
</html>

flask的主函数可以这样写:

代码语言:javascript
复制
from flask import Flask
from flask import url_for,render_template
import json
app = Flask(__name__)


@app.route('/')
def my():
    return render_template('data.html')


@app.route('/getdata')
def get_data():
    language = ['python', 'java', 'c', 'c++', 'c#', 'php']
    value = ['100', '150', '100', '90', '80', '90']
    return json.dumps({'language':language,'value':value},ensure_ascii=False)


if __name__ == '__main__':
   app.run(debug=True)

然后就是需要将echarts.min.js,和jquery.min.js导入到下static。 运行,效果如下:

大工告成,如此简单。 如果想插入PPT,有两种方法,第一种就是插入,加载项,web地址。 第二种就是插入gif图片。 这样就一个动态的PPT就做出来了,如果想要其他图片,相应的改改就行了,还是很好用的。 如果想更炫酷,可以去git上去找些模板。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python粉丝团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从 npm 获取
  • 从 CDN 获取
  • 从 GitHub 获取
  • 在线定制
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档