import pandas as pd import numpy as np import matplotlib.pyplot as plt def print_data(df): print("=========================================") print(df) print("-----------------------------------------") print(df.dtypes) print("-----------------------------------------") print(df.shape) print("-----------------------------------------") print(df.info()) def load_data(filename, columns): df = pd.read_csv(filename, header = None, sep = "\s+", comment ='#') df.columns = columns df = df.dropna() df[columns[0]] = df.year.astype(float) print_data(df) return df df_cores = load_data("48yrs/cores.dat", ["year", "cores"]) df_frequency = load_data("48yrs/frequency.dat", ["year", "frequency"]) df_specint = load_data("48yrs/specint.dat", ["year", "specint"]) df_transistors = load_data("48yrs/transistors.dat", ["year", "transistors"]) df_watts = load_data("48yrs/watts.dat", ["year", "watts"]) violet = [] orange = [] yellow = [] green = [] blue = [] black = [] violet.append((196/255, 0/255, 84/255)) orange.append((237/255, 109/255, 0/255)) yellow.append((252/255, 200/255, 0/255)) green.append((98/255, 178/255, 48/255)) blue.append((48/255, 181/255, 197/255)) black.append((25/255, 24/255, 21/255)) alpha = 0.7 plt.rcParams["axes.axisbelow"] = True plt.rcParams["figure.figsize"] = (16,9) plt.rcParams["lines.markersize"] = 8 plt.yscale('log') plt.grid(True) x = df_transistors.year y = df_transistors.transistors plt.scatter(x, y, marker = "^", color = yellow, alpha = alpha) x = df_specint.year y = df_specint.specint plt.scatter(x, y, marker = "s", color = blue, alpha = alpha) x = df_frequency.year y = df_frequency.frequency plt.scatter(x, y, marker = "s", color = green, alpha = alpha) x = df_watts.year y = df_watts.watts plt.scatter(x, y, marker = "v", color = violet, alpha = alpha) x = df_cores.year y = df_cores.cores plt.scatter(x, y, marker = "o", color = black, alpha = alpha) plt.legend(["Transistors (thousands)", "Single-thread SPECint (thousands)", "Frequency (MHz)", "Typical power (Watts)", "Number of logical cores"], loc = "upper left", fontsize = "medium") plt.savefig("data_visualisation.png", dpi = 300, orientation = "landscape", papertype ="a4") plt.show()