def _plot(self, x_label, y_label, y_axis, z_axis, type): plt.figure() for result in self.results: y_values, y_err = y_axis(result) x_values = self._variable(result) if len(y_values) != len(y_err) or len(y_err) != len(x_values): raise PlotError('Unequal number of x, y, and y_err values') plt.errorbar( x_values, y_values, yerr=y_err, # uplims=True, lolims=True, marker='o', label=z_axis(result), linestyle='dotted' ) # if type == 'latency': # plt.yscale('log') plt.xlim(xmin=0) plt.ylim(bottom=0) plt.xlabel(x_label) plt.ylabel(y_label[0]) plt.legend(loc='upper left') ax = plt.gca() ax.xaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) ax.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) if len(y_label) > 1: secaxy = ax.secondary_yaxis( 'right', functions=(self._tps2bps, self._bps2tps) ) secaxy.set_ylabel(y_label[1]) secaxy.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) for x in ['pdf', 'png']: plt.savefig(PathMaker.plot_file(type, x), bbox_inches='tight')
def _plot(self, x_label, y_label, y_axis, z_axis, type): plt.figure() markers = cycle(['o', 'v', 's', 'p', 'D', 'P']) self.results.sort(key=self._natural_keys, reverse=(type == 'tps')) for result in self.results: y_values, y_err = y_axis(result) x_values = self._variable(result) if len(y_values) != len(y_err) or len(y_err) != len(x_values): raise PlotError('Unequal number of x, y, and y_err values') plt.errorbar( x_values, y_values, yerr=y_err, label=z_axis(result), linestyle='dotted', marker=next(markers), capsize=3 ) plt.legend(loc='lower center', bbox_to_anchor=(0.5, 1), ncol=2) plt.xlim(xmin=0) plt.ylim(bottom=0) plt.xlabel(x_label) plt.ylabel(y_label[0]) plt.grid() ax = plt.gca() ax.xaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) ax.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) if len(y_label) > 1: secaxy = ax.secondary_yaxis( 'right', functions=(self._tps2bps, self._bps2tps) ) secaxy.set_ylabel(y_label[1]) secaxy.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}')) for x in ['pdf', 'png']: plt.savefig(PathMaker.plot_file(type, x), bbox_inches='tight')