def __init__(self, qregs, cregs, ops, scale=1.0, style=None, plot_barriers=True, reverse_bits=False): if not HAS_MATPLOTLIB: raise ImportError('The class MatplotlibDrawer needs matplotlib. ' 'Run "pip install matplotlib" before.') self._ast = None self._scale = DEFAULT_SCALE * scale self._creg = [] self._qreg = [] self._registers(cregs, qregs) self._ops = ops self._qreg_dict = collections.OrderedDict() self._creg_dict = collections.OrderedDict() self._cond = { 'n_lines': 0, 'xmax': 0, 'ymax': 0, } config = user_config.get_config() if config and (style is None): config_style = config.get('circuit_mpl_style', 'default') if config_style == 'default': self._style = DefaultStyle() elif config_style == 'bw': self._style = BWStyle() elif style is False: self._style = BWStyle() else: self._style = DefaultStyle() self.plot_barriers = plot_barriers self.reverse_bits = reverse_bits if style: if isinstance(style, dict): self._style.set_style(style) elif isinstance(style, str): with open(style, 'r') as infile: dic = json.load(infile) self._style.set_style(dic) self.figure = plt.figure() self.figure.patch.set_facecolor(color=self._style.bg) self.ax = self.figure.add_subplot(111) self.ax.axis('off') self.ax.set_aspect('equal') self.ax.tick_params(labelbottom=False, labeltop=False, labelleft=False, labelright=False) self.x_offset = 0
def __init__(self, qregs, cregs, ops, scale=1.0, style=None, plot_barriers=True, reverse_bits=False, layout=None, fold=25, ax=None, initial_state=False, cregbundle=True): if not HAS_MATPLOTLIB: raise ImportError('The class MatplotlibDrawer needs matplotlib. ' 'To install, run "pip install matplotlib".') self._ast = None self._scale = DEFAULT_SCALE * scale self._creg = [] self._qreg = [] self._registers(cregs, qregs) self._ops = ops self._qreg_dict = collections.OrderedDict() self._creg_dict = collections.OrderedDict() self._cond = { 'n_lines': 0, 'xmax': 0, 'ymax': 0, } config = user_config.get_config() if config and (style is None): config_style = config.get('circuit_mpl_style', 'default') if config_style == 'default': self._style = DefaultStyle() elif config_style == 'bw': self._style = BWStyle() elif style is False: self._style = BWStyle() else: self._style = DefaultStyle() self.plot_barriers = plot_barriers self.reverse_bits = reverse_bits self.layout = layout self.initial_state = initial_state if style and 'cregbundle' in style.keys(): self.cregbundle = style['cregbundle'] del style['cregbundle'] warn("The style dictionary key 'cregbundle' has been deprecated and will be removed" " in a future release. cregbundle is now a parameter to draw()." " Example: circuit.draw(output='mpl', cregbundle=False)", DeprecationWarning, 2) else: self.cregbundle = cregbundle if style: if isinstance(style, dict): self._style.set_style(style) elif isinstance(style, str): with open(style, 'r') as infile: dic = json.load(infile) self._style.set_style(dic) if ax is None: self.return_fig = True self.figure = plt.figure() self.figure.patch.set_facecolor(color=self._style.bg) self.ax = self.figure.add_subplot(111) else: self.return_fig = False self.ax = ax self.figure = ax.get_figure() self.x_offset = 0 self._reg_long_text = 0 # default is to use character table for text width, # but get_renderer will work with some mpl backends """fig = plt.figure() if hasattr(fig.canvas, 'get_renderer'): self.renderer = fig.canvas.get_renderer() else: self.renderer = None""" self.renderer = None self.fold = fold if self.fold < 2: self.fold = -1 self.ax.axis('off') self.ax.set_aspect('equal') self.ax.tick_params(labelbottom=False, labeltop=False, labelleft=False, labelright=False) # these char arrays are for finding text_width when not # using get_renderer method for the matplotlib backend self._latex_chars = ('$', '{', '}', '_', '\\left', '\\right', '\\dagger', '\\rangle') self._latex_chars1 = ('\\mapsto', '\\pi', '\\;') self._char_list = {' ': (0.0958, 0.0583), '!': (0.1208, 0.0729), '"': (0.1396, 0.0875), '#': (0.2521, 0.1562), '$': (0.1917, 0.1167), '%': (0.2854, 0.1771), '&': (0.2333, 0.1458), "'": (0.0833, 0.0521), '(': (0.1167, 0.0729), ')': (0.1167, 0.0729), '*': (0.15, 0.0938), '+': (0.25, 0.1562), ',': (0.0958, 0.0583), '-': (0.1083, 0.0667), '.': (0.0958, 0.0604), '/': (0.1021, 0.0625), '0': (0.1875, 0.1167), '1': (0.1896, 0.1167), '2': (0.1917, 0.1188), '3': (0.1917, 0.1167), '4': (0.1917, 0.1188), '5': (0.1917, 0.1167), '6': (0.1896, 0.1167), '7': (0.1917, 0.1188), '8': (0.1896, 0.1188), '9': (0.1917, 0.1188), ':': (0.1021, 0.0604), ';': (0.1021, 0.0604), '<': (0.25, 0.1542), '=': (0.25, 0.1562), '>': (0.25, 0.1542), '?': (0.1583, 0.0979), '@': (0.2979, 0.1854), 'A': (0.2062, 0.1271), 'B': (0.2042, 0.1271), 'C': (0.2083, 0.1292), 'D': (0.2312, 0.1417), 'E': (0.1875, 0.1167), 'F': (0.1708, 0.1062), 'G': (0.2312, 0.1438), 'H': (0.225, 0.1396), 'I': (0.0875, 0.0542), 'J': (0.0875, 0.0542), 'K': (0.1958, 0.1208), 'L': (0.1667, 0.1042), 'M': (0.2583, 0.1604), 'N': (0.225, 0.1396), 'O': (0.2354, 0.1458), 'P': (0.1812, 0.1125), 'Q': (0.2354, 0.1458), 'R': (0.2083, 0.1292), 'S': (0.1896, 0.1188), 'T': (0.1854, 0.1125), 'U': (0.2208, 0.1354), 'V': (0.2062, 0.1271), 'W': (0.2958, 0.1833), 'X': (0.2062, 0.1271), 'Y': (0.1833, 0.1125), 'Z': (0.2042, 0.1271), '[': (0.1167, 0.075), '\\': (0.1021, 0.0625), ']': (0.1167, 0.0729), '^': (0.2521, 0.1562), '_': (0.1521, 0.0938), '`': (0.15, 0.0938), 'a': (0.1854, 0.1146), 'b': (0.1917, 0.1167), 'c': (0.1646, 0.1021), 'd': (0.1896, 0.1188), 'e': (0.1854, 0.1146), 'f': (0.1042, 0.0667), 'g': (0.1896, 0.1188), 'h': (0.1896, 0.1188), 'i': (0.0854, 0.0521), 'j': (0.0854, 0.0521), 'k': (0.1729, 0.1083), 'l': (0.0854, 0.0521), 'm': (0.2917, 0.1812), 'n': (0.1896, 0.1188), 'o': (0.1833, 0.1125), 'p': (0.1917, 0.1167), 'q': (0.1896, 0.1188), 'r': (0.125, 0.0771), 's': (0.1562, 0.0958), 't': (0.1167, 0.0729), 'u': (0.1896, 0.1188), 'v': (0.1771, 0.1104), 'w': (0.2458, 0.1521), 'x': (0.1771, 0.1104), 'y': (0.1771, 0.1104), 'z': (0.1562, 0.0979), '{': (0.1917, 0.1188), '|': (0.1, 0.0604), '}': (0.1896, 0.1188)}