2013-07-15 50 views
1

後消失我有一個小的代碼生成與此代碼如下圖片:Matplotlib/Pylab - 情節的一部分設置數刻度

代碼1: enter image description here

hist, rhist = np.histogram(r, bins=40, range=(0, 0.25)) 
hist = -hist/np.trapz(rhist[:-1],hist) 
plt.plot(rhist[:-1], hist) 

的代碼1輸出

然後我嘗試設置繪圖的對數Y軸,以便我可以更清晰地識別小峯。這是結果。

代碼2:

hist, rhist = np.histogram(r, bins=40, range=(0, 0.25)) 
hist = -hist/np.trapz(rhist[:-1],hist) 
plt.semilogy(rhist[:-1], hist) 

的代碼2輸出: enter image description here

正如你看到的,我的陰謀的一部分消失。有40個垃圾箱,但我只能在新的情節中計算大約15個垃圾箱。任何幫助將不勝感激。我正在使用最新版本的Enthought Canopy用於學術用途。 E.

更新:我確實發現了一個類似的問題here,老,死了,但沒有回答。

回答

1

我很確定它只是沒有繪製這些值,因爲它們爲零。

Log(0)= - 無窮大。

繪圖是將會使你的圖形看起來很垃圾......

+0

謝謝。我甚至都沒有想過這件事,而且非常明顯! :) – erthy

0

一個共同視覺把戲到「顯示」,在日誌秤零點是用一個很小的值改爲:

plt.semilogy(rhist[:-1], hist+1e-6) 

在這種情況下,請確保正確解釋情節。

+0

好主意。我會贊成你,但我沒有代表,哈哈。 – erthy

+0

如果你打算這樣做,那麼這實際上不是你應該怎麼做的......你應該使用'nonposy'參數。請參閱[這個答案](http://stackoverflow.com/a/3513150/432913)瞭解更多信息。 – will

+0

哇,我不知道這個'nonposy',謝謝! – user2304916

1

問題plt.yscale('symlog')在您的繪圖結束時。有關'symlog'的說明,請參閱here