NDOJ/judge/utils/stats.py

54 lines
1.7 KiB
Python
Raw Normal View History

2020-01-21 06:35:58 +00:00
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)),
},
],
}