73 lines
1.7 KiB
Python
73 lines
1.7 KiB
Python
|
"""Pour executer ce script, vous devez installer matplotlib"""
|
||
|
|
||
|
import matplotlib.pyplot as plt
|
||
|
import itertools
|
||
|
|
||
|
|
||
|
class CpuPlot(object):
|
||
|
def __init__(self, n):
|
||
|
"""
|
||
|
Initialize an object that will be used to display data points on the
|
||
|
screen.
|
||
|
n -- An array of x-values.
|
||
|
"""
|
||
|
|
||
|
self.n = n
|
||
|
self.courbes = []
|
||
|
self.labels = []
|
||
|
|
||
|
def prepare(self, data, label=None):
|
||
|
"""
|
||
|
Add a data points.
|
||
|
"""
|
||
|
|
||
|
self.courbes.append(data)
|
||
|
self.labels.append(label)
|
||
|
|
||
|
def reset(self):
|
||
|
"""
|
||
|
Reset data points. Note that x-values are keeped.
|
||
|
"""
|
||
|
|
||
|
self.courbes = []
|
||
|
|
||
|
def draw(self):
|
||
|
"""
|
||
|
Draw the data points on the screen.
|
||
|
"""
|
||
|
|
||
|
plt.xlim(max(0, min(self.n) - 5), max(self.n) + 5)
|
||
|
plt.ylim(0, max([max(t) for t in self.courbes]) + 5)
|
||
|
|
||
|
plt.xlabel('input size')
|
||
|
plt.ylabel('milliseconds')
|
||
|
plt.title('CPU time charts')
|
||
|
|
||
|
color = itertools.cycle('bgrcmyk')
|
||
|
|
||
|
for i, t in enumerate(self.courbes):
|
||
|
if self.labels[i] is None:
|
||
|
plt.plot(self.n, t, '%s-o' % next(color),
|
||
|
label='Data points %d' % i)
|
||
|
else:
|
||
|
plt.plot(self.n, t, '%s-o' % next(color),
|
||
|
label=self.labels[i])
|
||
|
|
||
|
plt.legend()
|
||
|
plt.show()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
# Create a CpuPlot object for x-values 10, 20, 30, 40
|
||
|
afficheur = CpuPlot([10, 20, 30, 40])
|
||
|
|
||
|
# Add two sets of data points
|
||
|
afficheur.prepare([1.1, 2.4, 2.8, 4.1], "Points 1")
|
||
|
afficheur.prepare([1.2, 4.5, 8.4, 16.5])
|
||
|
|
||
|
# Display
|
||
|
afficheur.draw()
|
||
|
|
||
|
# Don't exit too fast
|
||
|
input("Press [Enter] to exit.")
|