98 lines
2.5 KiB
Python
98 lines
2.5 KiB
Python
from operator import itemgetter
|
|
|
|
__all__ = ("chart_colors", "highlight_colors", "get_pie_chart", "get_bar_chart")
|
|
|
|
|
|
chart_colors = [
|
|
0x3366CC,
|
|
0xDC3912,
|
|
0xFF9900,
|
|
0x109618,
|
|
0x990099,
|
|
0x3B3EAC,
|
|
0x0099C6,
|
|
0xDD4477,
|
|
0x66AA00,
|
|
0xB82E2E,
|
|
0x316395,
|
|
0x994499,
|
|
0x22AA99,
|
|
0xAAAA11,
|
|
0x6633CC,
|
|
0xE67300,
|
|
0x8B0707,
|
|
0x329262,
|
|
0x5574A6,
|
|
0x3B3EAC,
|
|
]
|
|
|
|
|
|
highlight_colors = []
|
|
|
|
|
|
def _highlight_colors():
|
|
for color in chart_colors:
|
|
r, g, b = color >> 16, (color >> 8) & 0xFF, color & 0xFF
|
|
highlight_colors.append(
|
|
"#%02X%02X%02X"
|
|
% (min(int(r * 1.2), 255), min(int(g * 1.2), 255), min(int(b * 1.2), 255))
|
|
)
|
|
|
|
|
|
_highlight_colors()
|
|
|
|
|
|
chart_colors = list(map("#%06X".__mod__, chart_colors))
|
|
|
|
|
|
def get_pie_chart(data):
|
|
return {
|
|
"labels": list(map(itemgetter(0), data)),
|
|
"datasets": [
|
|
{
|
|
"backgroundColor": chart_colors,
|
|
"highlightBackgroundColor": highlight_colors,
|
|
"data": list(map(itemgetter(1), data)),
|
|
},
|
|
],
|
|
}
|
|
|
|
|
|
def get_bar_chart(data, **kwargs):
|
|
return {
|
|
"labels": list(map(itemgetter(0), data)),
|
|
"datasets": [
|
|
{
|
|
"backgroundColor": kwargs.get("fillColor", "rgba(151,187,205,0.5)"),
|
|
"borderColor": kwargs.get("strokeColor", "rgba(151,187,205,0.8)"),
|
|
"borderWidth": 1,
|
|
"hoverBackgroundColor": kwargs.get(
|
|
"highlightFill", "rgba(151,187,205,0.75)"
|
|
),
|
|
"hoverBorderColor": kwargs.get(
|
|
"highlightStroke", "rgba(151,187,205,1)"
|
|
),
|
|
"data": list(map(itemgetter(1), data)),
|
|
},
|
|
],
|
|
}
|
|
|
|
|
|
def get_histogram(data, **kwargs):
|
|
return {
|
|
"labels": [round(i, 1) for i in list(map(itemgetter(0), data))],
|
|
"datasets": [
|
|
{
|
|
"backgroundColor": kwargs.get("fillColor", "rgba(151,187,205,0.5)"),
|
|
"borderColor": kwargs.get("strokeColor", "rgba(151,187,205,0.8)"),
|
|
"borderWidth": 1,
|
|
"hoverBackgroundColor": kwargs.get(
|
|
"highlightFill", "rgba(151,187,205,0.75)"
|
|
),
|
|
"hoverBorderColor": kwargs.get(
|
|
"highlightStroke", "rgba(151,187,205,1)"
|
|
),
|
|
"data": list(map(itemgetter(1), data)),
|
|
},
|
|
],
|
|
}
|