-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplot_fig2.py
145 lines (118 loc) · 8.96 KB
/
plot_fig2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import matplotlib.pyplot as plt
import pandas as pd
import os
folder = 'results_figures_plot/'
# cycle
c_x_p1 = pd.read_csv(folder + "cycle_POWELL_x_p=1.csv", index_col='n_qubs')
c_r_p1 = pd.read_csv(folder + "cycle_POWELL_r_p=1.csv", index_col='n_qubs')
c_xy_p1 = pd.read_csv(folder + "cycle_POWELL_xy_p=1.csv", index_col='n_qubs')
# star
s_x_p1 = pd.read_csv(folder + "star_POWELL_x_p=1.csv", index_col='n_qubs')
s_r_p1 = pd.read_csv(folder + "star_POWELL_r_p=1.csv", index_col='n_qubs')
s_xy_p1 = pd.read_csv(folder + "star_POWELL_xy_p=1.csv", index_col='n_qubs')
# 1
# all mixers, p=1, slice along graph-mixer, approx ratio vs n
fig = plt.figure(3, figsize=(10.24, 7.68))
x_n = c_x_p1.index
# plt.errorbar(x_n, c_x_p1.approx_ratio_mean, yerr=c_x_p1.approx_ratio_std, marker='s', color='#9200ff', label='cycle x')
# plt.errorbar(x_n, c_r_p1.approx_ratio_mean, yerr=c_r_p1.approx_ratio_std, marker='o', color='#0000ff', label='cycle r')
# plt.errorbar(x_n, c_xy_p1.approx_ratio_mean, yerr=c_xy_p1.approx_ratio_std, marker='*', color='#00ccff', label='cycle xy')
# plt.errorbar(x_n, s_x_p1.approx_ratio_mean, marker='s', color='#ff0095', label='star x')
# plt.errorbar(x_n, s_r_p1.approx_ratio_mean, yerr=s_r_p1.approx_ratio_std, marker='o', color='#ff0000', label='star r')
# plt.errorbar(x_n, s_xy_p1.approx_ratio_mean, yerr=s_xy_p1.approx_ratio_std, marker='*', color='#ff9100', label='star xy')
# plt.fill_between(x_n, c_x_p1.approx_ratio_mean - c_x_p1.approx_ratio_std, c_x_p1.approx_ratio_mean + c_x_p1.approx_ratio_std, color='#9200ff', alpha=0.1)
# plt.fill_between(x_n, c_r_p1.approx_ratio_mean - c_r_p1.approx_ratio_std, c_r_p1.approx_ratio_mean + c_r_p1.approx_ratio_std, color='#0000ff', alpha=0.1)
# plt.fill_between(x_n, c_xy_p1.approx_ratio_mean - c_xy_p1.approx_ratio_std, c_xy_p1.approx_ratio_mean + c_xy_p1.approx_ratio_std, color='#00ccff', alpha=0.1)
# plt.fill_between(x_n, s_x_p1.approx_ratio_mean - s_x_p1.approx_ratio_std, s_x_p1.approx_ratio_mean + s_x_p1.approx_ratio_std, color='#ff0095', alpha=0.1)
# plt.fill_between(x_n, s_r_p1.approx_ratio_mean - s_r_p1.approx_ratio_std, s_r_p1.approx_ratio_mean + s_r_p1.approx_ratio_std, color='#ff0000', alpha=0.1)
# plt.fill_between(x_n, s_xy_p1.approx_ratio_mean - s_xy_p1.approx_ratio_std, s_xy_p1.approx_ratio_mean + s_xy_p1.approx_ratio_std, color='#ff9100', alpha=0.1)
plt.plot(x_n, c_x_p1.approx_ratio_mean, marker='o', color='#9200ff', label='cycle x')
plt.plot(x_n, c_r_p1.approx_ratio_mean, marker='o', color='#0000ff', label='cycle r')
plt.plot(x_n, c_xy_p1.approx_ratio_mean, marker='o', color='#00ccff', label='cycle xy')
plt.plot(x_n, s_x_p1.approx_ratio_mean, marker='o', color='#ff0095', label='star x')
plt.plot(x_n, s_r_p1.approx_ratio_mean, marker='o', color='#ff0000', label='star r')
plt.plot(x_n, s_xy_p1.approx_ratio_mean, marker='o', color='#ff9100', label='star xy')
plt.axhline(0.5, linestyle='--', color='black', label='average')
plt.xticks(x_n)
plt.grid()
plt.legend()
plt.xlabel("Qubits")
plt.ylabel("Approx ratio")
if not os.path.exists('figures'):
os.makedirs('fig2')
fig.savefig('fig2/all_mixer_p=1_graph-mixer_approx_ratio_n.svg', bbox_inches='tight', pad_inches=0)
plt.show()
# 2
# all mixers, p=1, slice along graph-mixer, time vs n
fig = plt.figure(3, figsize=(10.24, 7.68))
x_n = c_x_p1.index
# plt.errorbar(x_n, c_x_p1.opt_time_mean, yerr=c_x_p1.opt_time_std, marker='s', color='#9200ff', label='cycle x')
# plt.errorbar(x_n, c_r_p1.opt_time_mean, yerr=c_r_p1.opt_time_std, marker='o', color='#0000ff', label='cycle r')
# plt.errorbar(x_n, c_xy_p1.opt_time_mean, yerr=c_xy_p1.opt_time_std, marker='*', color='#00ccff', label='cycle xy')
# plt.errorbar(x_n, s_x_p1.opt_time_mean, marker='s', color='#ff0095', label='star x')
# plt.errorbar(x_n, s_r_p1.opt_time_mean, yerr=s_r_p1.opt_time_std, marker='o', color='#ff0000', label='star r')
# plt.errorbar(x_n, s_xy_p1.opt_time_mean, yerr=s_xy_p1.opt_time_std, marker='*', color='#ff9100', label='star xy')
# plt.fill_between(x_n, c_x_p1.opt_time_mean - c_x_p1.opt_time_std, c_x_p1.opt_time_mean + c_x_p1.opt_time_std, color='#9200ff', alpha=0.1)
# plt.fill_between(x_n, c_r_p1.opt_time_mean - c_r_p1.opt_time_std, c_r_p1.opt_time_mean + c_r_p1.opt_time_std, color='#0000ff', alpha=0.1)
# plt.fill_between(x_n, c_xy_p1.opt_time_mean - c_xy_p1.opt_time_std, c_xy_p1.opt_time_mean + c_xy_p1.opt_time_std, color='#00ccff', alpha=0.1)
# plt.fill_between(x_n, s_x_p1.opt_time_mean - s_x_p1.opt_time_std, s_x_p1.opt_time_mean + s_x_p1.opt_time_std, color='#ff0095', alpha=0.1)
# plt.fill_between(x_n, s_r_p1.opt_time_mean - s_r_p1.opt_time_std, s_r_p1.opt_time_mean + s_r_p1.opt_time_std, color='#ff0000', alpha=0.1)
# plt.fill_between(x_n, s_xy_p1.opt_time_mean - s_xy_p1.opt_time_std, s_xy_p1.opt_time_mean + s_xy_p1.opt_time_std, color='#ff9100', alpha=0.1)
plt.semilogy(x_n, c_x_p1.opt_time_mean, marker='o', color='#9200ff', label='cycle x')
plt.semilogy(x_n, c_r_p1.opt_time_mean, marker='o', color='#0000ff', label='cycle r')
plt.semilogy(x_n, c_xy_p1.opt_time_mean, marker='o', color='#00ccff', label='cycle xy')
plt.semilogy(x_n, s_x_p1.opt_time_mean, marker='o', color='#ff0095', label='star x')
plt.semilogy(x_n, s_r_p1.opt_time_mean, marker='o', color='#ff0000', label='star r')
plt.semilogy(x_n, s_xy_p1.opt_time_mean, marker='o', color='#ff9100', label='star xy')
plt.xticks(x_n)
plt.grid()
plt.legend()
plt.xlabel("Qubits")
plt.ylabel("Optimization time")
fig.savefig('fig2/all_mixer_p=1_graph-mixer_opt_time_n.svg', bbox_inches='tight', pad_inches=0)
plt.show()
# 3
# all mixers, p=1, slice along graph-mixer, sol ratio vs n
fig = plt.figure(3, figsize=(10.24, 7.68))
x_n = c_x_p1.index
# plt.errorbar(x_n, c_x_p1.most_prob_sol_ratio_mean, yerr=c_x_p1.most_prob_sol_ratio_std, marker='s', color='#9200ff', label='cycle x')
# plt.errorbar(x_n, c_r_p1.most_prob_sol_ratio_mean, yerr=c_r_p1.most_prob_sol_ratio_std, marker='o', color='#0000ff', label='cycle r')
# plt.errorbar(x_n, c_xy_p1.most_prob_sol_ratio_mean, yerr=c_xy_p1.most_prob_sol_ratio_std, marker='*', color='#00ccff', label='cycle xy')
# plt.errorbar(x_n, s_x_p1.most_prob_sol_ratio_mean, marker='s', color='#ff0095', label='star x')
# plt.errorbar(x_n, s_r_p1.most_prob_sol_ratio_mean, yerr=s_r_p1.most_prob_sol_ratio_std, marker='o', color='#ff0000', label='star r')
# plt.errorbar(x_n, s_xy_p1.most_prob_sol_ratio_mean, yerr=s_xy_p1.most_prob_sol_ratio_std, marker='*', color='#ff9100', label='star xy')
# plt.fill_between(x_n, c_x_p1.most_prob_sol_ratio_mean - c_x_p1.most_prob_sol_ratio_std, c_x_p1.most_prob_sol_ratio_mean + c_x_p1.most_prob_sol_ratio_std, color='#9200ff', alpha=0.1)
# plt.fill_between(x_n, c_r_p1.most_prob_sol_ratio_mean - c_r_p1.most_prob_sol_ratio_std, c_r_p1.most_prob_sol_ratio_mean + c_r_p1.most_prob_sol_ratio_std, color='#0000ff', alpha=0.1)
# plt.fill_between(x_n, c_xy_p1.most_prob_sol_ratio_mean - c_xy_p1.most_prob_sol_ratio_std, c_xy_p1.most_prob_sol_ratio_mean + c_xy_p1.most_prob_sol_ratio_std, color='#00ccff', alpha=0.1)
# plt.fill_between(x_n, s_x_p1.most_prob_sol_ratio_mean - s_x_p1.most_prob_sol_ratio_std, s_x_p1.most_prob_sol_ratio_mean + s_x_p1.most_prob_sol_ratio_std, color='#ff0095', alpha=0.1)
# plt.fill_between(x_n, s_r_p1.most_prob_sol_ratio_mean - s_r_p1.most_prob_sol_ratio_std, s_r_p1.most_prob_sol_ratio_mean + s_r_p1.most_prob_sol_ratio_std, color='#ff0000', alpha=0.1)
# plt.fill_between(x_n, s_xy_p1.most_prob_sol_ratio_mean - s_xy_p1.most_prob_sol_ratio_std, s_xy_p1.most_prob_sol_ratio_mean + s_xy_p1.most_prob_sol_ratio_std, color='#ff9100', alpha=0.1)
plt.plot(x_n, c_x_p1.most_prob_sol_ratio_mean, marker='o', color='#9200ff', label='cycle x')
plt.plot(x_n, c_r_p1.most_prob_sol_ratio_mean, marker='o', color='#0000ff', label='cycle r')
plt.plot(x_n, c_xy_p1.most_prob_sol_ratio_mean, marker='o', color='#00ccff', label='cycle xy')
plt.plot(x_n, s_x_p1.most_prob_sol_ratio_mean, marker='o', color='#ff0095', label='star x')
plt.plot(x_n, s_r_p1.most_prob_sol_ratio_mean, marker='o', color='#ff0000', label='star r')
plt.plot(x_n, s_xy_p1.most_prob_sol_ratio_mean, marker='o', color='#ff9100', label='star xy')
plt.xticks(x_n)
plt.grid()
plt.legend()
plt.xlabel("Qubits")
plt.ylabel("Sol ratio")
fig.savefig('fig2/all_mixer_p=1_graph-mixer_sol_ratio_n.svg', bbox_inches='tight', pad_inches=0)
plt.show()
# 4
# all mixers, p=1, slice along graph-mixer, sol count vs n
fig = plt.figure(3, figsize=(10.24, 7.68))
x_n = c_x_p1.index
plt.plot(x_n, c_x_p1.optimal_sol_count/100, marker='o', color='#9200ff', label='cycle x')
plt.plot(x_n, c_r_p1.optimal_sol_count/100, marker='o', color='#0000ff', label='cycle r')
plt.plot(x_n, c_xy_p1.optimal_sol_count/100, marker='o', color='#00ccff', label='cycle xy')
plt.plot(x_n, s_x_p1.optimal_sol_count/100, marker='o', color='#ff0095', label='star x')
plt.plot(x_n, s_r_p1.optimal_sol_count/100, marker='o', color='#ff0000', label='star r')
plt.plot(x_n, s_xy_p1.optimal_sol_count/100, marker='o', color='#ff9100', label='star xy')
plt.xticks(x_n)
plt.grid()
plt.legend()
plt.xlabel("Qubits")
plt.ylabel("Optimal sol")
fig.savefig('fig2/all_mixer_p=1_graph-mixer_sol_count_n.svg', bbox_inches='tight', pad_inches=0)