qiskit-documentation/docs/api/qiskit/0.24/qiskit.visualization.circui...

216 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: circuit_drawer
description: API reference for qiskit.visualization.circuit_drawer
in_page_toc_min_heading_level: 1
python_api_type: function
python_api_name: qiskit.visualization.circuit_drawer
---
<span id="qiskit-visualization-circuit-drawer" />
# qiskit.visualization.circuit\_drawer
<Function id="qiskit.visualization.circuit_drawer" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.16/qiskit/visualization/circuit_visualization.py" signature="circuit_drawer(circuit, scale=None, filename=None, style=None, output=None, interactive=False, plot_barriers=True, reverse_bits=False, justify=None, vertical_compression='medium', idle_wires=True, with_layout=True, fold=None, ax=None, initial_state=False, cregbundle=True)">
Draw a quantum circuit to different formats (set by output parameter):
**text**: ASCII art TextDrawing that can be printed in the console.
**latex**: high-quality images compiled via latex.
**latex\_source**: raw uncompiled latex output.
**matplotlib**: images with color rendered purely in Python.
**Parameters**
* **circuit** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")) the quantum circuit to draw
* **scale** (*float*) scale of image to draw (shrink if \< 1). Only used by the `mpl`, `latex`, and `latex_source` outputs.
* **filename** (*str*) file path to save image to
* **style** (*dict or str*) dictionary of style or file name of style file. This option is only used by the `mpl` output type. If a str is passed in that is the path to a json file which contains that will be open, parsed, and then used just as the input dict. See: [Style Dict Doc](qiskit.visualization.timeline_drawer#style-dict-doc) for more information on the contents.
* **output** (*str*) Select the output method to use for drawing the circuit. Valid choices are `text`, `latex`, `latex_source`, `mpl`. By default the text drawer is used unless a user config file has an alternative backend set as the default. If the output kwarg is set, that backend will always be used over the default in a user config file.
* **interactive** (*bool*) when set 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.
* **reverse\_bits** (*bool*) When set to True reverse the bit order inside registers for the output visualization.
* **plot\_barriers** (*bool*) Enable/disable drawing barriers in the output circuit. Defaults to True.
* **justify** (*string*) 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** (*string*) `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*) Include idle wires (wires with no circuit elements) in output visualization. Default is True.
* **with\_layout** (*bool*) Include layout information, with labels on the physical layout. Default is True.
* **fold** (*int*) Sets pagination. It can be disabled using -1. In text, sets the length of the lines. This 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** (*matplotlib.axes.Axes*) An optional 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. This is only used when the `output` kwarg is set to use the `mpl` backend. It will be silently ignored with all other outputs.
* **initial\_state** (*bool*) Optional. Adds `|0>` in the beginning of the wire. Default: `False`.
* **cregbundle** (*bool*) Optional. If set True bundle classical registers. Default: `True`.
**Returns**
`PIL.Image` or `matplotlib.figure` or `str` or `TextDrawing`:
* **PIL.Image (output=latex)**
an in-memory representation of the image of the circuit diagram.
* **matplotlib.figure.Figure (output=mpl)**
a matplotlib figure object for the circuit diagram.
* **str (output=latex\_source)**
The LaTeX source code for visualizing the circuit diagram.
* **TextDrawing (output=text)**
A drawing that can be printed as ascii art
**Raises**
* [**VisualizationError**](qiskit.visualization.VisualizationError "qiskit.visualization.VisualizationError") when an invalid output method is selected
* **ImportError** when the output methods requires non-installed libraries.
**Style Dict Details**
The style dict kwarg contains numerous options that define the style of the output circuit visualization. The style dict is only used by the `mpl` output. The options available in the style dict are defined below:
**Parameters**
* **name** (*str*) The name of the style. The name can be set to iqx, bw, or default. This overrides the setting in the \~/.qiskit/settings.conf file.
* **textcolor** (*str*) The color code to use for text. Defaults to #000000
* **subtextcolor** (*str*) The color code to use for subtext. Defaults to #000000
* **linecolor** (*str*) The color code to use for lines. Defaults to #000000
* **creglinecolor** (*str*) The color code to use for classical register lines. Defaults to #778899
* **gatetextcolor** (*str*) The color code to use for gate text. Defaults to #000000
* **gatefacecolor** (*str*) The color code to use for gates. Defaults to #ffffff
* **barrierfacecolor** (*str*) The color code to use for barriers. Defaults to #bdbdbd
* **backgroundcolor** (*str*) The color code to use for the background. Defaults to #ffffff
* **fontsize** (*int*) The font size to use for text. Defaults to 13
* **subfontsize** (*int*) The font size to use for subtext. Defaults to 8
* **displaytext** (*dict*)
A dictionary of the text to use for each element type in the output visualization. The default values are:
```python
{
'id': 'id',
'u0': 'U_0',
'u1': 'U_1',
'u2': 'U_2',
'u3': 'U_3',
'x': 'X',
'y': 'Y',
'z': 'Z',
'h': 'H',
's': 'S',
'sdg': 'S^\dagger',
't': 'T',
'tdg': 'T^\dagger',
'rx': 'R_x',
'ry': 'R_y',
'rz': 'R_z',
'reset': '\left|0\right\rangle'
}
```
You must specify all the necessary values if using this. There is no provision for passing an incomplete dict in.
* **displaycolor** (*dict*)
The color codes to use for each circuit element in the form (gate\_color, text\_color). The default values are:
```python
{
'u1': ('#FA74A6', '#000000'),
'u2': ('#FA74A6', '#000000'),
'u3': ('#FA74A6', '#000000'),
'id': ('#05BAB6', '#000000'),
'x': ('#05BAB6', '#000000'),
'y': ('#05BAB6', '#000000'),
'z': ('#05BAB6', '#000000'),
'h': ('#6FA4FF', '#000000'),
'cx': ('#6FA4FF', '#000000'),
'cy': ('#6FA4FF', '#000000'),
'cz': ('#6FA4FF', '#000000'),
'swap': ('#6FA4FF', '#000000'),
's': ('#6FA4FF', '#000000'),
'sdg': ('#6FA4FF', '#000000'),
'dcx': ('#6FA4FF', '#000000'),
'iswap': ('#6FA4FF', '#000000'),
't': ('#BB8BFF', '#000000'),
'tdg': ('#BB8BFF', '#000000'),
'r': ('#BB8BFF', '#000000'),
'rx': ('#BB8BFF', '#000000'),
'ry': ('#BB8BFF', '#000000'),
'rz': ('#BB8BFF', '#000000'),
'rxx': ('#BB8BFF', '#000000'),
'ryy': ('#BB8BFF', '#000000'),
'rzx': ('#BB8BFF', '#000000'),
'reset': ('#000000', #FFFFFF'),
'target': ('#FFFFFF, '#FFFFFF'),
'measure': ('#000000', '#FFFFFF'),
'ccx': ('#BB8BFF', '#000000'),
'cdcx': ('#BB8BFF', '#000000'),
'ccdcx': ('#BB8BFF', '#000000'),
'cswap': ('#BB8BFF', '#000000'),
'ccswap': ('#BB8BFF', '#000000'),
'mcx': ('#BB8BFF', '#000000'),
'mcx_gray': ('#BB8BFF', '#000000),
'u': ('#BB8BFF', '#000000'),
'p': ('#BB8BFF', '#000000'),
'sx': ('#BB8BFF', '#000000'),
'sxdg': ('#BB8BFF', '#000000')
}
```
Colors can also be entered without the text color, such as u1: #FA74A6, in which case the text color will always be gatetextcolor. The displaycolor dict can contain any number of elements from one to the entire dict above.
* **latexdrawerstyle** (*bool*) When set to True enable latex mode which will draw gates like the latex output modes.
* **usepiformat** (*bool*) When set to True use radians for output
* **fold** (*int*) The number of circuit elements to fold the circuit at. Defaults to 20
* **cregbundle** (*bool*) If set True bundle classical registers
* **showindex** (*bool*) If set True draw an index.
* **compress** (*bool*) If set True draw a compressed circuit
* **figwidth** (*int*) The maximum width (in inches) for the output figure.
* **dpi** (*int*) The DPI to use for the output image. Defaults to 150
* **margin** (*list*) A list of margin values to adjust spacing around output image. Takes a list of 4 ints: \[x left, x right, y bottom, y top].
* **creglinestyle** (*str*) The style of line to use for classical registers. Choices are solid, doublet, or any valid matplotlib linestyle kwarg value. Defaults to doublet
**Example**
```python
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from qiskit.tools.visualization import circuit_drawer
q = QuantumRegister(1)
c = ClassicalRegister(1)
qc = QuantumCircuit(q, c)
qc.h(q)
qc.measure(q, c)
circuit_drawer(qc)
```
```python
┌───┐┌─┐
q0_0: ┤ H ├┤M├
└───┘└╥┘
c0: 1/══════╩═
0
```
</Function>