Langkau ke kandungan utama

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.

Menggunakan output daripada fungsi

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 ke out.png dalam direktori kerja semasa. Kaedah savefig() 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())

Output of the previous code cell

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 sama
  • sort: Melaraskan susunan bar dalam histogram. Ia boleh ditetapkan kepada susunan menaik dengan asc atau susunan menurun dengan desc
  • number_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 pelaksanaan
  • bar_labels: Melaraskan sama ada label dicetak di atas bar
  • figsize: 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,
)

Output of the previous code cell

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>

Output of the previous code cell

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)')

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 Mac 2026