Langkau ke kandungan utama

Visualisasikan litar

Versi pakej

Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.

qiskit[all]~=2.3.0

Selalunya berguna untuk melihat litar yang sedang anda cipta. Gunakan pilihan berikut untuk memaparkan litar Qiskit.

# Added by doQumentation β€” required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit

Lukis litar kuantum​

Kelas QuantumCircuit menyokong lukisan litar melalui kaedah draw(), atau dengan mencetak objek litar. Secara lalai, kedua-duanya menghasilkan versi seni ASCII rajah litar.

Perhatikan bahawa print mengembalikan None tetapi mempunyai kesan sampingan iaitu mencetak rajah, manakala QuantumCircuit.draw mengembalikan rajah tanpa kesan sampingan. Oleh kerana Jupyter notebook memaparkan output baris terakhir setiap sel, kedua-duanya kelihatan mempunyai kesan yang sama.

# Build a quantum circuit
circuit = QuantumCircuit(3, 3)
circuit.x(1)
circuit.h(range(3))
circuit.cx(0, 1)
circuit.measure(range(3), range(3));
print(circuit)
β”Œβ”€β”€β”€β”          β”Œβ”€β”
q_0: ─ H β”œβ”€β”€β”€β”€β”€β”€β”€β– β”€β”€β”€Mβ”œβ”€β”€β”€
β”œβ”€β”€β”€β”€β”Œβ”€β”€β”€β”β”Œβ”€β”΄β”€β”β””β•₯β”˜β”Œβ”€β”
q_1: ─ X β”œβ”€ H β”œβ”€ X β”œβ”€β•«β”€β”€Mβ”œ
β”œβ”€β”€β”€β”€β””β”¬β”€β”¬β”˜β””β”€β”€β”€β”˜ β•‘ β””β•₯β”˜
q_2: ─ H β”œβ”€β”€Mβ”œβ”€β”€β”€β”€β”€β”€β”€β•«β”€β”€β•«β”€
β””β”€β”€β”€β”˜ β””β•₯β”˜ β•‘ β•‘
c: 3/═══════╩════════╩══╩═
2 0 1
circuit.draw()
β”Œβ”€β”€β”€β”          β”Œβ”€β”
q_0: ─ H β”œβ”€β”€β”€β”€β”€β”€β”€β– β”€β”€β”€Mβ”œβ”€β”€β”€
β”œβ”€β”€β”€β”€β”Œβ”€β”€β”€β”β”Œβ”€β”΄β”€β”β””β•₯β”˜β”Œβ”€β”
q_1: ─ X β”œβ”€ H β”œβ”€ X β”œβ”€β•«β”€β”€Mβ”œ
β”œβ”€β”€β”€β”€β””β”¬β”€β”¬β”˜β””β”€β”€β”€β”˜ β•‘ β””β•₯β”˜
q_2: ─ H β”œβ”€β”€Mβ”œβ”€β”€β”€β”€β”€β”€β”€β•«β”€β”€β•«β”€
β””β”€β”€β”€β”˜ β””β•₯β”˜ β•‘ β•‘
c: 3/═══════╩════════╩══╩═
2 0 1

Pemapar alternatif​

Output teks berguna untuk melihat output dengan cepat semasa membangunkan litar, tetapi ia tidak memberikan fleksibiliti yang terbaik. Terdapat dua pemapar output alternatif untuk litar kuantum. Satu menggunakan Matplotlib dan satu lagi menggunakan LaTeX. Pemapar LaTeX memerlukan pakej qcircuit. Pilih pemapar ini dengan menetapkan argumen "output" kepada rentetan mpl dan latex.

petua

Pengguna OSX boleh mendapatkan pakej LaTeX yang diperlukan melalui pakej mactex.

# Matplotlib drawing
circuit.draw(output="mpl")

Output of the previous code cell

# Latex drawing
circuit.draw(output="latex")

Output of the previous code cell

Simpan output​

Melukis litar berskala besar secara sebaris dalam Jupyter notebook boleh menjadi lambat atau sukar dibaca. Anda boleh menyimpan rajah terus ke fail, kemudian buka dalam penampil imej dan zum masuk mengikut keperluan.

# Save as an image using the Matplotlib drawer
circuit.draw(output="mpl", filename="circuit-mpl.jpeg")

Output of the previous code cell

# Or save a LaTeX rendering
circuit.draw(output="latex", filename="circuit-latex.pdf")

Output of the previous code cell

Kawal lukisan litar​

Secara lalai, kaedah draw() mengembalikan imej yang dipaparkan sebagai objek dan tidak menghasilkan output. Kelas yang dikembalikan bergantung pada output yang ditentukan: 'text' (lalai) mengembalikan objek TextDrawer, 'mpl' mengembalikan objek matplotlib.Figure, dan latex mengembalikan objek PIL.Image. Jupyter notebook memahami jenis pulangan ini dan memaparkannya dengan betul, tetapi apabila dijalankan di luar Jupyter, imej tidak akan dipaparkan secara automatik.

Kaedah draw() mempunyai argumen pilihan untuk memaparkan atau menyimpan output. Apabila ditentukan, kwarg filename mengambil laluan untuk menyimpan output yang dipaparkan. Sebagai alternatif, jika anda menggunakan output mpl atau latex, anda boleh menggunakan kwarg interactive untuk membuka imej dalam tetingkap baharu (ini tidak selalunya berfungsi dari dalam notebook).

Sesuaikan output​

Bergantung pada output, terdapat juga pilihan untuk menyesuaikan rajah litar.

Nyahdayakan halangan plot dan terbalikkan susunan bit​

Dua pilihan pertama dikongsi antara ketiga-tiga backend. Ia membolehkan anda mengkonfigurasi susunan bit dan sama ada anda ingin melukis halangan atau tidak. Ini boleh ditetapkan oleh kwarg reverse_bits dan kwarg plot_barriers, masing-masing. Contoh berikut berfungsi dengan mana-mana pemapar output; mpl digunakan di sini untuk keringkasan.

from qiskit import QuantumRegister, ClassicalRegister

# Draw a new circuit with barriers and more registers
q_a = QuantumRegister(3, name="a")
q_b = QuantumRegister(5, name="b")
c_a = ClassicalRegister(3)
c_b = ClassicalRegister(5)

circuit = QuantumCircuit(q_a, q_b, c_a, c_b)
circuit.x(q_a[1])
circuit.x(q_b[1])
circuit.x(q_b[2])
circuit.x(q_b[4])
circuit.barrier()
circuit.h(q_a)
circuit.barrier(q_a)
circuit.h(q_b)
circuit.cswap(q_b[0], q_b[1], q_b[2])
circuit.cswap(q_b[2], q_b[3], q_b[4])
circuit.cswap(q_b[3], q_b[4], q_b[0])
circuit.barrier(q_b)
circuit.measure(q_a, c_a)
circuit.measure(q_b, c_b);
# Draw the circuit
circuit.draw(output="mpl")

Output of the previous code cell

# Draw the circuit with reversed bit order
circuit.draw(output="mpl", reverse_bits=True)

Output of the previous code cell

# Draw the circuit without barriers
circuit.draw(output="mpl", plot_barriers=False)

Output of the previous code cell

Penyesuaian khusus pemapar​

Beberapa pilihan penyesuaian yang tersedia adalah khusus untuk sesebuah pemapar.

Argumen fold menetapkan lebar maksimum untuk output. Dalam pemapar text, ini menetapkan panjang baris rajah sebelum ia dibungkus ke baris seterusnya. Apabila menggunakan pemapar mpl, ini adalah bilangan lapisan (visual) sebelum dilipat ke baris seterusnya.

Pemapar mpl mempunyai kwarg style, yang mengubah warna dan garis luar. Lihat dokumentasi API untuk butiran lanjut.

Pilihan scale menskalakan output pemapar mpl dan latex.

circuit = QuantumCircuit(1)
for _ in range(10):
circuit.h(0)
# limit line length to 40 characters
circuit.draw(output="text", fold=40)
β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”Β»
q: ─ H β”œβ”€ H β”œβ”€ H β”œβ”€ H β”œβ”€ H β”œβ”€ H β”œβ”€ H β”œΒ»
β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜Β»
Β« β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”
Β«q: ─ H β”œβ”€ H β”œβ”€ H β”œ
Β« β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜
# Change the background color in mpl

style = {"backgroundcolor": "lightgreen"}
circuit.draw(output="mpl", style=style)

Output of the previous code cell

# Scale the mpl output to 1/2 the normal size
circuit.draw(output="mpl", scale=0.5)

Output of the previous code cell

Fungsi lukisan litar bersendirian​

Jika anda mempunyai aplikasi di mana anda lebih suka melukis litar dengan fungsi bebas berbanding sebagai kaedah objek litar, anda boleh menggunakan fungsi circuit_drawer() secara langsung, yang merupakan sebahagian daripada antara muka awam stabil dari qiskit.visualization. Fungsi ini berkelakuan sama seperti kaedah circuit.draw(), kecuali ia mengambil objek litar sebagai argumen yang diperlukan.

from qiskit.visualization import circuit_drawer

circuit_drawer(circuit, output="mpl", plot_barriers=False)

Output of the previous code cell

Langkah seterusnya​

Cadangan
Source: IBM Quantum docs β€” updated 16 Mac 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of 11 Mac 2026