注記
最後に移動して、完全なサンプルコードをダウンロードするか、JupyterLite または Binder 経由でブラウザでこのサンプルを実行します
出力表現の取得#
この例では、設定 capture_repr
(キャプチャされる出力を制御する) の動作を示します。デフォルトの capture_repr
設定は capture_repr: ('_repr_html_', '__repr__')
であり、Sphinx-Gallery ドキュメントの構築時に使用されました。この設定でキャプチャされる出力は、この例で示されます。他の capture_repr
設定でキャプチャされる出力の違いについても説明します。
標準出力にデータが送られておらず、最後のステートメントが式ではなく代入であるため、以下のコードブロックでは何もキャプチャされません。
b
の値をキャプチャしたい場合は、以下を使用する必要があります。
10
Sphinx-Gallery は、capture_repr
タプルの最初の「表現」メソッドであるため、最初に b
の _repr_html_
をキャプチャしようとします。b
にこのメソッドが存在しないため、Sphinx-Gallery は次に進み、タプルの 2 番目にある __repr__
メソッドをキャプチャしようとします。これは b
に存在するため、キャプチャされて上記に出力が表示されます。
_repr_html_
メソッドを持つ式の例を提供するために、以下のコードブロックで pandas データフレームが使用されています。
# example 3
import pandas as pd
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
df
pandas データフレーム df
には、__repr__
メソッドと _repr_html_
メソッドの両方があります。_repr_html_
が capture_repr
タプルの最初に表示されるため、__repr__
よりも優先して _repr_html_
がキャプチャされます。
以下の例では、標準出力にデータが送られ、最後のステートメントが式です。
Hello world
12
Statsmodels テーブルも適切にスタイル設定される必要があります
# example 5
import numpy as np
import statsmodels.iolib.table
statsmodels.iolib.table.SimpleTable(np.zeros((3, 3)))
print()
は標準出力に出力され、常にキャプチャされます。したがって、文字列 'Hello world'
がキャプチャされます。最後の式の「表現」もキャプチャされます。ここでも、この式 a + b
には _repr_html_
メソッドがないため、__repr__
メソッドがキャプチャされます。
Matplotlib の出力#
Matplotlib の関数呼び出しは、通常、図を出力するだけでなく、Matplotlib オブジェクトも返します。最後のステートメントが Matplotlib 式であるコードブロックでは、プロットに加えて、オブジェクトの「表現」がキャプチャされます。これは、Matplotlib オブジェクトに __repr__
メソッドがあり、capture_repr
タプルに __repr__
が含まれているためです。Matplotlib オブジェクトには __str__
メソッドもあることに注意してください。
以下の例では、matplotlib.pyplot.plot()
はプロットされたデータを表す Line2D
オブジェクトのリストを返し、リストの __repr__
が図とともにキャプチャされます。
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])

[<matplotlib.lines.Line2D object at 0x7f27dcf9aec0>]
テキスト表現のキャプチャを回避するには、最後の Matplotlib 式を一時変数に割り当てることができます。

あるいは、何も返さない plt.show()
をコードブロックの最後に追加することもできます。

capture_repr
設定#
デフォルトでは、capture_repr
設定は ('_repr_html_', '__repr__')
です。これにより、コードブロックの最後のステートメントが式である場合、Sphinx-Gallery はそのステートメントの「表現」をキャプチャするようになります。Sphinx-Gallery は、タプルに表示される「表現」の順序に従ってこれを行います。デフォルトの capture_repr
設定では、最初に _repr_html_
のキャプチャが試行されます。このメソッドが存在しない場合は、__repr__
メソッドがキャプチャされます。__repr__
も存在しない場合(ユーザー定義ではないオブジェクトではありえないことですが)、何もキャプチャされません。たとえば、設定が 'capture_repr': ('_repr_html_')
に設定されている場合、b
に _repr_html_
がないため、例 2 では何もキャプチャされません。capture_repr
タプルの「表現」を変更して、例の .py
ファイルでキャプチャされるものを細かく調整できます。
標準出力に送られたデータのみをキャプチャするには、capture_repr
を空のタプル capture_repr: ()
に設定できます。この設定では、標準出力に送られたデータのみがキャプチャされます。上記の例では、例 4 のみがキャプチャされます。例 2、3、および 4 では、最後のステートメントは式ですが、最後の式の「表現」は出力されません。その「表現」をキャプチャするには、最後の式に print()
を追加する必要があります。空のタプル設定は、この設定が導入された v0.5.0 より前の Sphinx-Gallery の動作を模倣しています。
スクリプトの総実行時間: (0 分 2.538 秒)
推定メモリ使用量: 181 MB