出力表現の取得#

この例では、設定 capture_repr (キャプチャされる出力を制御する) の動作を示します。デフォルトの capture_repr 設定は capture_repr: ('_repr_html_', '__repr__') であり、Sphinx-Gallery ドキュメントの構築時に使用されました。この設定でキャプチャされる出力は、この例で示されます。他の capture_repr 設定でキャプチャされる出力の違いについても説明します。

標準出力にデータが送られておらず、最後のステートメントが式ではなく代入であるため、以下のコードブロックでは何もキャプチャされません。

# example 1
a = 2
b = 10

b の値をキャプチャしたい場合は、以下を使用する必要があります。

# example 2
a = 2
b = 10
b  # this is an expression
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
col1 col2
0 1 3
1 2 4


pandas データフレーム df には、__repr__ メソッドと _repr_html_ メソッドの両方があります。_repr_html_capture_repr タプルの最初に表示されるため、__repr__ よりも優先して _repr_html_ がキャプチャされます。

以下の例では、標準出力にデータが送られ、最後のステートメントが式です。

# example 4
print("Hello world")
a + b
Hello world

12

Statsmodels テーブルも適切にスタイル設定される必要があります

# example 5
import numpy as np
import statsmodels.iolib.table

statsmodels.iolib.table.SimpleTable(np.zeros((3, 3)))
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0


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])
plot 3 capture repr
[<matplotlib.lines.Line2D object at 0x7f27dcf9aec0>]

テキスト表現のキャプチャを回避するには、最後の Matplotlib 式を一時変数に割り当てることができます。

_ = plt.plot([1, 2, 3])
plot 3 capture repr

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

plt.plot([1, 2, 3])
plt.show()
plot 3 capture repr

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

Sphinx-Gallery によって生成されたギャラリー