diff options
Diffstat (limited to 'python/fatcat_web/graphics.py')
-rw-r--r-- | python/fatcat_web/graphics.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/python/fatcat_web/graphics.py b/python/fatcat_web/graphics.py new file mode 100644 index 00000000..0e4b7c9d --- /dev/null +++ b/python/fatcat_web/graphics.py @@ -0,0 +1,36 @@ + +import pygal +from pygal.style import CleanStyle + +def ia_coverage_histogram(rows): + """ + Note: this returns a raw pygal chart; it does not render it to SVG/PNG + """ + + raw_years = [int(r[0]) for r in rows] + years = dict() + for y in range(min(raw_years), max(raw_years)+1): + years[int(y)] = dict(year=int(y), available=0, missing=0) + for r in rows: + if r[1]: + years[int(r[0])]['available'] = r[2] + else: + years[int(r[0])]['missing'] = r[2] + + years = sorted(years.values(), key=lambda x: x['year']) + + CleanStyle.colors = ("green", "purple") + label_count = len(years) + if len(years) > 20: + label_count = 10 + chart = pygal.StackedBar(dynamic_print_values=True, style=CleanStyle, + width=1000, height=500, x_labels_major_count=label_count, + show_minor_x_labels=False) + #chart.title = "Perpetual Access Coverage" + chart.x_title = "Year" + #chart.y_title = "Releases" + chart.x_labels = [str(y['year']) for y in years] + chart.add('Available', [y['available'] for y in years]) + chart.add('Missing', [y['missing'] for y in years]) + return chart + |