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 查看本文章
如果您喜欢这篇文章,别忘了点赞和评论哦!