#!/usr/bin/python
# coding=utf8
"""
# Author: wangbin34
# Created Time : 2023-02-20 11:36:44
# File Name: lib_echarts.py
# Description:
"""
def convert_to_bar_data(name, source_data, item_name_key, item_value_key):
"""
Args:
name: (string) chart name
source_data: (list)
item_name_key: (string) name key
item_value_key: (string) value key
Returns:
Example:
{
"yAxis": {},
"series": [
{
"data": [
4.921490212586824,
5.949157733537519,
1.9482631189948263
],
"type": "bar",
"name": "mem/cpu ratio"
}
],
"title": {
"text": "mem/cpu ratio"
},
"tooltip": {},
"xAxis": {
"data": [
"total",
"allocated",
"available"
]
},
"legend": {}
}
"""
assert isinstance(source_data, list)
name_list = []
value_list = []
for item_data in source_data:
name_list.append(item_data[item_name_key])
value_list.append(item_data[item_value_key])
# AMIS/echarts
data = {}
data["tooltip"] = {}
data["legend"] = {}
data["title"] = {"text": name}
data["xAxis"] = {}
# data name
data["xAxis"]["data"] = name_list
data["yAxis"] = {}
chart_data = {}
# chart name
chart_data["name"] = name
chart_data["type"] = "bar"
# data value
chart_data["data"] = value_list
data["series"] = [chart_data]
return data
def convert_to_pie_data(name, source_data, item_name_key, item_value_key):
"""
Args:
name: (string) chart name
source_data: (list)
item_name_key: (string) name key
item_value_key: (string) value key
Returns:
Example:
{
"series": [ // 图表数据
{
"data": [
{
"name": "free_available",
"value": 1353
},
...
],
"type": "pie", // 图表类型
"name": "cpu",
"label": {
"borderColor": "#8C8D8E",
"borderRadius": 4,
"formatter": "{a}\n{b} ({d}%)",
"borderWidth": 1,
"backgroundColor": "#F6F8FC"
}
}
],
"legend": {}, // 图例:图例中的 data 数据来源于 series 中每个对象的 name,
图例可以帮助我们对图表进行筛选
// eg: {"data": ["free_available", ...]},
"tooltip": { // 提示框:当鼠标移入到图表或者点击图表时,展示出的提示框
"trigger": "item", // 触发类型:item/axis/none
// 'item':数据项图形触发,主要在散点图,饼图等无类目轴的图表
// 'axis':坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表
// 'none':怎么样都不触发。
"formatter": "{a} {b}:{c} ({d}%)" // 格式化显示:字符串模板
},
"title": { // 标题
"text": "cpu ratio"
}
}
"""
assert isinstance(source_data, list)
item_list = []
for item_data in source_data:
item_list.append({"name": item_data[item_name_key], "value": item_data[item_value_key]})
# AMIS/echarts
data = {}
data["tooltip"] = {
"trigger": "item",
"formatter": "{a} {b}:{c} ({d}%)"
}
data["legend"] = {}
data["title"] = {"text": name}
chart_data = {}
# pie name
chart_data["name"] = name
chart_data["type"] = "pie"
# label
chart_data["label"] = {
"formatter": '{a}\n{b} ({d}%)',
"backgroundColor": '#F6F8FC',
"borderColor": '#8C8D8E',
"borderWidth": 1,
"borderRadius": 4,
}
chart_data["data"] = item_list
data["series"] = [chart_data]
return data