Skip to main contentIBM Quantum Documentation


qiskit.visualization.circuit_drawer(circuit, scale=None, filename=None, style=None, output=None, interactive=False, plot_barriers=True, reverse_bits=None, justify=None, vertical_compression='medium', idle_wires=True, with_layout=True, fold=None, ax=None, initial_state=False, cregbundle=None, wire_order=None, expr_len=30)

GitHub(opens in a new tab)

Draw the quantum circuit. Use the output parameter to choose the drawing format:

text: ASCII art TextDrawing that can be printed in the console.

mpl: images with color rendered purely in Python using matplotlib.

latex: high-quality images compiled via latex.

latex_source: raw uncompiled latex output.


Support for Expr nodes in conditions and fields is preliminary and incomplete. The text and mpl drawers will make a best-effort attempt to show data dependencies, but the LaTeX-based drawers will skip these completely.


  • circuit (QuantumCircuit) – The circuit to visualize.

  • scale (float(opens in a new tab) | None) – Scale of image to draw (shrink if < 1.0). Only used by the mpl, latex and latex_source outputs. Defaults to 1.0.

  • filename (str(opens in a new tab) | None) – File path to save image to. Defaults to None (result not saved in a file).

  • style (dict(opens in a new tab) |str(opens in a new tab) | None) –

    Style name, file name of style JSON file, or a dictionary specifying the style.

    • The supported style names are "iqp" (default), "iqp-dark", "clifford",

      "textbook" and "bw".

    • If given a JSON file, e.g. my_style.json or my_style (the .json

      extension may be omitted), this function attempts to load the style dictionary from that location. Note, that the JSON file must completely specify the visualization specifications. The file is searched for in qiskit/visualization/circuit/styles, the current working directory, and the location specified in ~/.qiskit/settings.conf.

    • If a dictionary, every entry overrides the default configuration. If the

      "name" key is given, the default configuration is given by that style. For example, {"name": "textbook", "subfontsize": 5} loads the "texbook" style and sets the subfontsize (e.g. the gate angles) to 5.

    • If None the default style "iqp" is used or, if given, the default style

      specified in ~/.qiskit/settings.conf.

  • output (str(opens in a new tab) | None) – Select the output method to use for drawing the circuit. Valid choices are text, mpl, latex, latex_source. By default the text drawer is used unless the user config file (usually ~/.qiskit/settings.conf) has an alternative backend set as the default. For example, circuit_drawer = latex. If the output kwarg is set, that backend will always be used over the default in the user config file.

  • interactive (bool(opens in a new tab)) – When set to True, show the circuit in a new window (for mpl this depends on the matplotlib backend being used supporting this). Note when used with either the text or the latex_source output type this has no effect and will be silently ignored. Defaults to False.

  • reverse_bits (bool(opens in a new tab) | None) – When set to True, reverse the bit order inside registers for the output visualization. Defaults to False unless the user config file (usually ~/.qiskit/settings.conf) has an alternative value set. For example, circuit_reverse_bits = True.

  • plot_barriers (bool(opens in a new tab)) – Enable/disable drawing barriers in the output circuit. Defaults to True.

  • justify (str(opens in a new tab) | None) – Options are left, right or none. If anything else is supplied, it defaults to left justified. It refers to where gates should be placed in the output circuit if there is an option. none results in each gate being placed in its own column.

  • vertical_compression (str(opens in a new tab) | None) – high, medium or low. It merges the lines generated by the text output so the drawing will take less vertical room. Default is medium. Only used by the text output, will be silently ignored otherwise.

  • idle_wires (bool(opens in a new tab)) – Include idle wires (wires with no circuit elements) in output visualization. Default is True.

  • with_layout (bool(opens in a new tab)) – Include layout information, with labels on the physical layout. Default is True.

  • fold (int(opens in a new tab) | None) – Sets pagination. It can be disabled using -1. In text, sets the length of the lines. This is useful when the drawing does not fit in the console. If None (default), it will try to guess the console width using shutil.get_terminal_size(). However, if running in jupyter, the default line length is set to 80 characters. In mpl, it is the number of (visual) layers before folding. Default is 25.

  • ax (Any | None) – Only used by the mpl backend. An optional matplotlib.axes.Axes object to be used for the visualization output. If none is specified, a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant.

  • initial_state (bool(opens in a new tab)) – Adds 0|0\rangle in the beginning of the qubit wires and 00 to classical wires. Default is False.

  • cregbundle (bool(opens in a new tab) | None) – If set to True, bundle classical registers. Default is True, except for when output is set to "text".

  • wire_order (list(opens in a new tab)[int(opens in a new tab)] | None) – A list of integers used to reorder the display of the bits. The list must have an entry for every bit with the bits in the range 0 to (num_qubits + num_clbits).

  • expr_len (int(opens in a new tab)) – The number of characters to display if an Expr is used for the condition in a ControlFlowOp. If this number is exceeded, the string will be truncated at that number and ‘…’ added to the end.


TextDrawing or matplotlib.figure or PIL.Image or str(opens in a new tab):

  • TextDrawing (if output='text')

    A drawing that can be printed as ascii art.

  • matplotlib.figure.Figure (if output='mpl')

    A matplotlib figure object for the circuit diagram.

  • PIL.Image (if output='latex’)

    An in-memory representation of the image of the circuit diagram.

  • str (if output='latex_source')

    The LaTeX source code for visualizing the circuit diagram.



from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
qc = QuantumCircuit(1, 1)
qc.measure(0, 0)
qc.draw(output='mpl', style={'backgroundcolor': '#EEEEEE'})
Was this page helpful?
Report a bug or request content on GitHub.