#!/usr/bin/env python import numpy as np import matplotlib.pyplot as plt process_data = [ {'cargaTick': 3, 'primerTick': 4, 'ticksBlock': 9, 'ticksCpu': 11, 'ultimoTick': 24}, {'cargaTick': 5, 'primerTick': 25, 'ticksBlock': 11, 'ticksCpu': 5, 'ultimoTick': 41}, {'cargaTick': 5, 'primerTick': 42, 'ticksBlock': 12, 'ticksCpu': 5, 'ultimoTick': 59} ] fig, ax = plt.subplots(figsize=(10,5)) index = list(range(len(process_data))) bar_width = 0.25 opacity = 0.9 error_config = {'ecolor': '0.3'} def latency(p): return p["primerTick"]-p["cargaTick"] def ready(p): return (p["ultimoTick"]-p["primerTick"])-(p["ticksBlock"]+p["ticksCpu"])+(p["primerTick"]-p["cargaTick"]) def cpu(p): return p["ticksCpu"] def cpu_io(p): return p["ticksBlock"]+p["ticksCpu"] def plot_data(ind, data, color, label): plt.bar([i + bar_width*ind for i in index], data, bar_width, alpha=opacity, color=color, error_kw=error_config, label=(label)) plot_data(0,[latency(p) for p in process_data], 'r', 'Latency') plot_data(1,[ready(p) for p in process_data], 'g', 'Ready') plot_data(2,[cpu(p) for p in process_data], 'b', 'CPU') plot_data(3,[cpu_io(p) for p in process_data], '#fafafa', 'CPU+IO') ax.set_ylabel('Time') ax.set_title('title') ax.set_xticks([ i + 1.5 * bar_width for i in index]) ax.set_xticklabels(["Process %d" % i for i in xrange(len(process_data))]) plt.legend() plt.tight_layout() plt.grid() plt.show()