qiskit.visualization.timeline_drawer
qiskit.visualization.timeline_drawer(program, style=None, time_range=None, disable_bits=None, show_clbits=None, idle_wires=None, plot_barriers=None, show_delays=None, show_labels=True, plotter='mpl', axis=None, filename=None, target=None, *, show_idle=None, show_barriers=None)
スケジュールされた回路プログラムの可視化データを生成します。
命令持続時間を取得するには、Qiskit 2.0 で target パラメータを指定する必要があります。
qiskit.visualization.timeline.interface.draw()の引数 show_barriers は、Qiskit 1.1.0 の時点で非推奨とされています。 将来のリリースでは非推奨とされ、リリース日から3ヶ月以内に削除される。 代わりに、 plot_barriers を使う。
qiskit.visualization.timeline.interface.draw()の引数 show_idle は、Qiskit 1.1.0 の時点で非推奨とされています。 将来のリリースでは非推奨とされ、リリース日から3ヶ月以内に削除される。 代わりに、 idle_wires を使う。
パラメーター
-
program (QuantumCircuit) – 可視化するプログラム。 このプログラムは QuantumCircuit、scheduling_methodでトランスパイルされ、ゲートタイム情報を含む。
-
style (dict[str, Any] | None) – スタイルシートのオプション。 辞書またはプリセットのスタイルシートクラスです。 プリセットスタイルシートの詳細については、
IQXSimple、、およびIQXDebugging``IQXStandardを参照してください。 設定キーの詳細については、スタイルシートに関するセクションも参照してください。 -
disable_bits (list[Bits] | None) – 出力画像に表示されていない量子ビットおよび古典ビットの一覧。
-
show_clbits (bool | None) – クラシックビットを表示するコントロールプロパティ。 クラシックビットを表示するにはTrueを設定する。
-
idle_wires (bool | None) – アイドルタイムラインを表示するコントロールプロパティ。 ゲートなしでタイムラインを表示するにはTrueを設定する。
-
plot_barriers (bool | None) – バリア指示を表示するコントロールプロパティ。 バリアの指示を表示するにはTrueを設定する。
-
show_delays (bool | None) – 遅延指示を表示するコントロールプロパティ。 ディレイ指示を表示するにはTrueを設定する。
-
show_labels (bool) – ゲートの名前などの注釈を表示するコントロール・プロパティ。 注釈を表示するにはTrueを設定する。
-
plotter (str | None) –
出力画像を生成するプロッターAPIの名前。 以下のAPIのいずれかを指定する:
mpl: Matplotlib API Matplotlib API to generate 2D image. Timelines are placed along y axis with vertical offset. This API takes matplotlib.axes.Axes as `axis` input.axisとstyleのkwargsはプロッターに依存します。
-
axis (Any | None) – プロッタに渡される任意のオブジェクト。 このオブジェクトが提供された場合、プロッタは、内部的に図オブジェクトを初期化する代わりに、与えられた軸を使用します。 このオブジェクト・フォーマットはプロッタに依存する。 詳細はプロッターの項を参照。
-
filename (str | None) – 提供された場合、出力画像はファイル名でファイルにダンプされる。
-
target (Target | None) – タイムラインが生成されるバックエンドのターゲット。
-
show_idle (bool | None) – 廃止。
-
show_barriers (bool | None) – 廃止。
戻り値
可視化出力データ。
返されるデータ型はプロッターによって異なります。 matplotlibファミリーが指定されている場合は、 matplotlib.pyplot.Figure。 返されるデータは、指定されたプロッタAPIの.get_imageメソッドによって生成される。
レイズ
- MissingOptionalLibraryError - 必要な可視化パッケージがインストールされていない場合。
- VisualizationError - 無効なプロッタAPIが指定された場合。
スタイル・ディクト詳細
スタイルシートkwargには、出力されるタイムラインのビジュアライゼーションのスタイルを定義する多数のオプションが含まれています。 スタイルシートのオプションは、フォーマッター、ジェネレーター、レイアウトに分類できる。 スタイルシートで利用可能なオプションは以下に定義されている:
パラメーター
-
formatter.general.fig_width - 出力画像の幅(デフォルトは 14)。
-
formatter.general.fig_unit_height - タイムラインごとの出力画像の高さ。 すべてのタイムラインの合計が出力画像の高さになります(デフォルト 0.8 )。
-
formatter.general.dpi - ファイル名が設定されている場合、画像の1インチあたりのドット数(デフォルト150)。
-
formatter.margin.top - 図キャンバスの上端から最初のタイムスロットのゼロラインまでのマージン(デフォルト 0.5 )。
-
formatter.margin.bottom – 図形キャンバスの下端から、最後のタイムスロットのゼロラインまでの余白(デフォルトは 0.5 )。
-
formatter.margin.left_percent - 図キャンバスの左端から横軸の左端までのマージン。 数値は、番組全体の放送時間に対するパーセンテージを単位とする。 継続時間が100で、 0.5 の値が設定されている場合、左マージンが5(デフォルト 0.02 )になる。
-
formatter.margin.right_percent - 図キャンバスの右端から横軸の右端までのマージン。 数値は、番組全体の放送時間に対するパーセンテージを単位とする。 継続時間が100で、 0.5 の値が設定されている場合、右マージンが5(デフォルト 0.02 )になる。
-
formatter.margin.link_interval_percent - ゲートリンクのオーバーラップを許可する。 この範囲に複数のゲートリンクが描画されている場合、リンク同士が重ならないように水平方向にシフトされる。 値の単位は番組全体の継続時間に対するパーセンテージ(デフォルト 0.01 )。
-
formatter.time_bucket.edge_dt - ゲートボックスのラウンドエッジの長さ。 ゲートボックスはゼロラインからスムーズにフェードイン、フェードアウトする。 この値は、システム・サイクル時間dtの単位である(デフォルトは10)。
-
formatter.margin.minimum_duration - 最低予定回路時間。 入力回路の継続時間がこの値を下回る場合、この値に基づいて水平リミットが設定される。 この値は、システム・サイクル時間dt(デフォルト50)の単位である。
-
formatter.color.background - キャンバスの表面色のカラーコード(デフォルトは#FFFFFF)。
-
formatter.color.timeslot - タイムスロットボックスのフェイスカラー(デフォルト#DDDDD)。
-
formatter.color.gate_name - ゲート名注釈のテキスト色(デフォルト#000000)。
-
formatter.color.bit_name - ビットラベル注釈のテキスト色(デフォルト#000000)。
-
formatter.color.barrier - バリアの線の色 (デフォルト #222222)。
-
formatter.color.gates –
出力の可視化で各要素タイプに使用するゲートボックスまたはゲートシンボルの色の辞書。 デフォルト値は以下のとおりです。
{ 'u0': '#FA74A6', 'u1': '#000000', 'u2': '#FA74A6', 'u3': '#FA74A6', 'id': '#05BAB6', 'sx': '#FA74A6', 'sxdg': '#FA74A6', 'x': '#05BAB6', 'y': '#05BAB6', 'z': '#05BAB6', 'h': '#6FA4FF', 'cx': '#6FA4FF', 'cy': '#6FA4FF', 'cz': '#6FA4FF', 'swap': '#6FA4FF', 's': '#6FA4FF', 'sdg': '#6FA4FF', 'dcx': '#6FA4FF', 'iswap': '#6FA4FF', 't': '#BB8BFF', 'tdg': '#BB8BFF', 'r': '#BB8BFF', 'rx': '#BB8BFF', 'ry': '#BB8BFF', 'rz': '#000000', 'reset': '#808080', 'measure': '#808080' }これを使用する場合は、必要な値をすべて指定する必要がある。 ゲート名が指定されない場合は、 formatter.color.default_gate の色が適用される。
-
formatter.color.default_gate - デフォルトのゲートカラー。 この色は、可視化するゲート名が formatter.color.gates (デフォルト #BB8BFF )の辞書に含まれていない場合に適用される。
-
formatter.latex_symbol.gates –
出力の可視化で各要素タイプに使用するゲート名のラテックス表現の辞書。 デフォルト値は以下のとおりです。
{ 'u0': r'{\rm U}_0', 'u1': r'{\rm U}_1', 'u2': r'{\rm U}_2', 'u3': r'{\rm U}_3', 'id': r'{\rm Id}', 'x': r'{\rm X}', 'y': r'{\rm Y}', 'z': r'{\rm Z}', 'h': r'{\rm H}', 'cx': r'{\rm CX}', 'cy': r'{\rm CY}', 'cz': r'{\rm CZ}', 'swap': r'{\rm SWAP}', 's': r'{\rm S}', 'sdg': r'{\rm S}^\dagger', 'sx': r'{\rm √X}', 'sxdg': r'{\rm √X}^\dagger', 'dcx': r'{\rm DCX}', 'iswap': r'{\rm iSWAP}', 't': r'{\rm T}', 'tdg': r'{\rm T}^\dagger', 'r': r'{\rm R}', 'rx': r'{\rm R}_x', 'ry': r'{\rm R}_y', 'rz': r'{\rm R}_z', 'reset': r'|0\rangle', 'measure': r'{\rm Measure}' }これを使用する場合は、必要な値をすべて指定する必要がある。 不完全なディクテを通す規定はない。
-
formatter.latex_symbol.frame_change - フレーム変更記号のLatex表現(デフォルトはr
circlearrowleft)。 -
formatter.unicode_symbol.frame_change - フレーム変更記号の Unicode 表現 (デフォルト u’u21BA’ )。
-
formatter.box_height.gate - ゲートボックスの高さ(デフォルト 0.5 )。
-
formatter.box_height.timeslot - タイムスロットの高さ(デフォルト 0.6 )。
-
formatter.layer.gate - ゲートボックスのレイヤインデックス。 より大きな数字が出力画像の前面に表示される(デフォルトは3)。
-
formatter.layer.timeslot - タイムスロットのレイヤインデックス。 出力画像の前面に表示される数字が大きくなる(デフォルトは0)。
-
formatter.layer.gate_name - ゲート名アノテーションのレイヤインデックス。 より大きな数字が出力画像の前面に表示される(デフォルトは5)。
-
formatter.layer.bit_name - ビットラベルのレイヤインデックス。 より大きな数字が出力画像の前面に表示される(デフォルトは5)。
-
formatter.layer.frame_change - フレームチェンジシンボルのレイヤインデックス。 より大きな数字が出力画像の前面に表示される(デフォルトは4)。
-
formatter.layer.barrier - バリアラインのレイヤインデックス。 より大きな数字が出力画像の前面に表示される(デフォルトは1)。
-
formatter.layer.gate_link - ゲートリンクラインのレイヤインデックス。 出力画像の前面に大きな数字が表示される(デフォルトは2)。
-
formatter.alpha.gate - ゲートボックスの透明性。 0から1の範囲の値。 値 0 を指定す る と、 完全に透過な枠が得 ら れます (デフ ォル ト 1.0 )。
-
formatter.alpha.timeslot - 時間枠の透明性。 0から1の範囲の値。 値 0 を指定す る と、 完全に透過な枠が得 ら れます (デフ ォル ト 0.7 )。
-
formatter.alpha.barrier - バリアラインの透明性。 0から1の範囲の値。 値 0 は完全に透明な線を与える(デフォルト 0.5 )。
-
formatter.alpha.gate_link - ゲートリンクラインの透明度。 0から1の範囲の値。 値 0 は完全に透明な線を与える(デフォルト 0.8 )。
-
formatter.line_width.gate - ゲートボックスのフリンジの線幅(デフォルト0)。
-
formatter.line_width.timeslot - タイムスロットのフリンジの線幅(デフォルト0)。
-
formatter.line_width.barrier - バリアラインの線幅(デフォルト3)。
-
formatter.line_width.gate_link - ゲートリンクの線幅(デフォルトは3)。
-
formatter.line_style.barrier - バリアラインのラインスタイル。 これは matplotlib の line style spec に従います(デフォルトは '-')。
-
formatter.line_style.gate_link - ゲートリンクラインのラインスタイル。 これは matplotlib の line style spec に従います(デフォルトは '-')。
-
formatter.text_size.gate_name - ゲート名注釈のテキストサイズ(デフォルト12)。
-
formatter.text_size.bit_name - ビットラベルのテキストサイズ(デフォルト15)。
-
formatter.text_size.frame_change - フレームチェンジシンボルの文字サイズ(デフォルト18)。
-
formatter.text_size.axis_label - 軸ラベルのテキストサイズ (デフォルト 13)。
-
formatter.label_offset.frame_change - タイムスロットの0行目からの継続時間ゼロのゲート名注釈のオフセット(デフォルト 0.25 )。
-
formatter.control.show_idle - ゲートのないタイムスロットを表示するにはTrueを設定する(デフォルトはTrue)。
-
formatter.control.show_clbits - クラシック・ビットのタイム・スロットを表示するにはTrueを設定する(デフォルトはTrue)。
-
formatter.control.show_barriers - バリアを表示するにはTrueを設定する(デフォルトはTrue)。
-
formatter.control.show_delays - ディレイ・ボックスを表示するにはTrueを設定する(デフォルトはTrue)。
-
generator.gates - ゲートの図面を生成するコールバック関数のリスト。 ジェネレーターのフォーマットを満たす任意のコールバック関数をここに設定することができる。 タイムラインのドロワーにはデフォルトのジェネレーターがいくつかあります。 詳細は
generators。 デフォルト・ジェネレーターは設定されない(デフォルト [] )。 -
generator.bits - ビットラベルとタイムスロットの図面を生成するコールバック関数のリスト。 ジェネレーターのフォーマットを満たす任意のコールバック関数をここに設定することができる。 タイムラインのドロワーにはデフォルトのジェネレーターがいくつかあります。 詳細は
generators。 デフォルト・ジェネレーターは設定されない(デフォルト [] )。 -
generator.barriers - バリア用の図面を生成するコールバック関数のリスト。 ジェネレーターのフォーマットを満たす任意のコールバック関数をここに設定することができる。 タイムラインのドロワーにはデフォルトのジェネレーターがいくつかあります。 詳細は
generators。 デフォルト・ジェネレーターは設定されない(デフォルト [] )。 -
generator.gate_links - ゲートリンクの図面を生成するコールバック関数のリスト。 ジェネレーターのフォーマットを満たす任意のコールバック関数をここに設定することができる。 タイムラインのドロワーにはデフォルトのジェネレーターがいくつかあります。 詳細は
generators。 デフォルト・ジェネレーターは設定されない(デフォルト [] )。 -
layout.bit_arrange - ビットをソートするコールバック関数。 詳細は
layouts。 デフォルトのレイアウトは設定されていない。 (デフォルトはなし)。 -
layout.time_axis_map - 横軸ラベルのレイアウトを決定するコールバック関数。 詳細は
layouts。 デフォルトのレイアウトは設定されていない。 (デフォルトはなし)。 -
program (QuantumCircuit)
-
disable_bits (list[Bits] | None)
-
show_clbits (bool | None)
-
idle_wires (bool | None)
-
plot_barriers (bool | None)
-
show_delays (bool | None)
-
show_labels (bool)
-
plotter (str | None)
-
axis (Any | None)
-
filename (str | None)
-
target (Target | None)
-
show_idle (bool | None)
-
show_barriers (bool | None)
例
スケジュールされた回路プログラムを視覚化するには、制御引数のセットでこの関数を呼び出します。 出力画像の外観のほとんどは、スタイルシートで制御できる。
デフォルトのスタイルシートで描画する。
from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw
from qiskit.providers.fake_provider import GenericBackendV2
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
backend = GenericBackendV2(5)
qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, target=backend.target)
シンプルなスタイルシートで描く。
from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw, IQXSimple
from qiskit.providers.fake_provider import GenericBackendV2
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
backend = GenericBackendV2(5)
qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, style=IQXSimple(), target=backend.target)
プログラムのデバッグに適したスタイルシートで描画。
from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw, IQXDebugging
from qiskit.providers.fake_provider import GenericBackendV2
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
backend = GenericBackendV2(5)
qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, style=IQXDebugging(), target=backend.target)
プリセット・スタイルシートを呼び出す際に、部分的にカスタマイズすることができます:
my_style = {
'formatter.general.fig_width': 16,
'formatter.general.fig_unit_height': 1
}
style = IQXStandard(**my_style)
# draw
draw(qc, style=style)上記と同様に、カスタムジェネレーターやカスタムレイアウト関数を作成し、既存のスタイルシートをカスタム関数で更新することができます。 この機能により、スケジュールされた回路ドロワーのコードベースを変更することなく、出力画像の外観の大部分を制御することができます。