def plotMonths(fig, data): day = data["when"] day.sort() up, down = data["up"], data["down"] setTitle(fig, up, down) ax = fig.add_subplot(111) kwargs = dict(alpha=0.5) for day, data in cumulativeMonth(day, (up, down)): day = day.replace(day=1, hour=0, minute=0, second=0, microsecond=0) _, daysInMonth = calendar.monthrange(day.year, day.month) kwargs["width"] = daysInMonth ax.bar(plt.date2num(day), data[0], color="b", **kwargs) ax.bar(plt.date2num(day), -data[1], color="r", **kwargs) y_min, y_max = ax.get_ybound() y_max = max(abs(y_min), abs(y_max)) scale, si = util.engineeringUnit(y_max) siFormatter(ax, scale) ax.set_xlabel("Date") ax.set_ylabel("upload/-download {}B".format(si)) dayFormat(ax, month=True)
def annoteAxis(self, ax, y, ylabel): y_min, y_max = ax.get_ybound() y_min = max([min(y), y_min]) if y_min == 0: y_min = 1 if ylabel.endswith('time'): ax.yaxis.set_major_formatter(formatter_timedelta) elif ylabel == 'flops': scale, si = util.engineeringUnit(y_max) ylabel = si + ylabel siFormatter(ax, scale) elif np.log10(abs(y_max/y_min)) > 3: ax.set_yscale('log') ax.set_ylabel(ylabel)
def plot(fig, data): day = data["when"] up, down = data["up"], data["down"] setTitle(fig, up, down) ax = fig.add_subplot(111) kwargs = dict(align="center", width=1) for ix in range(len(day)): ax.bar(plt.date2num(day[ix]), up[ix], color="b", **kwargs) ax.bar(plt.date2num(day[ix]), -down[ix], color="r", **kwargs) y_min, y_max = ax.get_ybound() y_max = max(abs(y_min), abs(y_max)) scale, si = util.engineeringUnit(y_max) siFormatter(ax, scale) ax.set_xlabel("Date") ax.set_ylabel("upload/-download {}B".format(si)) dayFormat(ax)