利用Flask动态展示Pyechats图表

之前,在网上搜到过很多教程,但是我按照教程做,一次也没成功。踩了很多坑,最后才做成。

没成功的主要原因:

  1. pyecharts版本不同,有些函数我的pyecharts库里没有,如dump_options_with_quotes()
  2. Markup() 方法不成功,主要是因为render_embed()函数只返回部分html代码,没有头和尾,必须还要引用echarts.js, 或者绘制地图时,相对应需要的js。中国地图需要china.js, 世界地图需要world.js
  3. 异步调用不成功,我也不太明白,反正就是flask不能直接引用pyecharts生成的html文件。

网上教程:利用 Flask 动态展示 Pyecharts 图表数据的几种方法

一、准备

工具 版本
pyecharts 0.1.9.4
js echarts.js, china.js, world.js
name_map.py 国家中文名及英文名

二、饼图

文件结构
在这里插入图片描述

makeCharts.py

from pyecharts.charts.pie import Pie

# html代码头尾
html1 = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>数据可视化</title><script src="/static/echarts.js"></script><script src="/static/china.js"></script><script src="/static/world.js"></script></head><body>'
html2 = '</body></html>'

def make_pie():
    attrs = ['现存确诊', '死亡', '治愈']
    values = [1369, 49, 13225]
    # 绘制饼图
    pie = Pie("中国" + "数据饼图")
    pie.add(
        "",
        attrs,
        values,
        is_label_show=True,
        is_more_utils=True
    )

    # pie.render_embed() 是绘制饼图的html代码

    html = html1 + pie.render_embed() + html2

    return html

app.py

from flask import Flask
from jinja2 import Markup
import charts.makeCharts

app = Flask(__name__)

# 默认网页
@app.route('/')
def show_start():
    return Markup(charts.makeCharts.make_pie())

运行结果
在这里插入图片描述

三、中国地图

markCharts.py

from pyecharts.charts.map import Map

# html代码头尾
html1 = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>数据可视化</title><script src="/static/echarts.js"></script><script src="/static/china.js"></script><script src="/static/world.js"></script></head><body>'
html2 = '</body></html>'

# 绘制中国地图
def make_ChinaMap():
    global ChinaData

    allProvinces = ['香港', '台湾', '上海', '辽宁', '北京', '广东', '福建', '四川', '内蒙古', '陕西', '云南', '浙江', '黑龙江', '天津', '山东', '河南', '山西', '江苏', '湖南', '安徽', '河北', '广西', '湖北', '新疆', '江西', '重庆', '甘肃', '海南', '吉林', '贵州', '宁夏', '澳门', '青海', '西藏']
    values = [805, 115, 95, 73, 37, 31, 27, 26, 23, 17, 13, 12, 10, 10, 8, 7, 3, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    # 绘制地图
    map = Map("中国"+"数据地图", '中国', width=1200, height=600)
    map.add('现存确诊', allProvinces, values, visual_range=[1, 200], maptype='china', is_visualmap=True, visual_text_color='#000')

    # map.render_embed() 是绘制地图的html代码
    html = html1 + map.render_embed() + html2

    return html

app.py

from flask import Flask
from jinja2 import Markup
import charts.makeCharts

app = Flask(__name__)

# 默认网页
@app.route('/')
def show_start():
    return Markup(charts.makeCharts.make_ChinaMap())


运行结果
在这里插入图片描述

四、世界地图

name_map.py

# 绘制世界地图时,需要翻译
name_map = {
   
    'Singapore Rep.': '新加坡',
    'Dominican Rep.': '多米尼加',
    'Palestine': '巴勒斯坦',
    'Bahamas': '巴哈马',
    'Timor-Leste': '东帝汶',
    'Afghanistan': '阿富汗',
    'Guinea-Bissau': '几内亚比绍',
    "Côte d'Ivoire": '科特迪瓦',
    'Siachen Glacier': '锡亚琴冰川',
    "Br. Indian Ocean Ter.": '英属印度洋领土',
    'Angola': '安哥拉',
    'Albania': 
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值