0

関数を使用して流体力学シミュレーションを表示するために、matplotlib (LaTex が有効で agg バックエンド) を使用していpcolormeshます。システム: Ubuntu 16.04 Python: Python 2.7.12 Matplotlib: 1.5.1-1ubuntu1 を使用して追加の軸も追加してtwinx twinyいます ~300 の png 画像を保存した後、タイトルを処理するときに、機能しない dvi 変換コマンドを指すクラッシュが発生します。pylab.close("all")各保存プロセスの後にフィギュアを閉じるために常に使用しています。

pylab.rc('text', usetex=True)
pylab.rc('text.latex', preamble=[r"\usepackage{amsmath}", r"\usepackage{amssymb}", r"\usepackage[alsoload=astronomy]{siunitx}"])

pylab.close("all")
f, ax = pylab.subplots(1)
cmap = pylab.cm.jet
cmap.set_bad('w',1.)
if in logquantity:
    plot = ax.pcolormesh(x, y, quantity , vmax=maxvalue, vmin=minvalue, norm=LogNorm(vmax= maxvalue, vmin = minvalue), cmap=cmap)
else:
    plot = ax.pcolormesh(x, y, quantity, vmax=maxvalue, vmin=minvalue, cmap=cmap)
ax.set_title("Title")
ax.set_aspect("equal")
ax.set_xscale("log")
ax.grid()
...<More Formatting stuff>
ax2 = ax.axes.twiny()
ax3 = ax.twinx()
...<Formatting labels, setting scales etc>
pylab.savefig("test.png", dpi = 800, bbox_inches='tight')
pylab.close("all")

pylab.savefig("test.png", dpi = 800, bbox_inches='tight')
  File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 689, in savefig
    fig.canvas.draw_idle()   # need this if 'transparent=True' to reset colors
  File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 2026, in draw_idle
    self.draw(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 474, in draw
    self.figure.draw(self.renderer)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/figure.py", line 1159, in draw
    func(*args)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 2324, in draw
    a.draw(renderer)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/text.py", line 792, in draw
    mtext=mtext)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 253, in draw_tex
    Z = texmanager.get_grey(s, size, self.dpi)
  File "/usr/lib/python2.7/dist-packages/matplotlib/texmanager.py", line 583, in get_grey
    pngfile = self.make_png(tex, fontsize, dpi)
  File "/usr/lib/python2.7/dist-packages/matplotlib/texmanager.py", line 524, in make_png
    'dvipng: \n\n' % dvifile + report)
RuntimeError: dvipng was not able to process the following file:
$HOME/.cache/matplotlib/tex.cache/2664bc1e879cb69289e1663e63a1c713.dvi
Here is the full report generated by dvipng:

No dvipng error report available.

前述の .cache の場所を確認すると、前述の dvi ファイルを完全に見つけることができます。dvipng を使用すると、プロットに配置する必要がある完全に正しくレンダリングされたヘッダーが得られます。ある種のキャッシュ/バッファがいっぱいになっていると想定しています。plot、semilogy、semilogx、および loglog を使用したラインプロットのみに関係する場合、はるかに多くの画像の後にこのエラーが発生します。フォーマットの詳細 (またはその他の追加情報) がこの問題に関連していると思われる場合は、それを提供することもできます。

回答ありがとうございます:-)

編集: 文字列は$\rho$$\left[6.96e-20 \frac{\si{\gram}}{\si{\centi \meter \cubed}}\right]$, $t =\num{0.00e+00}\text{y}$, $n_R = \num{300}$, $n_{\varphi} = \num{50}$, $n_z = \num{401},\ [C.L.] = 1.14e+02\text{pc}$

キャッシュファイルのpng版 キャッシュファイルを別の場所にコピーし、dvipngで手動でpngに変換した結果です。

問題は、このプロットに固有のものではありません。どのプロットでも発生する可能性があります。最初の〜300プロットが何であれ、うまく機能します。クラッシュするプロットが常に同じであるとは限りません。それは問題を調べる際の問題の1つです。すべての数量を実行し、関数を呼び出してプロットするループがあります

for quantityname in quantities:
    quantitydict = quantities[quantityname]
    quantity = quantitydict["data"]

時間ステップごとにこれらの量が 18 あります。EDIT2(詳細情報) エラーは、それが実行されているマシンに十分な空きメイン メモリがない場合に頻繁に発生します (10GB 未満、スクリプトは実行中に約 1GB を使用します)。また、時々異なって現れます。LaTeX エラーが発生します。実行で作成された以前のプロットはすべて正常に機能し、行をコピーして LaTeX でコンパイルすると、正しい結果が得られます。エラーメッセージ:

    pylab.savefig("test.png", dpi = 800, bbox_inches='tight')
  File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 688, in savefig
    res = fig.savefig(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/figure.py", line 1565, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 2180, in print_figure
    **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 527, in print_png
    FigureCanvasAgg.draw(self)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 474, in draw
    self.figure.draw(self.renderer)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/figure.py", line 1159, in draw
    func(*args)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 2324, in draw
    a.draw(renderer)
  File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/matplotlib/text.py", line 749, in draw
    bbox, info, descent = textobj._get_layout(renderer)
  File "/usr/lib/python2.7/dist-packages/matplotlib/text.py", line 361, in _get_layout
    ismath=ismath)
  File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 229, in get_text_width_height_descent
    renderer=self)
  File "/usr/lib/python2.7/dist-packages/matplotlib/texmanager.py", line 675, in get_text_width_height_descent
    dvifile = self.make_dvi(tex, fontsize)
  File "/usr/lib/python2.7/dist-packages/matplotlib/texmanager.py", line 422, in make_dvi
    report))
RuntimeError: LaTeX was not able to process the following string:
'CFL $\\\\Delta t_\\\\text{min}$$\\\\left[4.65e+05 \\\\text{yrs}\\\\right]$, $t =\\\\num{3.80e+03}\\\\text{y}$, $n_R = \\\\num{300}$, $n_{\\\\varphi} = \\\\num{50}$, $n_z = \\\\num{401},\\\\ [C.L.] = 1.14e+02\\\\text{pc}$'
Here is the full report generated by LaTeX: 

No latex error report available.
4

0 に答える 0