Skip to content

电路可视化

电路绘制、统计和汇总函数的 API 参考。提供量子电路的文本、图像和 LaTeX 输出,以及门/层分布分析。

circuit_summary

生成量子电路的统计摘要,包括按类别分类的门计数和层计数。

签名

python
circuit_summary(prog, show: bool = True) -> CircuitSummary

参数

参数类型说明
progQProgQCircuit要分析的量子电路
showbool是否立即显示饼图可视化(默认 True

返回值

CircuitSummary -- 包含电路统计信息和可视化方法的对象。

示例

python
from pyqpanda3 import core as pq
from pyqpanda3.visualization import circuit_summary

q = pq.Qubit(0)
prog = pq.QProg()
prog << pq.H(q) << pq.CNOT(q, pq.Qubit(1))

summary = circuit_summary(prog, show=False)
print(summary)
print(f"Total gates: {summary.info.node_num}")
print(f"Total layers: {summary.info.layer_num}")

CircuitSummary

circuit_summary 返回的电路统计信息容器。包含一个 ProgInfo 数据类并提供显示方法。

签名

python
class CircuitSummary

属性

属性类型说明
infoProgInfo包含门和层统计数据的数据类

ProgInfo 字段

字段类型说明
single_gate_numint单量子比特门的数量
double_gate_numint双量子比特门的数量
multi_control_gate_numint多控制门的数量
node_numint门节点的总数
single_gate_layer_numint单门层的数量
double_gate_layer_numint双门层的数量
layer_numint层的总数

方法

show()

显示门和层分布的饼图。

python
summary.show()

__str__()

返回包含详细电路信息的格式化字符串,包括量子比特数量、门映射、参数化门数量和参数数量。

python
print(summary)

show_prog_info_count

显示量子电路中门节点和层分布的饼图。

签名

python
show_prog_info_count(prog) -> None

参数

参数类型说明
progQProgQCircuit要分析的量子电路

说明

使用 matplotlib 渲染两个饼图:

  • 上方图表 -- 节点分布:单门节点、双门节点、多控制门节点、其他节点
  • 下方图表 -- 层分布:单门层、双门层、其他层

示例

python
from pyqpanda3 import core as pq
from pyqpanda3.visualization import show_prog_info_count

q = pq.Qubit(0)
prog = pq.QProg()
prog << pq.H(q) << pq.CNOT(q, pq.Qubit(1))

show_prog_info_count(prog)

draw(QProg / QCircuit 方法)

以文本、图像或 LaTeX 格式绘制量子电路。在导入时注入到 QProgQCircuit 上。

签名

python
prog.draw(output='text', filename=None, scale=0.7, fold=30,
          with_logo=False, with_gate_params=False, line_length=100,
          NodeIter_first=None, NodeIter_second=None,
          console_encode_type='utf8') -> str | None

参数

参数类型默认值说明
outputstr'text'输出格式:'text'(ASCII)、'pic'(matplotlib 图像)或 'latex'
filenamestrNoneNone输出文件路径。对于 'pic' 默认为 QCircuit_pic.jpg。对于 'latex' 默认为 QCircuit_latex.tex。对于 'text',如果指定则将文本保存到文件
scalefloat0.7图像缩放因子(仅用于 'pic' 输出)
foldint30以门为单位的图像最大宽度(仅用于 'pic' 输出)
with_logoboolFalse是否包含 logo(仅用于 'latex' 输出)
with_gate_paramsboolFalse是否显示门参数
line_lengthint100'text' 输出的行长度
NodeIter_first迭代器或 NoneNone部分绘制的电路起始位置
NodeIter_second迭代器或 NoneNone部分绘制的电路结束位置
console_encode_typestr'utf8''text' 输出的控制台编码类型。支持的值:'utf8''gbk'

返回值

  • 'text''latex' -- 返回 str
  • 'pic' -- 返回 None(图像保存到文件)

示例

python
from pyqpanda3 import core as pq

q = pq.Qubit(0)
prog = pq.QProg()
prog << pq.H(q) << pq.CNOT(q, pq.Qubit(1))

# ASCII 文本输出
text = prog.draw()
print(text)

# 保存为图像文件
prog.draw('pic', filename='my_circuit.png')

# LaTeX 源码
latex = prog.draw('latex')
print(latex)

# 在文本输出中显示门参数
prog.draw('text', with_gate_params=True)

# 使用迭代器进行部分绘制
prog.draw('text', NodeIter_first=prog.begin(), NodeIter_second=prog.end())

另见

Released under the MIT License.