216 lines
11 KiB
Plaintext
216 lines
11 KiB
Plaintext
---
|
||
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>
|
||
|