def plot_overall_graph(self): max_d_layer = max([item['did'] for item in self.settings]) axes_count = 2 if max_d_layer == 0 else (1 + self.MAX_D_LAYER) axes_count += 1 if max(self.idr) > 0 else 0 axes_count += 1 if max(self.frame_skipped) > 0 else 0 print('draw %d charts\n' % axes_count) fig, axes = plt.subplots(axes_count, 1, sharex=True) plt.xlabel('time') axes[0].plot(self.dt_list, self.br_list, label='actual_bit_rate') axes[0].legend() if max_d_layer > 0: for layer_idx in range(self.MAX_D_LAYER): cur_list = [ item for item in self.settings if layer_idx == __init__.get_did_from_resolution( item['width'], item['height']) ] if cur_list == []: axes[layer_idx + 1].plot(self.dt_list, self.br_list, label='actual_bit_rate') else: for info in ('max_bit_rate', 'target_bit_rate_upper'): axes[layer_idx + 1].plot([item['ts'] for item in cur_list], [item[info] for item in cur_list], label=info + '_%d' % layer_idx) cur_list = [ item for item in self.layer_stats if item[1] == layer_idx ] if cur_list == []: axes[layer_idx + 1].plot(self.dt_list, self.br_list, label='actual_bit_rate') axes[layer_idx + 1].legend() else: axes[layer_idx + 1].plot([item[0] for item in cur_list], [item[2] for item in cur_list], label='layer_%d' % layer_idx) axes[layer_idx + 1].legend() else: cur_list = [item for item in self.settings] for info in ('max_bit_rate', 'target_bit_rate_upper', 'target_bit_rate'): axes[0].plot([item['ts'] for item in cur_list], [item[info] for item in cur_list], label=info) axes[1].plot( [item['ts'] for item in self.settings], [item['width'] + item['height'] for item in self.settings], label='resolution') axes[1].legend() axes_idx = 2 if max_d_layer == 0 else (1 + self.MAX_D_LAYER) if max(self.idr) > 0: axes[axes_idx].plot([item[0] for item in self.stats[1:]], RateControlUtil.get_derive(self.idr), '-o', label='idr_count') axes[axes_idx].legend() axes_idx += 1 if max(self.frame_skipped) > 0: axes[axes_idx].plot([item[0] for item in self.stats[1:]], RateControlUtil.get_derive(self.frame_skipped), '-o', label='frame_skipped_count') axes[axes_idx].legend() x = [item[0] for item in self.stats[1:]] y = RateControlUtil.get_derive(self.frame_skipped) for p1, p2 in zip(x, y): print("%s,%d\n" % (p1, p2)) plt.savefig('RatesinLog.png') plt.show()
def plot_overall_graph(self): max_d_layer = max([item['did'] for item in self.settings]) axes_count = 2 if max_d_layer == 0 else (1+self.MAX_D_LAYER) axes_count += 1 if max(self.idr) > 0 else 0 axes_count += 1 if max(self.frame_skipped) > 0 else 0 print('draw %d charts\n' %axes_count) fig, axes = plt.subplots(axes_count, 1, sharex=True) plt.xlabel('time') axes[0].plot(self.dt_list, self.br_list, label='actual_bit_rate') axes[0].legend() if max_d_layer>0: for layer_idx in range(self.MAX_D_LAYER): cur_list = [item for item in self.settings if layer_idx == __init__.get_did_from_resolution(item['width'],item['height'])] if cur_list == []: axes[layer_idx+1].plot(self.dt_list, self.br_list, label='actual_bit_rate') else: for info in ('max_bit_rate', 'target_bit_rate_upper'): axes[layer_idx+1].plot([item['ts'] for item in cur_list], [item[info] for item in cur_list], label=info+'_%d' %layer_idx) cur_list = [item for item in self.layer_stats if item[1]==layer_idx] if cur_list == []: axes[layer_idx+1].plot(self.dt_list, self.br_list, label='actual_bit_rate') axes[layer_idx+1].legend() else: axes[layer_idx+1].plot([item[0] for item in cur_list], [item[2] for item in cur_list], label='layer_%d' %layer_idx) axes[layer_idx+1].legend() else: cur_list = [item for item in self.settings] for info in ('max_bit_rate', 'target_bit_rate_upper', 'target_bit_rate'): axes[0].plot([item['ts'] for item in cur_list], [item[info] for item in cur_list], label=info) axes[1].plot([item['ts'] for item in self.settings], [item['width']+item['height'] for item in self.settings], label='resolution') axes[1].legend() axes_idx = 2 if max_d_layer==0 else (1+self.MAX_D_LAYER) if max(self.idr) > 0: axes[axes_idx].plot([item[0] for item in self.stats[1:]], RateControlUtil.get_derive(self.idr), '-o', label='idr_count') axes[axes_idx].legend() axes_idx += 1 if max(self.frame_skipped) > 0: axes[axes_idx].plot([item[0] for item in self.stats[1:]], RateControlUtil.get_derive(self.frame_skipped), '-o', label='frame_skipped_count') axes[axes_idx].legend() x=[item[0] for item in self.stats[1:]] y=RateControlUtil.get_derive(self.frame_skipped) for p1,p2 in zip(x,y): print("%s,%d\n" %(p1,p2)) plt.savefig('RatesinLog.png') plt.show()