def process_data(rho): """ Sort rho data """ result = dict() num = int(np.log2(len(rho))) labels = list(map(lambda x: x.to_label(), pauli_group(num))) values = list(map(lambda x: np.real(np.trace(np.dot(x.to_matrix(), rho))), pauli_group(num))) for position, label in enumerate(labels): result[label] = values[position] return result
def plot_state_paulivec(rho, title="", figsize=None, color=None): """Plot the paulivec representation of a quantum state. Plot a bargraph of the mixed state rho over the pauli matrices Args: rho (ndarray): Numpy array for state vector or density matrix title (str): a string that represents the plot title figsize (tuple): Figure size in inches. color (list or str): Color of the expectation value bars. Returns: matplotlib.Figure: The matplotlib.Figure of the visualization Raises: ImportError: Requires matplotlib. """ if not HAS_MATPLOTLIB: raise ImportError('Must have Matplotlib installed.') rho = _validate_input_state(rho) if figsize is None: figsize = (7, 5) num = int(np.log2(len(rho))) labels = list(map(lambda x: x.to_label(), pauli_group(num))) values = list( map(lambda x: np.real(np.trace(np.dot(x.to_matrix(), rho))), pauli_group(num))) numelem = len(values) if color is None: color = "#648fff" ind = np.arange(numelem) # the x locations for the groups width = 0.5 # the width of the bars fig, ax = plt.subplots(figsize=figsize) ax.grid(zorder=0, linewidth=1, linestyle='--') ax.bar(ind, values, width, color=color, zorder=2) ax.axhline(linewidth=1, color='k') # add some text for labels, title, and axes ticks ax.set_ylabel('Expectation value', fontsize=14) ax.set_xticks(ind) ax.set_yticks([-1, -0.5, 0, 0.5, 1]) ax.set_xticklabels(labels, fontsize=14, rotation=70) ax.set_xlabel('Pauli', fontsize=14) ax.set_ylim([-1, 1]) ax.set_facecolor('#eeeeee') for tick in ax.xaxis.get_major_ticks() + ax.yaxis.get_major_ticks(): tick.label.set_fontsize(14) ax.set_title(title, fontsize=16) plt.close(fig) return fig
def plot_state_paulivec(rho, title="", filename=None, show=False): """Plot the paulivec representation of a quantum state. Plot a bargraph of the mixed state rho over the pauli matrices Args: rho (np.array[[complex]]): array of dimensions 2**n x 2**nn complex numbers title (str): a string that represents the plot title filename (str): the output file to save the plot as. If specified it will save and exit and not open up the plot in a new window. show (bool): If set to true the rendered image will open in a new window Returns: matplotlib.Figure: The matplotlib.Figure of the visualization """ num = int(np.log2(len(rho))) labels = list(map(lambda x: x.to_label(), pauli_group(num))) values = list( map(lambda x: np.real(np.trace(np.dot(x.to_matrix(), rho))), pauli_group(num))) numelem = len(values) ind = np.arange(numelem) # the x locations for the groups width = 0.5 # the width of the bars _, ax = plt.subplots() ax.grid(zorder=0) ax.bar(ind, values, width, color='seagreen') # add some text for labels, title, and axes ticks ax.set_ylabel('Expectation value', fontsize=12) ax.set_xticks(ind) ax.set_yticks([-1, -0.5, 0, 0.5, 1]) ax.set_xticklabels(labels, fontsize=12, rotation=70) ax.set_xlabel('Pauli', fontsize=12) ax.set_ylim([-1, 1]) plt.title(title) if filename: plt.savefig(filename) elif show: plt.show() return plt.gcf()