Source code for glyphx.count_plot

from collections import Counter

[docs] class CountPlotSeries: def __init__(self, data, order=None, color="#1f77b4", bar_width=0.8): self.data = data self.order = order or sorted(set(data)) self.color = color self.bar_width = bar_width
[docs] def to_svg(self, ax, use_y2=False): scale_y = ax.scale_y2 if use_y2 else ax.scale_y cx = ax.scale_x counts = Counter(self.data) elements = [] n = len(self.order) width_px = (ax.width - 2 * ax.padding) * self.bar_width / n for i, cat in enumerate(self.order): count = counts[cat] x_pos = cx(i + 1) y = scale_y(count) y0 = scale_y(0) h = abs(y0 - y) top = min(y0, y) elements.append(f'<rect x="{x_pos - width_px/2}" y="{top}" width="{width_px}" height="{h}" fill="{self.color}" stroke="#000"/>') return "\n".join(elements)