当前位置:   article > 正文

flask+echarts (动态导入csv文件的数据)_echarts导入csv数据集

echarts导入csv数据集

1.概述

效果图

折线图+柱状图
在这里插入图片描述

1.1 运行环境

VS Code,无需其余插件

1.2 数据样式

csv文件数据样式:每一列代表一种数据,这里有三种数据。其中第一列用折线图表示,第二列用柱状图表示。
在这里插入图片描述

2. flask模块

读取csv文件之后,处理里面的数据,再将数据传入HTML里面,让echarts使用这个数据来画图。

from flask import Flask,render_template,request,url_for
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
import re

import requests  #替代浏览器进行网络请求
import numpy as np
import pandas as pd

#创建应用程序:web应用程序
app=Flask(__name__)

@app.route("/")  
def main():
    #将文件名存储在filename中
    filename='data.csv'   
    # 要读取的csv文件
    data=pd.read_csv(filename)  
    # 处理csv文件的数据
    xaxis=[i for i in range(0,20)]  # 横坐标
    all=data['all'].values.tolist()  # 展示数量1
    now=data['now'].values.tolist()  # 展示数量2
    dup=data['dup'].values.tolist()  # 展示数量3
    # 把数据传入HTML文件里面
    return render_template("test.html",xaxis=xaxis,data_all=all,data_now=now,data_dup=dup)

if __name__=='__main__':
    app.run(debug=True) #启动应用程序->启动一个flask项目

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

3. HTML模块

3.1 head部分

head部分引入echarts头文件。使用方法参考这篇文章

<head>
    <meta charset="utf-8" />
    <title>ECharts</title>
    <!-- 引入刚刚下载的 ECharts 文件 -->
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js"></script>
  </head>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2 body部分

body里面更改数据。
在flask模块可以看到,我们已经传入了xaxis,data_all,data_now,data_dup 四个数据。第一个是横坐标要用的数据,剩下的是用于纵坐标的数据。
option里面更改数据的横纵坐标名称,数据引用格式为{{ 数据1 |safe}}
在这里插入图片描述
其他细节更改:
在这里插入图片描述

完整代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>ECharts</title>
    <!-- 引入刚刚下载的 ECharts 文件 -->
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/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 chartDom = document.getElementById('main');
    var myChart = echarts.init(chartDom);
    var option;

    // 配置
    var option = {
    tooltip: {
        trigger: 'axis',
        axisPointer: {
        type: 'cross',
        crossStyle: {
            color: '#999'
        }
        }
    },
    toolbox: {
        feature: {
        dataView: { show: true, readOnly: false },
        magicType: { show: true, type: ['line', 'bar'] },
        restore: { show: true },
        saveAsImage: { show: true }
        }
    },
    legend: {
        data: ['now', 'all', 'dup']
    },
    xAxis: [
        {
        type: 'category',
        data: {{xaxis|safe}},
        axisPointer: {
            type: 'shadow'
        }
        }
    ],
    yAxis: [
        {
        type: 'value',
        name: 'all',
        min: 0,
        max: 100,
        interval: 10,
        axisLabel: {
            formatter: '{value} 个'
        }
        },
        {
        type: 'value',
        name: 'dup',
        min: 0,
        max: 0.15,
        interval: 0.05,
        axisLabel: {
            formatter: '{value} %'
        }
        }
    ],
    series: [
        {
        name: 'now',
        type: 'bar',
        data: {{data_now|safe}}
        },
        {
        name: 'all',
        type: 'bar',
        data: {{data_all|safe}}
        },
        {
        name: 'dup',
        type: 'line',
        yAxisIndex: 1,
        data: {{data_dup|safe}}
        }
    ]
    };

    option && myChart.setOption(option);

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    
    </script>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101

完结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/142143
推荐阅读
相关标签
  

闽ICP备14008679号