7

を使用して SVG 画像を生成および保存matplotlibしていますが、可能な限り再現できるようにしたいと考えています。ただし、 と を設定np.random.seedした後でも、SVG 画像random.seedのさまざまなidとの値は、コードの実行間で変化します。xlink:href

これらの違いはmatplotlib、SVG 画像のレンダリングに使用するバックエンドによるものだと思います。コードの 2 つの異なる実行間で同一のプロットが同一の出力を生成するように、このバックエンドのシードを設定する方法はありますか?

サンプル コード (これを 2 回実行し、2 回plt.savefig目の実行では名前を変更します):

import random
import numpy as np
import matplotlib.pyplot as plt

random.seed(42)
np.random.seed(42)

x, y = np.random.randn(4096), np.random.randn(4096)
heatmap, xedges, yedges = np.histogram2d(x, y, bins=(64,64))

fig, axis = plt.subplots()
plt.savefig("random_1.svg")

ファイルの比較:

diff random_1.svg random_2.svg | head
35c35
< " id="md3b71b67b7" style="stroke:#000000;stroke-width:0.8;"/>
---
> " id="m7ee1b067d8" style="stroke:#000000;stroke-width:0.8;"/>
38c38
<        <use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md3b71b67b7" y="307.584"/>
---
>        <use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#m7ee1b067d8" y="307.584"/>
82c82
<        <use style="stroke:#000000;stroke-width:0.8;" x="129.024" xlink:href="#md3b71b67b7" y="307.584"/>
4

1 に答える 1