Visualisasikan keputusan
Versi pakej
Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.
qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1
Plot histogramβ
Fungsi plot_histogram memvisualisasikan keputusan pensampelan litar kuantum pada QPU.
Fungsi ini mengembalikan objek matplotlib.Figure. Apabila baris terakhir sel kod menghasilkan objek ini, Jupyter notebook memaparkannya di bawah sel. Jika anda memanggil fungsi-fungsi ini dalam persekitaran lain atau dalam skrip, anda perlu memaparkan atau menyimpan output secara eksplisit.
Dua pilihan adalah:
- Panggil
.show()pada objek yang dikembalikan untuk membuka imej dalam tetingkap baharu (dengan syarat backend matplotlib yang dikonfigurasikan adalah interaktif). - Panggil
.savefig("out.png")untuk menyimpan rajah keout.pngdalam direktori kerja semasa. Kaedahsavefig()mengambil laluan supaya anda boleh mengubah lokasi dan nama fail output. Contohnya,plot_state_city(psi).savefig("out.png").
Sebagai contoh, buat keadaan Bell 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())
Pilihan semasa melukis histogramβ
Gunakan pilihan berikut untuk plot_histogram bagi melaraskan graf output.
legend: Memberikan label untuk pelaksanaan. Ia mengambil senarai rentetan yang digunakan untuk melabel keputusan setiap pelaksanaan. Ini paling berguna apabila memplot berbilang keputusan pelaksanaan dalam histogram yang samasort: Melaraskan susunan bar dalam histogram. Ia boleh ditetapkan kepada susunan menaik denganascatau susunan menurun dengandescnumber_to_keep: Mengambil integer untuk bilangan sebutan yang hendak dipaparkan. Selebihnya dikumpulkan bersama dalam satu bar yang dipanggil "rest"color: Melaraskan warna bar; mengambil rentetan atau senarai rentetan untuk warna yang hendak digunakan bagi bar setiap pelaksanaanbar_labels: Melaraskan sama ada label dicetak di atas barfigsize: Mengambil tuple saiz dalam inci untuk rajah 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,
)
Plot keputusan Estimatorβ
Qiskit tidak mempunyai fungsi terbina untuk memplod keputusan Estimator, tetapi anda boleh menggunakan plot bar Matplotlib untuk visualisasi pantas.
Untuk demonstrasi, sel berikut menganggar nilai jangkaan tujuh pemerhati berbeza pada keadaan kuantum.
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>
Sel berikut menggunakan ralat piawai yang dianggarkan bagi setiap keputusan dan menambahkannya sebagai bar ralat. Lihat dokumentasi plot bar untuk huraian penuh tentang 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)')