网约车大数据综合项目——数据可视化Flask+Echarts

网约车大数据综合项目——数据可视化Flask+Echarts

第1关 使用饼图展示撤销订单理由最多的前10种理由

class Config(object):
    #连接数据库
    ########## Begin ##########
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123123@0.0.0.0:3306/trafficdb"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    ########## End ##########
from app import  db
########## Begin ##########
class cancelreason(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    cancelreason = db.Column(db.String(50))
    num = db.Column(db.Integer)
########## End ##########
from sqlalchemy.sql.elements import Cast
from app import db, app
from app.models.cancelreason import cancelreason
from flask import render_template, jsonify
@app.route("/cancelreasondata",methods=['POST'])
def cancel_reason():
    ########## Begin ##########
    cancelreasondata = cancelreason.query.order_by(cancelreason.num.desc()).all()
    list_ = []
    for x in cancelreasondata:
        data={
                "cancelreason":x.cancelreason,
                "num":x.num
            }
        list_.append(data)
    return jsonify(list_)
    ########## End ##########
@app.route("/cancelreason",methods=['GET'])
def home1():
    return render_template("cancelreason.html")
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8080)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>撤销订单理由top10</title>
</head>
<body>
<div id="main" style="height: 800px;width:1200px;background:white;margin:20px 0 0;"></div>
<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<script type="text/JavaScript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
    /********** Begin **********/
    $(document).ready(function () {
        var myChart = echarts.init(document.getElementById('main'));
        $.ajax({
            type: "post",
            async: true,
            url: "/cancelreasondata",
            dataType: "json",
            success: function (result) {
                var cancelreasons = [];
                var data = [];
                for (var i = 0; i < result.length; i++) {
                    cancelreasons.push(result[i].cancelreason);
                    data.push({"value": result[i].num, "name": result[i].cancelreason});
                }
                option = {
                    title: {
                        text: '撤销订单理由top10',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{a} <br/>{b} : {c} ({d}%)'
                    },
                    legend: {
                        orient: 'vertical',
                        left: 'left',
                        data: cancelreasons
                    },
                    series: [
                        {
                            name: '访问来源',
                            type: 'pie',
                            radius: '55%',
                            center: ['50%', '60%'],
                            data: data,
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        }
                    ]
                };
                myChart.setOption(option);
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
            }
        });
    });
    /********** End **********/
</script>
</body>
</html>

第2关:使用柱状图展示成功订单最多的10个地区

class Config(object):
    #连接数据库
    ########## Begin ##########
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123123@0.0.0.0:3306/trafficdb"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    ########## End ##########
from app import  db
########## Begin ##########
class order_district(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    districtname = db.Column(db.String(50))
    num = db.Column(db.Integer)
########## End ##########
from sqlalchemy.sql.elements import Cast
from app import db, app
from app.models.order_district import order_district
from flask import render_template, jsonify
@app.route("/order_districtdata",methods=['POST'])
def order_districtdata():
    ########## Begin ##########
    order_districtdata = order_district.query.order_by(order_district.num.desc()).all()
    list_ = []
    for x in order_districtdata:
        data={
                "districtname":x.districtname,
                "num":x.num
            }
        list_.append(data)
    print(list_)
    return jsonify(list_)
    ########## End ##########
@app.route("/order_district",methods=['GET'])
def home2():
    return render_template("order_district.html")
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>成功订单数量最高的地区top10</title>
</head>
<body>
<center>
<div id="main" style="height: 750px;width:1000px;background:white;margin:20px 0 0;"></div>
</center>
<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<script type="text/JavaScript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
    /********** Begin **********/
    $(document).ready(function () {
        var myChart = echarts.init(document.getElementById('main'));
        $.ajax({
            type: "post",
            async: true,
            url: "/order_districtdata",
            dataType: "json",
            success: function (result) {
                var districtnames = [];
                var data = [];
                for (var i = 0; i < result.length; i++) {
                    districtnames.push(result[i].districtname);
                    data.push(result[i].num);
                }
                option = {
                    title: {
                        text: '成功订单数量最高的地区top10',
                        left: 'center'
                    },
                    color: ['#3398DB'],
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                            type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
                        }
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    xAxis: [
                        {
                            type: 'category',
                            data: districtnames,
                            axisTick: {
                                alignWithLabel: true
                            },
                            axisLabel: {
                                interval: 0,
                                formatter: function (value) {
                                    return value.split("").join("\n");
                                }
                            },
                        }
                    ],
                    yAxis: [
                        {
                            type: 'value'
                        }
                    ],
                    series: [
                        {
                            name: '成功订单数量',
                            type: 'bar',
                            barWidth: '60%',
                            data: data
                        }
                    ]
                };
                myChart.setOption(option);
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
            }
        });
    });
    /********** End **********/
</script>
</body>
</html>

第3关 在湖南省地图上用热力图展示各个市的订单数量

class Config(object):
    #连接数据库
    ########## Begin ##########
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123123@0.0.0.0:3306/trafficdb"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    ########## End ##########
from app import  db
########## Begin ##########
class orderbycity(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    city = db.Column(db.String(50))
    num = db.Column(db.Integer)
########## End ##########
from sqlalchemy.sql.elements import Cast
from app import db, app
from app.models.tb_orderbycity import orderbycity
from flask import render_template, jsonify
########## Begin ##########
@app.route("/orderbycitydata",methods=['POST'])
def orderbycitydata():
    orderbycitydata = orderbycity.query.order_by(orderbycity.num.desc()).all()
    list_ = []
    for x in orderbycitydata:
        data={
                "city":x.city,
                "num":x.num
            }
        list_.append(data)
    print(list_)
    return jsonify(list_)
@app.route("/orderbycity",methods=['GET'])
def home4():
    return render_template("orderbycity.html")
########## End ##########
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>湖南省各个城市订单数量</title>
</head>
<body>
<center>
    <div id="main" style="height: 750px;width:1000px;background:white;margin:20px 0 0;"></div>
</center>
<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<script type="text/JavaScript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
    /********** Begin **********/
    $(document).ready(function () {
        $.ajax({
            type: "post",
            async: true,
            url: "/orderbycitydata",
            dataType: "json",
            success: function (result) {
                var data = [];
                for (var i = 0; i < result.length; i++) {
                    data.push(data.push({"value": result[i].num, "name": result[i].city}));
                }
                var url = window.location.href;
                var myChart = echarts.init(document.getElementById('main'));
                myChart.showLoading();
                $.get(url.substring(0, url.lastIndexOf("/")) + '/static/hunan.json', function (geoJson) {
                    myChart.hideLoading();
                    echarts.registerMap('hunan', geoJson);
                    myChart.setOption(option = {
                        title: {
                            text: '湖南省各个市网约车订单数量',
                            left: 'center'
                        },
                        tooltip: {
                            trigger: 'item',
                            formatter: '{b}<br/>{c} (p / km2)'
                        },
                        toolbox: {
                            show: true,
                            orient: 'vertical',
                            left: 'right',
                            top: 'center',
                            feature: {
                                dataView: {readOnly: false},
                                restore: {},
                                saveAsImage: {}
                            }
                        },
                        visualMap: {
                            min: 5000,
                            max: 200000,
                            text: ['High', 'Low'],
                            realtime: false,
                            calculable: true,
                            inRange: {
                                color: ['lightskyblue', 'yellow', 'orange', 'red']
                            }
                        },
                        series: [
                            {
                                name: '湖南省各个市网约车订单数量',
                                type: 'map',
                                mapType: 'hunan', // 自定义扩展图表类型
                                label: {
                                    show: true
                                },
                                data: data
                            }
                        ]
                    });
                });
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
            }
        });
    });
    /********** End **********/
</script>
</body>
</html>

第4关 用折线图展示湖南省各个市在各个时间段的订单数量

class Config(object):
    #连接数据库
    ########## Begin ##########
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123123@0.0.0.0:3306/trafficdb"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    ########## End ##########
from app import  db
########## Begin ##########
class order_city_hour(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    hour = db.Column(db.String(50))
    city = db.Column(db.String(50))
    num = db.Column(db.Integer)
########## End ##########
from sqlalchemy.sql.elements import Cast
from app import db, app
from app.models.order_city_hour import order_city_hour
from flask import render_template, jsonify
########## Begin ##########
@app.route("/order_city_hourdata",methods=['POST'])
def order_city_hourdata():
    order_city_hourdata = order_city_hour.query.order_by(order_city_hour.city,Cast(order_city_hour.hour,db.Integer)).all()
    list_ = []
    for x in order_city_hourdata:
        data={
                "hour":x.hour,
                "city":x.city,
                "num":x.num
            }
        list_.append(data)
    print(list_)
    return jsonify(list_)
@app.route("/order_city_hour",methods=['GET'])
def home6():
    return render_template("order_city_hour.html")
########## End ##########
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>湖南省各个城市各个时间段订单数量</title>
</head>
<body>
<div id="main" style="height: 800px;width:1200px;background:white;margin:20px 0 0;"></div>
<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<script type="text/JavaScript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
    /********** Begin **********/
    $(document).ready(function () {
        var myChart = echarts.init(document.getElementById('main'));
        $.ajax({
            type: "post",
            async: true,
            url: "/order_city_hourdata",
            dataType: "json",
            success: function (result) {
                var citys = [];
                var hours = [];
                var series = [];
                for (var i = 0; i < result.length; i++) {
                    if (hours.indexOf(result[i].hour) === -1) {
                        hours.push(result[i].hour);
                    }
                    if (citys.indexOf(result[i].city) === -1) {
                        var city = result[i].city;
                        citys.push(city);
                        var data = [];
                        for (var y = 0; y < result.length; y++) {
                            if (result[y].city === city) {
                                data.push(result[y].num);
                            }
                        }
                        series.push({"name": result[i].city, "type": "line", "data": data});
                    }
                }
                option = {
                    title: {
                        text: '湖南省各市每小时订单量'
                    },
                    tooltip: {
                        trigger: 'axis'
                    },
                    legend: {
                        data: citys
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    toolbox: {
                        feature: {
                            saveAsImage: {}
                        }
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: hours
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: series
                };
                myChart.setOption(option);
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
            }
        });
    });
    /********** End **********/
</script>
</body>
</html>

第5关 用直方图展示全省在各个时间段的订单数量

class Config(object):
    #连接数据库
    ########## Begin ##########
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123123@0.0.0.0:3306/trafficdb"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    ########## End ##########
from app import  db
########## Begin ##########
class order_quantity_time(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    time = db.Column(db.String(50))
    num = db.Column(db.Integer)
########## End ##########
from sqlalchemy.sql.elements import Cast
from app import db, app
from app.models.order_quantity_time import order_quantity_time
from flask import render_template, jsonify
########## Begin ##########
@app.route("/order_quantity_timedata",methods=['POST'])
def order_quantity_timedata():
    order_quantity_timedata = order_quantity_time.query.order_by(order_quantity_time.time).all()
    list_ = []
    for x in order_quantity_timedata:
        data={
                "time":x.time,
                "num":x.num
            }
        list_.append(data)
    print(list_)
    return jsonify(list_)
@app.route("/order_quantity_time",methods=['GET'])
def home5():
    return render_template("order_quantity_time.html")
########## End ##########
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>湖南省某天订单详情</title>
</head>
<body>
<center>
<div id="main" style="height: 600px;width:1200px;background:white;margin:20px 0 0;"></div>
</center>
<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<script type="text/JavaScript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
    /********** Begin **********/
    $(document).ready(function () {
        var myChart = echarts.init(document.getElementById('main'));
        $.ajax({
            type: "post",
            async: true,
            url: "/order_quantity_timedata",
            dataType: "json",
            success: function (result) {
                var categoryData = [];
                var valueData = [];
                for (var i = 0; i < result.length; i++) {
                    categoryData.push(result[i].time);
                    valueData.push(result[i].num);
                }
                var option = {
                    title: {
                        text: '湖南省某天订单详情',
                        left: 10
                    },
                    toolbox: {
                        feature: {
                            dataZoom: {
                                yAxisIndex: false
                            },
                            saveAsImage: {
                                pixelRatio: 2
                            }
                        }
                    },
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow'
                        }
                    },
                    grid: {
                        bottom: 90
                    },
                    dataZoom: [{
                        type: 'inside'
                    }, {
                        type: 'slider'
                    }],
                    xAxis: {
                        data: categoryData,
                        silent: false,
                        splitLine: {
                            show: false
                        },
                        axisLabel: {
                            formatter: function (value) {
                                return value.replace(" ","\n");
                            }
                        },
                        splitArea: {
                            show: false
                        }
                    },
                    yAxis: {
                        splitArea: {
                            show: false
                        }
                    },
                    series: [{
                        type: 'bar',
                        data: valueData,
                        // Set `large` for large data amount
                        large: true
                    }]
                };
                myChart.setOption(option);
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
            }
        });
    });
    /********** End **********/
</script>
</body>
</html>
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
网约车大数据综合项目是一个集成了各数据分析和可视化技术的项目,其中数据可视化是其中非常重要的一部分。数据可视化通过图表、地图等形式,将大量的数据信息以直观、易懂的方式展现出来,帮助项目团队和决策者更好地理解和利用数据。 Flask是一款轻量级的Python Web框架,ECharts是一个由百度开发的基于JavaScript的数据可视化库,它们可以很好地配合使用来实现数据可视化的需求。在网约车大数据综合项目中,我们可以利用Flask框架搭建Web应用程序的后端,通过Python语言处理数据,并结合ECharts库来实现数据可视化的功能。 具体来说,我们可以使用Flask来构建Web应用的后台服务器,接收用户的请求,并调用相应的数据处理函数。同时,利用ECharts库提供的丰富图表类型和交互功能,将经过处理的数据转换成直观的图表展示,例如折线图、柱状图、地图等。这样,用户就可以通过浏览器访问我们的Web应用,实时查看和分析网约车的相数据,包括订单量、车辆分布、用户乘车轨迹等内容。 通过数据可视化flask echarts,我们不仅可以帮助项目团队更好地理解和利用网约车大数据信息,还可以为决策者提供直观、准确的数据支持,帮助他们制定更科学合理的运营策略和规划。这将有助于提升网约车行业的整体运营效率和用户体验,进而推动行业的可持续发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wa_Automata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值