Как отобразить результаты нескольких тестов в одну диаграмму (python)? - PullRequest
0 голосов
/ 09 мая 2020

В рамках своего задания я использую следующий код python для проверки производительности n-битных предикторов ветвления (n = 1,2,3,4) в двенадцати различных тестах. Этот скрипт создает двенадцать графиков, каждый из которых имеет по оси x 4 типа предикторов ветвления, а по оси y направление «Ошибочные предсказания на тысячу инструкций» (направление MPKI). Как мне изменить код, чтобы результаты были объединены в одну диаграмму?

Код:

!/usr/bin/env python3

import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

## For nbit predictors
predictors_to_plot = [ "  Nbit-16K-1", "  Nbit-16K-2", "  Nbit-16K-3", "  Nbit-16K-4",  "                       
TwoLevelPredictor16K-2"]

x_Axis = []
mpki_Axis = []

fp = open(sys.argv[1])
line = fp.readline()
while line:
   tokens = line.split()
   if (line.startswith("Total Instructions:")):
       total_ins = float(tokens[2])
   else:
       for pred_prefix in predictors_to_plot:
           if line.startswith(pred_prefix):
               predictor_string = tokens[0].split(':')[0]
               correct_predictions = float(tokens[1])
               incorrect_predictions = float(tokens[2])
               x_Axis.append(predictor_string)
               [1]mpki_Axis.append(incorrect_predictions / (total_ins / 1000.0))

   line = fp.readline()

fig, ax1 = plt.subplots()
ax1.grid(True)

xAx = np.arange(len(x_Axis))
ax1.xaxis.set_ticks(np.arange(0, len(x_Axis), 1))
ax1.set_xticklabels(x_Axis, rotation=45)
ax1.set_xlim(-0.5, len(x_Axis) - 0.5)
ax1.set_ylim(min(mpki_Axis) - 0.05, max(mpki_Axis) + 0.05)
ax1.set_ylabel("$MPKI$")
line1 = ax1.plot(mpki_Axis, label="mpki",color="red",marker='x')

plt.title("MPKI")
plt.savefig(("plot"),bbox_inches="tight")*

Как выглядит график:

enter image description here

...