1

matplotlib 1.3.1 に更新した後、quantity パッケージでの動作が停止しました。例えば:

import matplotlib.pyplot as plt
import quantities as pq
import numpy as np
t = np.arange(0,10,0.1) * pq.sec
x = np.arange(0,10,0.1)**2 * pq.m
plt.plot(t,x)

「Python オブジェクトの呼び出し中に最大再帰深度を超えました」で終わる、長く醜い例外ログをもたらします。matplotlib.units の get_converter() メソッドと数量のある配列に問題があるようです。

問題を回避する方法は次のとおりです。

plt.plot(t.magnitude,x.magnitude);

これはうまく機能しますが、変更したくないスクリプトがかなりあります。問題を解決する他の方法はありますか?

4

1 に答える 1

0

それは厄介な例外です。残念ながら、Quantities または Matplotlib のソース コードを変更する以外に、本当に良い解決策は思いつきません。これをバグとしてMatplotlib issuesに投稿します。この問題は Matplotlib v1.3.0 では発生しなかったように見えるため、Quantities ではなく Matplotlib に投稿することをお勧めしますが、Quantities 側で修正する方が簡単な可能性があります。

だから私はあなたが3つの選択肢があると思います

  1. xに変更して、あなたが提案したことを行いx.magnitudeます。
  2. を実行する独自のプロット ラッパーを作成し、x.magnitudeの単位を使用する軸にラベルを付けたり、単位のx変換を行ったり (Matplotlib が行おうとしていたように)、または単位でやりたいことを行ったりします。 .
  3. Matplotlib インストールをバージョン 1.3.0 にダウングレードします。
于 2013-11-11T19:20:22.777 に答える