Python示例代码之pyecharts画图

pyecharts安装

官网:http://pyecharts.herokuapp.com/

安装:该模块有好多版本,变化较大,网上常见示例通常使用最新库或老的版本无法使用,经过尝试,0.5.5版本可以使用。

pip uninstall pyechars


pip install pyecharts==0.5.5

pyecharts代码示例

如下为六种常见图类型的代码展示。

# Author Zhanhai

import json
from ProjectLog import ProjectLog
from pyecharts import Page, Line, Bar, EffectScatter, Overlap
import traceback

class PageRender():

    def __init__(self, interface_file):
        self.interface_file = interface_file

    def create_report(self):
        is_page_created = False
        log.info("start create_report.")
        try:
            page = Page()
            page_data = json.load(open(self.interface_file))
            log.info("page_data" + str(page_data))
            tsk_time = page_data["tsk_time"]
            tsk_name = page_data["tsk_name"]
            tbls = page_data["tbls"]
            for tbl in tbls:
                self.update_page(tbl, page)
            page_file_name = tsk_name + "_" + tsk_time + ".html"
            page_file_name = page_file_name.replace(" ", "_")
            page_file_name = page_file_name.replace(":", "_")
            page.render(page_file_name)
        except Exception as e:
            log.error(traceback.format_exc())
            raise
        log.info("create_report complete.")
        return is_page_created

    def update_page(self, tbl, page):
        try:
            tbl_type = tbl["tbl_type"]
            if tbl_type == "line_normal":
                isStack = False
                isFill = False
                areaOpacity = 0
                page.add(self.create_tbl_line(tbl, isStack, isFill, areaOpacity))
            elif tbl_type == "line_stack":
                isStack = True
                isFill = True
                areaOpacity = 0.3
                page.add(self.create_tbl_line(tbl, isStack, isFill, areaOpacity))
            elif tbl_type == "line_area":
                isStack = False
                isFill = True
                areaOpacity = 0.3
                page.add(self.create_tbl_line(tbl, isStack, isFill, areaOpacity))
            elif tbl_type == "line_es":
                page.add(self.create_tbl_line_es(tbl))
            elif tbl_type == "bar_normal":
                isStack = False
                page.add(self.create_tbl_bar(tbl, isStack))
            elif tbl_type == "bar_stack":
                isStack = True
                page.add(self.create_tbl_bar(tbl, isStack))
        except Exception as e:
            log.error(traceback.format_exc())
            raise
        log.info("create_table complete.")

    def create_tbl_line(self, data_line, isStack, isFill, areaOpacity):
        try:
            tbl_name = data_line["tbl_name"]
            columns = data_line["columns"]
            datas = data_line["datas"]
            line = Line(tbl_name)
            for data in datas:
                line_name = data["name"]
                line_value = data["value"]
                line.add(line_name, columns, line_value, is_label_show = True, is_stack = isStack, is_fill = isFill, area_opacity = areaOpacity)
        except Exception as e:
            log.error(traceback.format_exc())
            raise
        return line

    def create_tbl_line_es(self, data_line):
        try:
            tbl_name = data_line["tbl_name"]
            columns = data_line["columns"]
            datas = data_line["datas"]
            line = Line(tbl_name)
            es = EffectScatter()
            overlap = Overlap()
            for data in datas:
                line_name = data["name"]
                line_value = data["value"]
                line.add(line_name, columns, line_value, is_label_show = True)
                es.add("", columns, line_value, effect_scale = 4)
                overlap.add(line)
                overlap.add(es)
        except Exception as e:
            log.error(traceback.format_exc())
            raise
        return overlap

    def create_tbl_bar(self, data_bar, isStack):
        try:
            tbl_name = data_bar["tbl_name"]
            columns = data_bar["columns"]
            datas = data_bar["datas"]
            bar = Bar(tbl_name)
            for data in datas:
                bar_name = data["name"]
                bar_value = data["value"]
                bar.add(bar_name, columns, bar_value, mark_line=["average"], mark_point=["max", "min"], is_stack = isStack)
        except Exception as e:
            log.error(traceback.format_exc())
            raise
        return bar

log = ProjectLog()
is_page_created = PageRender("data03.json").create_report()
if not is_page_created:
    print("create report fail!")
else:
    print("create report succ.")


示例运行结果展示

代码所需的六种样例的json数据如下:

{
  "tsk_time":"20190829-14:03:26",
  "tsk_name":"my test check",
  "tbls": [
    { "tbl_type":"line_normal" ,
      "tbl_name":"_line_normal" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "87.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "72.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    },
    { "tbl_type":"line_stack" ,
      "tbl_name":"_line_area_stack" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "87.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "72.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    },
    { "tbl_type":"line_area" ,
      "tbl_name":"_line_area" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "87.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "72.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    },
    { "tbl_type":"line_es" ,
      "tbl_name":"_line_es" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "87.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "72.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    },
    { "tbl_type":"bar_normal" ,
      "tbl_name":"_SD2" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "97.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "62.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    },
    { "tbl_type":"bar_stack" ,
      "tbl_name":"_SD2" ,
      "columns":[
        "00:00:00",
        "00:15:00",
        "00:30:00",
        "00:45:00",
        "01:00:00",
        "01:15:00",
        "01:30:00",
        "01:45:00",
        "02:00:00",
        "02:15:00",
        "02:30:00",
        "02:45:00"
      ],
      "datas":[
        {
          "name":"2019-06-26",
          "value":[
            "88.0",
            "88.9",
            "89.0",
            "92.0",
            "88.0",
            "87.0",
            "80.0",
            "85.0",
            "97.0",
            "89.0",
            "95.0",
            "92.0"
          ]
        },
        {
          "name":"2019-06-27",
          "value":[
            "68.0",
            "68.9",
            "79.0",
            "62.0",
            "68.0",
            "67.0",
            "60.0",
            "75.0",
            "67.0",
            "69.0",
            "65.0",
            "72.0"
          ]
        }
      ]
    }
  ]
}

运行完毕后生成的html文件的展示如下:

扫描二维码关注公众号,回复: 9498600 查看本文章

如果您喜欢这篇文章,别忘了点赞和评论哦!

发布了172 篇原创文章 · 获赞 93 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/chenzhanhai/article/details/100578178