# %%
# libraries
import numpy as np
import matplotlib.pyplot as plt
 
# width of the bars
# barWidth = 0.3
 
# # Choose the height of the blue bars
# undirected = [
#     # 5390.36,
# 2.56,
# 8.42,
# 39.5,
# ]
 
# # Choose the height of the cyan bars
# directed = [
# # 5440.1,
# 2.8,
# 7.48,
# 39.76,
# ]
 
# # The x position of bars
# r1 = np.arange(len(undirected))
# r2 = [x + barWidth for x in r1]
 
# # Create blue bars
# plt.bar(r2, undirected, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='undirected')
 
# # Create cyan bars
# plt.bar(r1, directed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='directed')
 
# # general layout
# plt.xticks([r + barWidth/2 for r in range(len(undirected))], ['Pairings', 'HAWishes', 'EncWishes'])
# plt.ylabel('# Violations')
# plt.legend()
# plt.title("Directed vs Undirected")
 
# # Show graphic
# plt.show()
# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 0.3
 
# # Choose the height of the blue bars
# undirected = [
# 18.9313149871523
# ]
 
# # Choose the height of the cyan bars
# directed = [
# 21.8851814402876
# ]
 
# # The x position of bars
# r1 = np.arange(len(undirected))
# r2 = [x + barWidth for x in r1]
 
# # Create blue bars
# plt.bar(r1, undirected, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='undirected')
 
# # Create cyan bars
# plt.bar(r2, directed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='directed')
 
# # general layout
# plt.xticks([r + barWidth/2 for r in range(len(undirected))], ['Improvement'])
# plt.ylabel('%')
# plt.legend()
# plt.title("Directed vs Undirected")
 
# # Show graphic
# plt.show()

# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 1
 
# # Choose the height of the blue bars
# ucl = [
# 0,
# 0.08,
# (0.08+0.04)/2,
# (2.36+2.64)/2,
# ]
 
# # Choose the height of the cyan bars
# relaxed = [
# 0,
# 0,
# (0.24+0.12)/2,
# (2.36+2.72)/2,
# ]

# diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

# bars4 = ucl + relaxed + diff

# # The x position of bars
# # r1 = np.arange(len(ucl))
# # r2 = [x + barWidth for x in r1]
# # r3 = [x + 2*barWidth for x in r1]
 
# r1 = [0, 4, 8, 12]
# r2 = [1, 5, 9, 13]
# r3 = [2, 6, 10, 14]

# r4 = r1 + r2 + r3
 
# # Create labels
# label = bars4
 
# # Text on the top of each bar
# for i in range(len(r4)):
#     plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 6)


# # Create blue bars
# plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='ucl')
 
# # Create cyan bars
# plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='relaxed')
 
# # Create cyan bars
# plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# # general layout
# plt.xticks([1 + r*4 for r in range(len(ucl))], ['Hard','A','B','C'])
# plt.ylabel('%')
# plt.legend()
# plt.title("Pairings")
 
# # Show graphic
# plt.show()



# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 1
 
# # Choose the height of the blue bars
# ucl = [
# round((0 + 0)/2,2),
# round((1.28 + 1.44)/2,2),
# round((6.28 + 7.24)/2,2),
# round((0 + 0)/2,2),

# ]
 
# # Choose the height of the cyan bars
# relaxed = [
# round((0+0)/2,2),
# round((1.44+1.36)/2,2),
# round((5.96+6.8)/2,2),
# round((0+0)/2,2),
# ]

# diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

# bars4 = ucl + relaxed + diff

# # The x position of bars
# # r1 = np.arange(len(ucl))
# # r2 = [x + barWidth for x in r1]
# # r3 = [x + 2*barWidth for x in r1]
 
# r1 = [0, 4, 8, 12]
# r2 = [1, 5, 9, 13]
# r3 = [2, 6, 10, 14]

# r4 = r1 + r2 + r3
 
# # Create labels
# label = bars4
 
# # Text on the top of each bar
# for i in range(len(r4)):
#     plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 6)


# # Create blue bars
# plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='ucl')
 
# # Create cyan bars
# plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='relaxed')
 
# # Create cyan bars
# plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# # general layout
# plt.xticks([1 + r*4 for r in range(len(ucl))], ['Hard','A','B','C'])
# plt.ylabel('%')
# plt.legend()
# plt.title("HAWishes")
 
# # Show graphic
# plt.show()
# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 1
 
# # Choose the height of the blue bars
# ucl = [
# round((0+0)/2,2),
# round((2.56+2.72)/2,2),
# round((27.64+27.84)/2,2),
# round((11.92+12.24)/2,2),

# ]
 
# # Choose the height of the cyan bars
# relaxed = [
# round((0+0)/2,2),
# round((0.96+0.76)/2,2),
# round((26.6+26.52)/2,2),
# round((9.32+9.44)/2,2),
# ]

# diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

# bars4 = ucl + relaxed + diff

# # The x position of bars
# # r1 = np.arange(len(ucl))
# # r2 = [x + barWidth for x in r1]
# # r3 = [x + 2*barWidth for x in r1]
 
# r1 = [0, 4, 8, 12]
# r2 = [1, 5, 9, 13]
# r3 = [2, 6, 10, 14]

# r4 = r1 + r2 + r3
 
# # Create labels
# label = bars4
 
# # Text on the top of each bar
# for i in range(len(r4)):
#     plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 6)


# # Create blue bars
# plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='ucl')
 
# # Create cyan bars
# plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='relaxed')
 
# # Create cyan bars
# plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# # general layout
# plt.xticks([1 + r*4 for r in range(len(ucl))], ['Hard','A','B','C'])
# plt.ylabel('%')
# plt.legend()
# plt.title("EncWishes")
 
# # Show graphic
# plt.show()

# # %%


# # library
# import matplotlib.pyplot as plt
 
# # create random data
# values=[
# round((204+208)/2,2),
# round((516+560)/2,2),
# round((4756+4755)/2,2),
# ]
 


# names=f'Pairings {round(values[0]/sum(values)*100)}%', f'HAWishes {round(values[1]/sum(values)*100)}%', f'Encounters {round(values[2]/sum(values)*100)}%',
# # Create a pieplot
# plt.pie(values)

# # Label distance: gives the space between labels and the center of the pie
# plt.pie(values, labels=names, labeldistance=1.15);
# plt.show();
# # %%


# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 0.3
 
# # Choose the height of the blue bars
# undirected = [
# 18.9313149871523
# ]
 
# # Choose the height of the cyan bars
# directed = [
# 21.8851814402876
# ]
 
# # The x position of bars
# r1 = np.arange(len(undirected))
# r2 = [x + barWidth for x in r1]
 
# # Create blue bars
# plt.bar(r1, undirected, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='undirected')
 
# # Create cyan bars
# plt.bar(r2, directed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='directed')
 
# # general layout
# plt.xticks([r + barWidth/2 for r in range(len(undirected))], ['Improvement'])
# plt.ylabel('%')
# plt.ylim(0, 40)
# plt.legend()
 
# # Show graphic
# plt.show()
# # %%


# # %%
# # libraries
# import numpy as np
# import matplotlib.pyplot as plt
 
# # width of the bars
# barWidth = 0.3
 
# # Choose the height of the blue bars
# undirected = [
# 6008.88,
# 6052.68,
# ]
 
# # Choose the height of the cyan bars
# directed = [
# 4871.32,
# 4728.04,
# ]
 
# # The x position of bars
# r1 = np.arange(len(undirected))
# r2 = [x + barWidth for x in r1]
 
# # Create blue bars
# plt.bar(r1, undirected, width = barWidth, color = 'salmon', edgecolor = 'black', capsize=7, label='classic')
 
# # Create cyan bars
# plt.bar(r2, directed, width = barWidth, color = 'lightgreen', edgecolor = 'black', capsize=7, label='relaxed')
 
# # general layout
# plt.xticks([r + barWidth/2 for r in range(len(undirected))], ['undirected','directed'])
# plt.ylabel('Objective')
# # plt.ylim(0, 40)
# plt.legend()
 
# # Show graphic
# plt.show()
# # %%




# %%
# libraries
import numpy as np
import matplotlib.pyplot as plt
 
# width of the bars
barWidth = 15
 


columns = [
    # 'Overall Quality',
    # 'Stadium/city clash',
    'Stadium/City Clash',
    'TV-pairing NA5 1st',
    'TV-pairing other 1st',
    'TV-pairing NA5 2nd (HA)',
    'SKO (HA)',
    'Weekdays (HA)',
    'Balance (ENC)',
    'Quality  (ENC)',
    'Structure',
]




# Choose the height of the blue bars
ucl = [
# 3040.22,
0,
0,
0,
0.4,
0.2,
9.53,
11.49,
3.99,
0,



]
 
# Choose the height of the cyan bars
relaxed = [

# 2644.3,
0,
0,
0,
0.52,
0.19,
9.9,
9.74,
2.9,
0,


]


print(len(columns),len(ucl),len(relaxed))


diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

bars4 = ucl + relaxed + diff

# The x position of bars
# r1 = np.arange(len(ucl))
# r2 = [x + barWidth for x in r1]
# r3 = [x + 2*barWidth for x in r1]
 
r1 = [4*i*barWidth for i in range(len(ucl))]
r2 = [4*i*barWidth+1*barWidth for i in range(len(ucl))]
r3 = [4*i*barWidth+2*barWidth for i in range(len(ucl))]

r4 = r1 + r2 + r3
 
# Create labels
label = bars4
 
# Text on the top of each bar
for i in range(len(r4)):
    plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 12, rotation=90)


# Create blue bars
plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=20, label='classic')
 
# Create cyan bars
plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='3breaks')
 
# Create cyan bars
plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# general layout
plt.xticks([10+ r*4*barWidth for r in range(len(ucl))], columns, rotation=25, fontsize=12)
plt.ylabel('average # of violations', fontsize=12)
plt.legend()
# plt.ylim((0,3))
plt.title("Comparison based on 100 random draws")
 
# plt.savefig('classic_vs_3.png', dpi=300)    
# Show graphic
plt.show()
# %%

# %%
# libraries
import numpy as np
import matplotlib.pyplot as plt
 
# width of the bars
barWidth = 15
 


columns = [
    # 'Overall Quality',
    # 'Stadium/city clash',
    'Stadium/City Clash',
    'TV-pairing NA5 1st',
    'TV-pairing other 1st',
    'TV-pairing NA5 2nd (HA)',
    'SKO (HA)',
    'Weekdays (HA)',
    'Balance (ENC)',
    'Quality  (ENC)',
    'Structure',
]




# Choose the height of the blue bars
ucl = [
# 3040.22,
# 0,
# 0,
# 0,
# 0.4,
# 0,
0,
0,
0,

0.45,
0.19,
9.52,
11.67,
3.76,
0,




]
 
# Choose the height of the cyan bars
relaxed = [

# 2644.3,
# 0,
# 0,
# 0,
# 0.52,
# 0,
0,
0,
0,

0.6,
0.19,
9.27,
11.3,
3.17,
0,





]


print(len(columns),len(ucl),len(relaxed))


diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

bars4 = ucl + relaxed + diff

# The x position of bars
# r1 = np.arange(len(ucl))
# r2 = [x + barWidth for x in r1]
# r3 = [x + 2*barWidth for x in r1]
 
r1 = [4*i*barWidth for i in range(len(ucl))]
r2 = [4*i*barWidth+1*barWidth for i in range(len(ucl))]
r3 = [4*i*barWidth+2*barWidth for i in range(len(ucl))]

r4 = r1 + r2 + r3
 
# Create labels
label = bars4
 
# Text on the top of each bar
for i in range(len(r4)):
    plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 12, rotation=90)


# Create blue bars
plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='classic')
 
# Create cyan bars
plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='startwbreak')
 
# Create cyan bars
plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# general layout
plt.xticks([10+ r*4*barWidth for r in range(len(ucl))], columns, rotation=30, fontsize=12)
plt.ylabel('average # of violations', fontsize=12)
plt.legend()
# plt.ylim((0,3))
plt.title("Comparison based on 100 random draws", fontsize=12)
 
# plt.savefig('classic_vs_sw.png', dpi=300)    
# Show graphic
plt.show()
# %%


# %%
# libraries
import numpy as np
import matplotlib.pyplot as plt
 
# width of the bars
barWidth = 15
 


columns = [
    # 'Overall Quality',
    # 'Stadium/city clash',
    'Stadium/City Clash',
    'TV-pairing NA5 1st',
    'TV-pairing other 1st',
    'TV-pairing NA5 2nd (HA)',
    'SKO (HA)',
    'Weekdays (HA)',
    'Balance (ENC)',
    'Quality  (ENC)',
    'Structure',
]




# Choose the height of the blue bars
ucl = [
# 3040.22,
# 0,
# 0,
# 0,
# 0.4,
# 0,
0,
0,
0,

0.34,
0.32,
9.82,
10.71,
3.1,
0,





]
 
# Choose the height of the cyan bars
relaxed = [

# 2644.3,
# 0,
# 0,
# 0,
# 0.52,
# 0,
0,
0,
0,

0.51,
0.19,
9.43,
9.67,
2.91,
0,






]


print(len(columns),len(ucl),len(relaxed))


diff = [-round(ucl[i] - relaxed[i],2) for i in range(len(ucl))]

bars4 = ucl + relaxed + diff

# The x position of bars
# r1 = np.arange(len(ucl))
# r2 = [x + barWidth for x in r1]
# r3 = [x + 2*barWidth for x in r1]
 
r1 = [4*i*barWidth for i in range(len(ucl))]
r2 = [4*i*barWidth+1*barWidth for i in range(len(ucl))]
r3 = [4*i*barWidth+2*barWidth for i in range(len(ucl))]

r4 = r1 + r2 + r3
 
# Create labels
label = bars4
 
# Text on the top of each bar
for i in range(len(r4)):
    plt.text(x = r4[i]-0.3 , y = bars4[i]+0.1, s = label[i], size = 12, rotation=90)


# Create blue bars
plt.bar(r1, ucl, width = barWidth, color = 'blue', edgecolor = 'black', capsize=7, label='startwbreak')
 
# Create cyan bars
plt.bar(r2, relaxed, width = barWidth, color = 'cyan', edgecolor = 'black', capsize=7, label='3breaks')
 
# Create cyan bars
plt.bar(r3, diff, width = barWidth, color = 'red', edgecolor = 'black', capsize=7, label='diff')

# general layout
plt.xticks([10+ r*4*barWidth for r in range(len(ucl))], columns, rotation=30, fontsize=12)
plt.ylabel('average # of violations', fontsize=12)
plt.legend()
# plt.ylim((0,3))
plt.title("Comparison based on 100 random draws", fontsize=12)
# plt.savefig('sw_vs_3.png', dpi=300)    

# Show graphic
plt.show()
# %%