1

私は多くのプロットを行っていて、pyplot.hist 関数で奇妙な異常に遭遇しました。問題を示すために、プログラムを最小限の動作例に切り詰めました。

import matplotlib.pyplot as plt
import numpy as np
var = [25.00, 35.68, 29.02, 25.46, 30.58, 30.86, 38.08, 38.63,
       25.19, 32.11, 26.57, 37.23, 37.97, 27.38, 27.25, 33.33,
       31.41, 26.93, 28.42, 25.99, 30.09, 31.87, 34.40, 33.46,
       31.76, 34.03, 27.01, 27.52, 30.41, 25.84, 25.84]
fig = plt.figure()
plt.hist(var, histtype = 'step')
plt.show()

スクリプトを実行すると、次のようになります。

異常 http://dl.dropbox.com/u/13695305/Figure%201_005.png

ただし、最後の 5 つの要素 (27.01、27.52、30.41、25.84、25.84) を削除すると、スクリプトは正常に機能します。

import matplotlib.pyplot as plt
import numpy as np
var = [25.00, 35.68, 29.02, 25.46, 30.58, 30.86, 38.08, 38.63,
       25.19, 32.11, 26.57, 37.23, 37.97, 27.38, 27.25, 33.33,
       31.41, 26.93, 28.42, 25.99, 30.09, 31.87, 34.40, 33.46,
       31.76, 34.03]
fig = plt.figure()
plt.hist(var, histtype = 'step')
plt.show()

働く!http://dl.dropbox.com/u/13695305/Figure%201_004.png

これは私を夢中にさせています!numpy 配列を使用してみましたが、役に立ちませんでした。Numpy random は問題なく動作しました。しかし、何らかの理由で、特定のデータ セット (タイプ?) が原因で失敗します。誰かが理由を知っていますか?

編集: 関数は histt​​ype = 'bar' で正常に動作することに注意することが重要ですが、histt​​ype = 'step' でバグが発生します。うまくいけば、誰かがこの問題を再現できます。

4

1 に答える 1

1

残念ながらこれはバグですが、修正があります: 手動でyminプロットに を設定します。

import matplotlib.pyplot as plt
import numpy as np

var = [[25.00, 35.68, 29.02, 25.46, 30.58, 30.86, 38.08, 38.63,
        25.19, 32.11, 26.57, 37.23, 37.97, 27.38, 27.25, 33.33,
        31.41, 26.93, 28.42, 25.99, 30.09, 31.87, 34.40, 33.46,
        31.76, 34.03, 27.01, 27.52, 30.41, 25.84, 25.84]]
fig, ax = plt.subplots()#figsize = (10, 10))
ax.hist(var[0],histtype = 'step')
plt.ylim(ymin=0)
plt.show()

ただし、バグは修正されているようv1.3です。どうやら以前のバージョンを使用しているようです。

>>> matplotlib.__version__
'1.1.1rc'

そのため、matplotlib をアップグレードすると問題が解決する可能性があります。

于 2013-07-18T14:53:12.197 に答える