Skip to content

Circuit Visualization ​

API reference for circuit drawing, statistics, and summary functions. Provides text, image, and LaTeX output for quantum circuits, as well as gate/layer distribution analysis.

circuit_summary ​

Generates a statistical summary of a quantum circuit, including gate counts and layer counts by category.

Signature ​

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

Parameters ​

ParameterTypeDescription
progQProg or QCircuitThe quantum circuit to analyze
showboolWhether to immediately display the pie chart visualization (default True)

Returns ​

CircuitSummary -- an object holding circuit statistics and visualization methods.

Examples ​

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}")

Output:

ProgInfo(single_gate_num=1, double_gate_num=1, multi_control_gate_num=0, node_num=2, single_gate_layer_num=1, double_gate_layer_num=1, layer_num=2)
Total gates: 2
Total layers: 2

CircuitSummary ​

Container for circuit statistics returned by circuit_summary. Holds a ProgInfo dataclass and provides display methods.

Signature ​

python
class CircuitSummary

Attributes ​

AttributeTypeDescription
infoProgInfoDataclass containing gate and layer statistics

ProgInfo fields ​

FieldTypeDescription
single_gate_numintNumber of single-qubit gates
double_gate_numintNumber of two-qubit gates
multi_control_gate_numintNumber of multi-control gates
node_numintTotal number of gate nodes
single_gate_layer_numintNumber of single-gate layers
double_gate_layer_numintNumber of double-gate layers
layer_numintTotal number of layers

Methods ​

show() ​

Displays a pie chart with gate and layer distribution.

python
summary.show()

__str__() ​

Returns a string representation of the ProgInfo dataclass, showing gate and layer counts by category.

python
print(summary)

show_prog_info_count ​

Displays pie charts showing the distribution of gate nodes and layers in a quantum circuit.

Signature ​

python
show_prog_info_count(prog) -> None

Parameters ​

ParameterTypeDescription
progQProg or QCircuitThe quantum circuit to analyze

Description ​

Renders two pie charts using matplotlib:

  • Top chart -- node distribution: Single Gate Node, Double Gate Node, Multi Control Gate Node, Other Nodes
  • Bottom chart -- layer distribution: Single Gate Layer, Double Gate Layer, Other Layers

Examples ​

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)

Output:

Displays two pie charts: the top chart shows node distribution (Single Gate Node, Double Gate Node, Multi Control Gate Node, Other Nodes), and the bottom chart shows layer distribution (Single Gate Layer, Double Gate Layer, Other Layers).

draw (QProg / QCircuit method) ​

Draws a quantum circuit in text, image, or LaTeX format. Injected onto QProg and QCircuit at import time.

Signature ​

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

Parameters ​

ParameterTypeDefaultDescription
outputstr'text'Output format: 'text' (ASCII), 'pic' (matplotlib image), or 'latex'
filenamestr or NoneNoneOutput file path. For 'pic' defaults to QCircuit_pic.jpg. For 'latex' defaults to QCircuit_latex.tex. For 'text', if specified, saves text to file
scalefloat0.7Image scale factor (only for 'pic' output)
foldint30Maximum width of image in gate units (only for 'pic' output)
with_logoboolFalseWhether to include a logo (only for 'latex' output)
with_gate_paramsboolFalseWhether to display gate parameters
line_lengthint100Line length for 'text' output
NodeIter_firstiterator or NoneNoneCircuit start position for partial drawing
NodeIter_seconditerator or NoneNoneCircuit end position for partial drawing
console_encode_typestr'utf8'Console encoding type for 'text' output. Supported values: 'utf8', 'gbk'

Returns ​

  • 'text' and 'latex' -- returns str
  • 'pic' -- returns None (image saved to file)

Examples ​

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 output
text = prog.draw()
print(text)

# Save to image file
prog.draw('pic', filename='my_circuit.png')

# LaTeX source
latex = prog.draw('latex')
print(latex)

# Show gate parameters in text output
prog.draw('text', with_gate_params=True)

Text output (may vary slightly depending on console encoding):


          ┌─┐        
q_0:  |0>─┤H├ ───*── 
          └─┘ ┌──┬──┐ 
q_1:  |0>──── ┤CNOT├ 
              └──┴──┘ 
 c :   / ═══════════

LaTeX output:

latex
\documentclass[border=2px]{standalone}
\usepackage[braket, qm]{qcircuit}
\usepackage{graphicx}
\begin{document}

\scalebox{1.0}{
\Qcircuit @C = 1.0em @R = 0.5em @!R { \\
\nghost{} & \lstick{\ket{q_0}} & \gate{\mathrm{H}} & \ctrl{1} & \rstick{}\qw & \nghost{} \\
\nghost{} & \lstick{\ket{q_1}} & \qw & \targ\qw & \rstick{}\qw & \nghost{} \\
}}
\end{document}

See Also ​

Released under the MIT License.