視覚化
qiskit.visualization
可視化モジュールには、測定結果のカウント、量子状態、回路、デバイスなどを可視化する機能が含まれている。
可視化機能を使用するには、開発環境に可視化オプションをインストールする必要があります:
pip install 'qiskit[visualization]'一般的に、Qiskitの可視化ツールは、任意のユーザー入力に対してシステムプログラムを呼び出す可能性があるため、信頼できる入力に対してのみ使用すべきです。 Qiskit に搭載されている可視化ツールは、主にローカルでの可視化を目的としており、意図的にいくつかの箇所でユーザーコードの挿入を可能にしています。例えば、Graphviz のノードラベル(レジスタ名など DAGCircuit.draw())や、 LaTeX の命令ラベル(Qiskit-RISC-V Instruction.label の latex RISC-V モード内 QuantumCircuit.draw())などが挙げられます。
一般的なキーワード引数
このモジュールの可視化関数によって作成される図形の多くは Matplotlib で作成され、以下の共通引数のサブセットを受け入れます。 正確な詳細については、各書類を参照のこと。
title(str): プロットタイトルに使用するテキスト文字列。legend(list): データのラベルに使用する文字列のリスト。figsize(tuple): フィギュアのサイズ(インチ).color(list): プロットする文字列のリスト。ax( matplotlib.axes.Axes ):可視化出力に使用するAxesオブジェクト(オプション)。 指定がない場合は、新しい matplotlib.figure.Figure が作成され使用される。 また、冗長であるため、指定された場合、返されるFigure。filename(str): 画像を保存するファイルパス。
以下の例は、これらの引数の一般的な使い方を示している:
from qiskit.visualization import plot_histogram
counts1 = {'00': 499, '11': 501}
counts2 = {'00': 511, '11': 489}
data = [counts1, counts2]
plot_histogram(data)
kwargsに渡すことで、 legend、 title、 figsize 、 color を指定できる。
from qiskit.visualization import plot_histogram
counts1 = {'00': 499, '11': 501}
counts2 = {'00': 511, '11': 489}
data = [counts1, counts2]
legend = ['First execution', 'Second execution']
title = 'New histogram'
figsize = (10,10)
color=['crimson','midnightblue']
plot_histogram(data, legend=legend, title=title, figsize=figsize, color=color)
図をファイルに保存するには、 filename kwarg にファイル名を渡すか、または matplotlib.figure.Figure.savefig メソッドを使うこともできます。
plot_histogram(data, filename='new_hist.png')
hist = plot_histogram(data)
hist.savefig('new_hist.png')カウントの可視化
このセクションには、測定結果のカウントを視覚化する関数が含まれています。
plot_histogram(data[, figsize, color,...] ) | 入力カウントデータのヒストグラムをプロットする。 |
使用例
以下は plot_histogram() を使用して、測定結果のカウントを視覚化する例です:
from qiskit.visualization import plot_histogram
counts = {"00": 501, "11": 499}
plot_histogram(counts)
データは、ビット列をキー、カウントを値とするディクショナリにすることができます。 Counts オブジェクトから取得した get_counts().
分布の可視化
このセクションでは、サンプリングされた分布を可視化する関数を紹介します。
plot_distribution(data[, figsize, color,...] ) | 入力されたサンプリングデータから分布をプロットする。 |
状態の可視化
このセクションでは、量子状態を可視化する関数を紹介します。
plot_bloch_vector(bloch[, title, ax,...] ) | ブロッホ球をプロットする。 |
plot_bloch_multivector(州[, 肩書き,...] ) | それぞれの量子ビットのブロッホ球をプロットする。 |
plot_state_city(状態[, タイトル, イチジクサイズ,...] ) | 量子状態の街並みをプロットする。 |
plot_state_hinton(状態[, タイトル, イチジクサイズ,...] ) | 量子状態の密度行列のヒントン図を描く。 |
plot_state_paulivec(状態[, タイトル, イチジクサイズ,...] ) | 量子状態のパウリベクトル表現を棒グラフとしてプロットする。 |
plot_state_qsphere(状態[、figsize、ax、...] ) | 量子状態のqsphere表現をプロットする。 |
使用例
量子状態を可視化するために plot_state_city() を使って量子状態を可視化した例である:
from qiskit.visualization import plot_state_city
state = [[ 0.75 , 0.433j],
[-0.433j, 0.25 ]]
plot_state_city(state)
状態は、配列のようなリストのリスト、 numpy.array、またはより一般的には Statevector または DensityMatrix オブジェクトから得られる QuantumCircuit:
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import plot_state_city
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
# plot using a Statevector
state = Statevector(qc)
plot_state_city(state)
from qiskit import QuantumCircuit
from qiskit.quantum_info import DensityMatrix
from qiskit.visualization import plot_state_city
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
# plot using a DensityMatrix
state = DensityMatrix(qc)
plot_state_city(state)
各可視化関数のコード例は、各関数の API ページにあります。
デバイス可視化
plot_gate_map(バックエンド[、フィギュアサイズ、...] ) | デバイスのゲートマップをプロットする。 |
plot_error_map(バックエンド[、フィギュアサイズ、...] ) | 指定したバックエンドのエラーマップをプロットします。 |
plot_circuit_layout(回路、バックエンド[、...] ) | 指定されたターゲットバックエンド用にトランスパイルされた回路のレイアウトをプロットする。 |
plot_coupling_map(num_qubits,...[,...] ) | 平面上に埋め込まれた)量子ビットの任意の結合マップをプロットします。 |
回路の可視化
circuit_drawer(回路[、スケール、ファイル名、...] ) | 量子回路を描く。 |
DAG可視化
dag_drawer(ダグ[, スケール, ファイル名, スタイル] ) | 量子回路の演算依存関係を表す有向無サイクルグラフ(dag)をプロットする。 |
パスマネージャーの可視化
pass_manager_drawer(pass_manager[,...] ) | パスマネージャーを描く。 |
タイムライン可視化
timeline_drawer(プログラム[, スタイル,...] ) | スケジュールされた回路プログラムの可視化データを生成します。 |
単一量子ビット状態遷移の可視化
visualize_transition(回路[、トレース、...] ) | 量子ゲートを適用することで、単一量子ビットの状態遷移を示すアニメーションを作成します。 |
配列/行列の可視化
array_to_latex(配列[、精度、接頭辞、...] ) | 複雑なnumpy配列(1次元または2次元)のLatex表現 |
例外
VisualizationError
exception qiskit.visualization.VisualizationError(*message)
ベース: QiskitError
ビジュアライゼーション特有のエラーについて。
エラーメッセージを設定する。