draw()是qiskit中用于画出量子电路的函数。可以使用文本、图片、latex等多种输出参数来选择绘图格式:
text: 可以在控制台打印的ASCII art TextDrawing。
matplotlib:纯Python渲染颜色的图像。
latex:通过latex编译的高质量图像。
latex_source:未编译的原始latex输出。
官方文档地址
https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.html#qiskit.circuit.QuantumCircuit
主体
def draw(
self,
output=None,
scale=None,
filename=None,
style=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,
):
# pylint: disable=cyclic-import
from qiskit.visualization import circuit_drawer
return circuit_drawer(
self,
scale=scale,
filename=filename,
style=style,
output=output,
interactive=interactive,
plot_barriers=plot_barriers,
reverse_bits=reverse_bits,
justify=justify,
vertical_compression=vertical_compression,
idle_wires=idle_wires,
with_layout=with_layout,
fold=fold,
ax=ax,
initial_state=initial_state,
cregbundle=cregbundle,
)
参数
- output (str) – 选择用于绘制电路的输出方法。有效的选择是
text
、mpl
、latex
、latex_source
。例如:qc.draw(output='mpl')
。默认情况下使用text drawer,除非用户配置文件(通常是~/.qiskit/settings.conf
)将替换的backend设置为默认值,如circuit_drawer = latex
。如果设置了输出 kwarg,则将始终使用该backend而不是用户配置文件中的默认设置。 - scale (float) –要绘制的图像的比例(如果 < 1.0 则缩小)。仅用于 mpl、latex 和 latex_source 输出。默认为 1.0。
- filename (str) –保存图像的文件路径。默认为无。
- style (dict or str) – 样式字典或样式 json 文件的文件名。此选项仅用于 mpl 或 latex 输出类型。如果 style 是 str,则将其用作包含 style dict 的 json 文件的路径。该文件将被打开、解析,然后 dict 中的任何样式元素将替换输入 dict 中的默认值。要加载的文件必须以
.json
结尾,但在这里输入名称时可以省略.json
。例如,style='iqx.json'
或style='iqx'
。如果 style 是 dict 并且设置了'name'
键,则该名称将用于加载 json 文件,然后加载 style dict 中的其他项目。例如,style={'name': 'iqx'}
。如果 style 不是 str 并且 name 不是 style dict 中的键,则将使用用户配置文件(通常是~/.qiskit/settings.conf
)中的默认值,例如,circuit_mpl_style = iqx
。如果这些都没有设置,将使用默认样式。样式json文件的搜索路径可以在用户配置中指定,例如,circuit_mpl_style_path =/home/user/styles:/home/user
。有关内容的更多信息,请参阅:DefaultStyle
。 - Interactive (bool) – 当设置为True时,在新窗口中显示电路(对于 mpl,这取决于所使用的用于支持此功能的 matplotlib backend)。请注意,当与 text 或 latex_source 输出类型一起使用时,这个参数没有任何影响,将被静默忽略。默认为False。
- reverse_bits (bool) – 当设置为True时,反转寄存器内部的位顺序以达到输出可视化。默认为False。
- plot_barriers (bool) – 在输出电路中启用/禁用绘图屏障。默认为True。
- justify (string) – 可选项为
left
、right
或none
。如果提供任何其他内容,则默认为左对齐。它指的是在有得选择的情况下,门应该放置在输出电路中的哪个位置。none
会让每个门都被放置在自己的列中。 - vertical_compression (string) –
high
,medium
或low
。它合并由文本输出生成的线条,因此绘图将占用更少的垂直空间。默认为medium
。仅用于text输出,否则将被静默忽略。 - idle_wires (bool) – 在输出可视化中包括空闲线(没有电路元件的线)。默认值为True。
- with_layout (bool) – 包括布局信息,以及物理布局上的标签。默认值为True。
- fold (int) – 设置分页。可以使用 -1 禁用它。在text中,设置行的长度。当绘图不适合控制台时,很有用。如果没有(即,Default),它将尝试使用
shutil.get_terminal_size()
猜测控制台宽度。但是,如果在 jupyter 中运行,则默认行长度设置为 80 个字符。在mpl中,它是折叠前的(视觉)层数。默认值为 25。 - ax (matplotlib.axes.Axes) – 仅由 mpl backend使用。用于可视化输出的可选 Axes 对象。如果没有指定,将创建并使用一个新的 matplotlib Figure。此外,如果指定,则不会返回 Figure,因为它是多余的。
- initial_state (bool) – 可选。在连线的开头添加
|0>
。默认值为False。 - cregbundle (bool) – 可选。如果设置为 True,则捆绑经典寄存器。默认值为True。
返回值
- TextDrawing
(output=‘text’)
可以打印为 ASCII art的绘图 - matplotlib.figure.Figure
(output=‘mpl’)
电路图的 matplotlib 图形对象。 - PIL.Image
(output=‘latex’)
电路图图像的内存表示(an in-memory representation)。 - str
(output=‘latex_source’)
用于可视化电路图的 LaTeX 源代码。
报错
- VisualizationError - 选择无效的输出方法时
- ImportError – 当输出方法需要未安装的库时。
例子
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)
qc.draw(output='mpl', style={'backgroundcolor': '#EEEEEE'})
官方文档地址:
https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.html#qiskit.circuit.QuantumCircuit