Lewati ke konten utama

Visualisasi hasil

Versi paket

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

qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1

Plot histogram​

Fungsi plot_histogram memvisualisasikan hasil sampling quantum circuit pada QPU.

Menggunakan output dari fungsi

Fungsi ini mengembalikan objek matplotlib.Figure. Ketika baris terakhir dari code cell menghasilkan objek-objek ini, Jupyter notebook akan menampilkannya di bawah cell. Jika kamu memanggil fungsi-fungsi ini di lingkungan lain atau dalam skrip, kamu perlu menampilkan atau menyimpan output secara eksplisit.

Dua opsinya adalah:

  • Panggil .show() pada objek yang dikembalikan untuk membuka gambar di jendela baru (dengan asumsi backend matplotlib yang dikonfigurasi bersifat interaktif).
  • Panggil .savefig("out.png") untuk menyimpan gambar ke out.png di direktori kerja saat ini. Metode savefig() menerima path sehingga kamu bisa mengatur lokasi dan nama file tempat menyimpan output. Contohnya, plot_state_city(psi).savefig("out.png").

Sebagai contoh, buat Bell state dua-Qubit:

# Added by doQumentation β€” required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit.transpiler import generate_preset_pass_manager

from qiskit.circuit import QuantumCircuit
from qiskit.visualization import plot_histogram

service = QiskitRuntimeService()

backend = service.least_busy(simulator=False, operational=True)
# Quantum circuit to make a Bell state
bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(bell)

# execute the quantum circuit
sampler = Sampler(backend)
job = sampler.run([isa_circuit])
result = job.result()

print(result)
PrimitiveResult([SamplerPubResult(data=DataBin(meas=BitArray(<shape=(), num_shots=4096, num_bits=2>)), metadata={'circuit_metadata': {}})], metadata={'execution': {'execution_spans': ExecutionSpans([DoubleSliceSpan(<start='2026-01-15 07:11:30', stop='2026-01-15 07:11:32', size=4096>)])}, 'version': 2})
plot_histogram(result[0].data.meas.get_counts())

Output of the previous code cell

Opsi saat plotting histogram​

Gunakan opsi berikut untuk plot_histogram agar bisa menyesuaikan grafik output.

  • legend: Memberikan label untuk eksekusi. Menerima daftar string yang digunakan untuk melabeli hasil setiap eksekusi. Ini paling berguna saat memplot beberapa hasil eksekusi dalam satu histogram
  • sort: Mengatur urutan bar dalam histogram. Bisa diset ke urutan naik dengan asc atau urutan turun dengan desc
  • number_to_keep: Menerima integer untuk jumlah term yang ditampilkan. Sisanya dikelompokkan dalam satu bar bernama "rest"
  • color: Mengatur warna bar; menerima string atau daftar string untuk warna yang digunakan pada bar setiap eksekusi
  • bar_labels: Mengatur apakah label dicetak di atas bar
  • figsize: Menerima tuple ukuran dalam inci untuk membuat gambar output
# Execute two-qubit Bell state again
sampler.options.default_shots = 1000

job = sampler.run([isa_circuit])
second_result = job.result()

# Plot results with custom options
plot_histogram(
[
result[0].data.meas.get_counts(),
second_result[0].data.meas.get_counts(),
],
legend=["first", "second"],
sort="desc",
figsize=(15, 12),
color=["orange", "black"],
bar_labels=False,
)

Output of the previous code cell

Plotting hasil Estimator​

Qiskit tidak memiliki fungsi bawaan untuk memplot hasil Estimator, tapi kamu bisa menggunakan bar plot dari Matplotlib untuk visualisasi cepat.

Sebagai demonstrasi, cell berikut mengestimasi nilai ekspektasi dari tujuh observable berbeda pada sebuah quantum state.

import numpy as np
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.transpiler import generate_preset_pass_manager
from matplotlib import pyplot as plt

# Simple estimation experiment to create results
qc = QuantumCircuit(2)
qc.h(0)
qc.crx(1.5, 0, 1)

observables_labels = ["ZZ", "XX", "YZ", "ZY", "XY", "XZ", "ZX"]
observables = [SparsePauliOp(label) for label in observables_labels]

service = QiskitRuntimeService()

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
isa_observables = [
operator.apply_layout(isa_circuit.layout) for operator in observables
]

# Reshape observable array for broadcasting
reshaped_ops = np.fromiter(isa_observables, dtype=object)
reshaped_ops = reshaped_ops.reshape((7, 1))

estimator = Estimator(backend)
job = estimator.run([(isa_circuit, reshaped_ops)])
result = job.result()[0]
exp_val = job.result()[0].data.evs
print(result)

# Since the result array is structured as a 2D array where each element is a
# list containing a single value, you need to flatten the array.

# Plot using Matplotlib
plt.bar(observables_labels, exp_val.flatten())
PubResult(data=DataBin(evs=np.ndarray(<shape=(7, 1), dtype=float64>), stds=np.ndarray(<shape=(7, 1), dtype=float64>), ensemble_standard_error=np.ndarray(<shape=(7, 1), dtype=float64>), shape=(7, 1)), metadata={'shots': 4096, 'target_precision': 0.015625, 'circuit_metadata': {}, 'resilience': {}, 'num_randomizations': 32})
<BarContainer object of 7 artists>

Output of the previous code cell

Cell berikut menggunakan standard error yang diestimasi dari setiap hasil dan menambahkannya sebagai error bar. Lihat dokumentasi bar plot untuk deskripsi lengkap plot tersebut.

standard_error = job.result()[0].data.stds

_, ax = plt.subplots()
ax.bar(
observables_labels,
exp_val.flatten(),
yerr=standard_error.flatten(),
capsize=2,
)
ax.set_title("Expectation values (with standard errors)")
Text(0.5, 1.0, 'Expectation values (with standard errors)')

Output of the previous code cell

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