Lewati ke konten utama

Visualisasi circuit

Versi paket

Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami sarankan menggunakan versi ini atau yang lebih baru.

qiskit[all]~=2.3.0

Seringkali berguna untuk melihat circuit yang sedang kamu buat. Gunakan opsi berikut untuk menampilkan circuit Qiskit.

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

Gambar quantum circuit​

Kelas QuantumCircuit mendukung penggambaran circuit melalui metode draw(), atau dengan mencetak objek circuit. Secara default, keduanya menghasilkan versi ASCII art dari diagram circuit.

Perlu diperhatikan bahwa print mengembalikan None tetapi memiliki efek samping mencetak diagram, sedangkan QuantumCircuit.draw mengembalikan diagram tanpa efek samping. Karena notebook Jupyter menampilkan output dari baris terakhir setiap sel, keduanya tampak memiliki efek 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

Renderer alternatif​

Output teks berguna untuk melihat output dengan cepat saat mengembangkan circuit, tetapi tidak memberikan fleksibilitas terbaik. Ada dua renderer output alternatif untuk quantum circuit. Satu menggunakan Matplotlib dan yang lainnya menggunakan LaTeX. Renderer LaTeX memerlukan paket qcircuit. Pilih renderer ini dengan mengatur argumen "output" ke string mpl dan latex.

tips

Pengguna OSX bisa mendapatkan paket LaTeX yang diperlukan melalui paket mactex.

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

Output dari sel kode sebelumnya

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

Output dari sel kode sebelumnya

Simpan output​

Menggambar circuit berskala besar secara langsung di notebook Jupyter bisa lambat atau tidak terbaca. Kamu bisa menyimpan diagram langsung ke file, lalu membukanya di penampil gambar dan memperbesar sesuai kebutuhan.

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

Output dari sel kode sebelumnya

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

Output dari sel kode sebelumnya

Kontrol penggambaran circuit​

Secara default, metode draw() mengembalikan gambar yang dirender sebagai objek dan tidak menghasilkan output apa pun. Kelas yang dikembalikan bergantung pada output yang ditentukan: 'text' (default) mengembalikan objek TextDrawer, 'mpl' mengembalikan objek matplotlib.Figure, dan latex mengembalikan objek PIL.Image. Notebook Jupyter memahami tipe return ini dan merendernya dengan benar, tetapi saat dijalankan di luar Jupyter, gambar tidak akan ditampilkan secara otomatis.

Metode draw() memiliki argumen opsional untuk menampilkan atau menyimpan output. Bila ditentukan, kwarg filename mengambil path untuk menyimpan output yang dirender. Atau, jika kamu menggunakan output mpl atau latex, kamu bisa menggunakan kwarg interactive untuk membuka gambar di jendela baru (ini tidak selalu berfungsi dari dalam notebook).

Sesuaikan output​

Tergantung pada outputnya, ada juga opsi untuk menyesuaikan diagram circuit.

Nonaktifkan plot barriers dan balik urutan bit​

Dua opsi pertama dibagikan di antara ketiga backend. Keduanya memungkinkan kamu mengonfigurasi urutan bit dan apakah kamu menggambar barriers atau tidak. Ini bisa diatur melalui kwarg reverse_bits dan kwarg plot_barriers. Contoh berikut berfungsi dengan renderer output apa pun; mpl digunakan di sini untuk singkatnya.

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 dari sel kode sebelumnya

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

Output dari sel kode sebelumnya

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

Output dari sel kode sebelumnya

Kustomisasi khusus renderer​

Beberapa opsi kustomisasi yang tersedia bersifat khusus untuk suatu renderer.

Argumen fold menetapkan lebar maksimum untuk output. Pada renderer text, ini menetapkan panjang baris diagram sebelum dibungkus ke baris berikutnya. Saat menggunakan renderer 'mpl', ini adalah jumlah layer (visual) sebelum dilipat ke baris berikutnya.

Renderer mpl memiliki kwarg style, yang mengubah warna dan garis tepi. Lihat dokumentasi API untuk detail lebih lanjut.

Opsi scale menskalakan output dari renderer 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 dari sel kode sebelumnya

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

Output dari sel kode sebelumnya

Fungsi penggambaran circuit mandiri​

Jika kamu memiliki aplikasi yang lebih suka menggambar circuit dengan fungsi mandiri daripada sebagai metode dari objek circuit, kamu bisa langsung menggunakan fungsi circuit_drawer(), yang merupakan bagian dari antarmuka stabil publik dari qiskit.visualization. Fungsi ini berperilaku identik dengan metode circuit.draw(), kecuali bahwa ia menerima objek circuit sebagai argumen wajib.

from qiskit.visualization import circuit_drawer

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

Output dari sel kode sebelumnya

Langkah berikutnya​

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