Flask和pyecharts实现动态数据可视化

1:数据源

Hollywood Movie Dataset: 好莱坞2006-2011数据集

实验目的: 实现 统计2006-2011的数据综合统计情况,进行数据可视化

gitee地址:https://gitee.com/dgwcode/an_example_of_py_learning/tree/master/MovieViwer

1.数据例子:

Film ,Major Studio,Budget
300,Warner Bros,
300,Warner Bros.,65
3:10 to Yuma,Lionsgate,48
Days of Night,Independent,32
Across the Universe,Independent,45
Alien vs. Predator -- Requiem,Fox,40
Alvin and the Chipmunks,Fox,70
American Gangster,Universal,10
Bee Movie,Paramount,15
Beowulf,Paramount,15
Blades of Glory,Paramount,61

2: 环境pycharm新建Flask项目

3 数据处理:

Film ,Major Studio,Budget 为数据的三个标题 截断这三个数据就行

import pandas as pd
from threading import Timer
import math

# coding=utf-8
def getTotalData():
  data1 = pd.read_csv('static/1.csv');
  data2 = pd.read_csv('static/2.csv');
  data3 = pd.read_csv('static/3.csv');
  data4 = pd.read_csv('static/4.csv');
  data5 = pd.read_csv('static/5.csv');
  datadic1 = [];
  datadic2 = [];
  datadic3 = [];
  datadic4 = [];
  datadic5 = [];
  # 处理数据.csv
  for x, y in zip(data1['Major Studio'], data1['Budget']):
    datadic1.append((x, y))
  for x, y in zip(data2['Major Studio'], data2['Budget']):
    datadic2.append((x, y))
  for x, y in zip(data3['Lead Studio'], data3['Budget']):
    datadic3.append((x, y))
  for x, y in zip(data4['Lead Studio'], data4['Budget']):
    datadic4.append((x, y))
  for x, y in zip(data5['Lead Studio'], data5['Budget']):
    datadic5.append((x, y))
  totaldata = [];
  totaldata.append(datadic1);
  totaldata.append(datadic2);
  totaldata.append(datadic3);
  totaldata.append(datadic4);
  totaldata.append(datadic5);
  return totaldata;

indexx = 0;
curindex = 0;
end = 5;
returnData = dict();

# 定时处理数据
def dataPre():
  global indexx, end, curindex, flag, returnData;
  totalData = getTotalData(); # list[map]
  # x = len(totalData[0]) + totalData[1].len() + totalData[2].len() + totalData[3].len() + totalData[4].len();
  data = totalData[indexx];
  # init
  # print(curindex, end, indexx)
  # print(len(data))
  for k, v in data[curindex:end]:
    if v == "nan" or math.isnan(v):# 截断 k v中 nan
      continue;
    if returnData.get(k, -1) == -1:
      print(k, v);
      returnData[k] = v;
    else:
      returnData[k] = returnData[k] + v;
  print(len(returnData))
  if end < len(data) - 20:
    curindex = end;
    end = end + 20;
  if end >= len(data) - 20:
    indexx += 1;
    curindex = 0;
    end = 20;
  t = Timer(2, dataPre)
  t.start()
  print(returnData.keys(), end='\n')
  return returnData;

if __name__ == "__main__":
  dataPre();

4:实际程序入口

from flask import Flask, render_template
from pyecharts.charts import Bar
from pyecharts import options as opts
import math
import dealdata
from threading import Timer
from pyecharts.globals import ThemeType

app = Flask(__name__, static_folder="templates")

@app.route('/')
def hello_world():
  dataPre();# 数据入口
  return render_template("index.html")

# 定义全局索引
indexx = 0;
curindex = 0;
end = 5;
returnData = dict();

# 定时处理数据
def dataPre():
  global indexx, end, curindex, flag, returnData;
  totalData = dealdata.getTotalData(); # list[map]
  # x = len(totalData[0]) + totalData[1].len() + totalData[2].len() + totalData[3].len() + totalData[4].len();
  data = totalData[indexx];
  #print(totalData)
  # init
  # print(curindex, end, indexx)
  # print(len(data))
  for k, v in data[curindex:end]:
    if v == "nan" or math.isnan(v): # 截断 k v中 nan
      continue;
    if returnData.get(k, -1) == -1:
      returnData[k] = v;
    else:
      returnData[k] = returnData[k] + v;
  print(len(returnData)) # 反应长度关系
  if end < len(data) - 15: # 参数为截断的项数 与前端时间要对应
    curindex = end;
    end = end + 15;
  if end >= len(data) - 15:
    indexx += 1;
    curindex = 0;
    end = 15;
  t = Timer(1, dataPre)
  t.start()
  #print(returnData, end='\n')

def bar_reversal_axis() -> Bar:
  global returnData;
  #print(sorted(returnData.items(), key=lambda x: x[1]))
  sorted(returnData.items(), key=lambda x: x[1],reverse=False)
  #print(returnData.keys())
  c = (
    Bar({"theme": ThemeType.MACARONS})
      .add_xaxis(list(returnData.keys()))
      .add_yaxis("电影公司名称:",list(returnData.values()),color="#BF3EFF")
      .reversal_axis()
      .set_series_opts(label_opts=opts.LabelOpts(position="right",color="#BF3EFF",
                            font_size=12))
      .set_global_opts(title_opts=opts.TitleOpts(title="2007-2011好莱坞电影最受欢迎公司",
                           pos_left='60%',subtitle="当前"+str(2006+indexx)+"年"))
  )
  return c;
@app.route("/barChart")
def index():
  c = bar_reversal_axis();
  return c.dump_options_with_quotes();

if __name__ == '__main__':
  app.run();

5: 前端

<html>
<head>
 <meta charset="UTF-8">
 <title>Awesome-pyecharts</title>
 <script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script>
 <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
  <style>
    div{
      padding-left: 100px;
    }
  </style>

</head>
<body>
 <div id="bar" style="width:1024px; height:1024px;"></div>
 <script>
  var chart = echarts.init(document.getElementById('bar'), 'white', {renderer: 'canvas'});
  $(
   function () {
    fetchData(chart);
    setInterval(fetchData, 500);
   }
  );
  function fetchData() {
   $.ajax({
    type: "GET",
    url: "http://127.0.0.1:5000/barChart",
    dataType: 'json',
    success: function (result) {
     chart.setOption(result);
    }
   });
  }
 </script>
</body>
</html>

6: 扩展资料

https://github.com/pyecharts/pyecharts/tree/master/pyecharts/render/templates

{% import 'macro' as macro %}
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>{{ chart.page_title }}</title>
  {{ macro.render_chart_dependencies(chart) }}
</head>
<body>
  <div id="{{ chart.chart_id }}" style="width:{{ chart.width }}; height:{{ chart.height }};"></div>
  <script>
    var canvas_{{ chart.chart_id }} = document.createElement('canvas');
    var mapChart_{{ chart.chart_id }} = echarts.init(
       canvas_{{ chart.chart_id }}, '{{ chart.theme }}', {width: 4096, height: 2048, renderer: '{{ chart.renderer }}'});
    {% for js in chart.js_functions.items %}
      {{ js }}
    {% endfor %}
    var mapOption_{{ chart.chart_id }} = {{ chart.json_contents }};
    mapChart_{{ chart.chart_id }}.setOption(mapOption_{{ chart.chart_id }});
    var chart_{{ chart.chart_id }} = echarts.init(
    document.getElementById('{{ chart.chart_id }}'), '{{ chart.theme }}', {renderer: '{{ chart.renderer }}'});
    var options_{{ chart.chart_id }} = {
      "globe": {
      "show": true,
      "baseTexture": mapChart_{{ chart.chart_id }},
      shading: 'lambert',
      light: {
        ambient: {
          intensity: 0.6
        },
        main: {
          intensity: 0.2
        }
       }
      }};
    chart_{{ chart.chart_id }}.setOption(options_{{ chart.chart_id }});
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python的pyecharts绘制各种图表详细(附代码)

    环境:pyecharts库,echarts-countries-pypkg,echarts-china-provinces-pypkg,echarts-china-cities-pypkg 数据:2018年4月16号的全国各地最高最低和天气类型的数据--2018-4-16.json(爬虫爬的) 代码:天气数据爬虫代码,图表绘制代码 代码地址:https://github.com/goodloving/pyecharts.git(py文件) 一.公共属性 1.标题栏的属性:一般在实例化(初始化)类

  • Pyecharts绘制全球流向图的示例代码

    安装 pip(3) install pyecharts 此文版本为v1.6 此文版本为v1.6 此文版本为v1.6 效果图 使用Pycharts绘制一个如上图类似的全球流向图. pyecharts里的地理图标总共有三种- Geo:地理坐标系,Map:地图,Bmap:百度地图. Map地图可以绘制全球地图,但不能绘制带有流向的效果图,所以此处需要使用Geo地理坐标系图. Geo图的类型有scatter(散点图),effectScatter(涟漪散点图),heatmap(热力图),lines(流向图

  • Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解

    python可以在处理各种数据时,如果可以将这些数据,利用图表将其可视化,这样在分析处理起来,将更加直观.清晰,以下是 利用 PyEcharts 常用图表的可视化Demo, 开发环境 python3 柱状图 基本柱状图 from pyecharts import Bar # 基本柱状图 bar = Bar("基本柱状图", "副标题") bar.use_theme('dark') # 暗黑色主题 bar.add('真实成本', # label ["1月&q

  • Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图等统计图表. 2.柱状图 适用场合是二维数据集(每个数据点包括两个值x和y),但只有一个维度需要比较,用于显示一段时间内的数据变化或显示各项之间的比较情况. 优点: 利用柱子的高度,反映数据的差异,肉眼对高度差异很敏感. 缺点: 只适用中小规模的数据集. 柱状图最基本用法 from pyechart

  • pyecharts绘制中国2020肺炎疫情地图的实例代码

    近来武汉肺炎肆虐全国,大多人的日常应该是宅在家里.出于好奇,笔者想用Python来绘制中国2020肺炎疫情地图. 本代码采用Python3,需要安装模块:pyecharts和echarts-china-provinces-pypkg. Python代码如下: # -*- coding: utf-8 -*- # author: Jclian91 # time: 2020-01-29 11:37 # -*- coding: utf-8 -*- # author: Jclian91 # time: 2

  • 基于Python安装pyecharts所遇的问题及解决方法

    最近学习到数据可视化内容,老师推荐安装pyecharts,于是pip install 了一下,结果...掉坑了,下面是我的跳坑经验,如果你有类似问题,希望对你有所帮助. 第一个坑: 这个不难理解,缺少pyecharts-jupyter-installer嘛,那就安一个呗.可能有人注意到,我使用的是python2 -m pip ...(这种写法是为了解决python 2和3共存时pip的冲突问题,具体解释在本页最后.) 本以为结束了,却掉进了第二个坑: 看到这个,很明显是安装MarkupSafe时

  • 利用 Flask 动态展示 Pyecharts 图表数据的几种方法

    本文将介绍如何在 web 框架 Flask 中使用可视化工具 pyecharts, 看完本教程你将掌握几种动态展示可视化数据的方法,不会的话你来找我呀... Flask 模板渲染 1. 新建一个项目 flask-echarts 在编辑器中选择 New Project,然后选择 Flask,创建完之后,Pycharm 会帮我们把启动脚本和模板文件夹都建好 2. 拷贝 pyecharts 模板 将链接中的以下模板 ├── jupyter_lab.html ├── jupyter_notebook.h

  • Python中pyecharts安装及安装失败的解决方法

    pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.这篇文章重点给大家介绍pyecharts安装失败的处理方法,具体详情如下: pyecharts库的安装 1.正常安装 首先在打开终端输入以下命令:pip install pyecharts 在终端输入pip list查看是否安装成功测试程序: from pyecharts.charts import Bar bar = Bar() bar.add_xaxis(["衬衫"

  • Flask和pyecharts实现动态数据可视化

    1:数据源 Hollywood Movie Dataset: 好莱坞2006-2011数据集 实验目的: 实现 统计2006-2011的数据综合统计情况,进行数据可视化 gitee地址:https://gitee.com/dgwcode/an_example_of_py_learning/tree/master/MovieViwer 1.数据例子: Film ,Major Studio,Budget 300,Warner Bros, 300,Warner Bros.,65 3:10 to Yum

  • python用pyecharts实现地图数据可视化

    有的时候,我们需要对不同国家或地区的某项指标进行比较,可简单通过直方图加以比较.但直方图在视觉上并不能很好突出地区间的差异,因此考虑地理可视化,通过地图上位置(地理位置)和颜色(颜色深浅代表数值差异)两个元素加以体现.在本文案例中,基于第三方库pyecharts,对中国各省2010-2019年的GDP进行绘制. 我们先来看看最终效果: 关于绘图数据 基于时间和截面两个维度,可把数据分为截面数据.时间序列及面板数据.在本文案例中,某一年各省的GDP属于截面数据,多年各省的GDP属于面板数据.因此,

  • pyecharts绘制各种数据可视化图表案例附效果+代码

    目录 1.pyecharts绘制饼图(显示百分比) 2.pyecharts绘制柱状图 3.pyecharts绘制折线图 4.pyecharts绘制柱形折线组合图 5.pyecharts绘制散点图 6.pyecharts绘制玫瑰图 7.pyecharts绘制词云图 8.pyecharts绘制雷达图 9.pyecharts绘制散点图 10.pyecharts绘制嵌套饼图 11.pyecharts绘制中国地图 12.pyecharts绘制世界地图 1.pyecharts绘制饼图(显示百分比) # 导入

  • 一文带你掌握Pyecharts地理数据可视化的方法

    本文主要介绍了Pyecharts地理数据可视化,分享给大家,具体如下: 一.Pyecharts简介和安装 1. 简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而 Python 是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时,pyecharts 诞生了. 简洁的 API 设计,使用如丝滑般流畅,支持链式调用 囊括了 30+ 种常见图表,应有尽有 支持主流 Notebook 环境,Jupyter Noteboo

  • 详解用pyecharts Geo实现动态数据热力图城市找不到问题解决

    pyecharts 是一个用于生成 Echarts 图表的类库. Echarts 是百度开源的一个数据可视化 JS 库.主要用于数据可视化. 本文主要是用pycharts中的Geo绘制中国地图,在图中显示出各个地区的人均销售额 传入的数据形如:[('上海',30), ('北京',50), ... ...] li=[] for i,row in filtered.iterrows(): li.append((row['city'],int(row['per_capita']))) geo = Ge

  • Python 数据可视化pyecharts的使用详解

    什么是pyecharts? pyecharts 是一个用于生成 Echarts 图表的类库. echarts是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生成 Echarts 图表的类库.实际上就是 Echarts 与 Python 的对接. 使用 pyecharts可以生成独立的网页,也可以在 flask , Django中集成使用. pyecharts包含的图表 Bar(柱状图/条形图) Bar3D(3D 柱状图) Boxplot(箱形图) Effe

  • Python数据可视化之基于pyecharts实现的地理图表的绘制

    一.例子:百度迁徙 百度地图春节人口迁徙大数据(简称百度迁徙),是百度在2014年春运期间推出的一项技术项目.百度迁徙利用大数据,对其拥有的LBS(基于地理位置的服务)大数据进行计算分析,采用的可视化呈现方式,动态.即时.直观地展现中国春节前后人口大迁徙的轨迹与特征. 网址:https://qianxi.baidu.com/2021/ 二.基础语法介绍 语法 说明 from pyecharts.charts import Geo 导入地图库 Geo() Pyecharts地理图表绘制 .add_

  • Python数据可视化Pyecharts库的使用教程

    目录 一.Pyecharts 概述 1.1 Pyecharts 特性 1.2 Pyecharts 入门案例 二.Pyecharts 配置项 2.1 全局配置项 2.2 系列配置项 三.Pyecharts 的总结 一.Pyecharts 概述 Pyechart 是一个用于生成 Echarts 图表(Echarts 是基于 Javascript 的开源可视化图表库)的 Python 第三方库. 1.1 Pyecharts 特性 根据官方文档的介绍,Pyecharts 的特性如下: 1.简洁的 API

  • Python pyecharts数据可视化实例详解

    目录 一.数据可视化 1.pyecharts介绍 2.初入了解 (1).快速上手 (2).简单的配置项介绍 3.案例实战 (1).柱状图Bar (2).地图Map (3).饼图Pie (4).折线图Line (5).组合图表 二.案例数据获取 总结 一.数据可视化 1.pyecharts介绍 官方网址:https://pyecharts.org/#/zh-cn/intro 概况: Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,使用JavaScript实现的.

随机推荐