2012-08-15 95 views
2

我遇到了matplotlib一個非常奇怪的問題。繪製一些要點如下:matplotlib日誌規模導致缺少點

regulargraph

當我切換到在y軸的對數刻度,一些觀點是不連接:

logscale

這是一個錯誤?我錯過了什麼嗎?代碼如下。將日誌比例線註釋掉以查看第一個圖。

import matplotlib.pyplot as plt 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 

x = [1.0, 2.0, 3.01, 4.01, 5.01, 6.01, 7.04, 8.04, 9.04, 10.05, 
    11.05, 12.09, 13.17, 14.18, 15.73, 16.74, 17.74, 18.9, 19.91, 
    20.94, 22.05, 23.15, 24.33, 25.48, 26.51, 27.58, 28.86, 29.93, 
    30.93, 32.23, 33.25, 34.26, 35.27, 36.29, 37.33, 38.35, 39.36, 
    40.37, 41.37] 
y = [552427, 464338, 446687, 201960, 227238, 265140, 148903, 134851, 
    172234, 120263, 115385, 100671, 164542, 171176, 28, 356, 0, 0, 
    195, 313, 9, 0, 132, 0, 249, 242, 81, 217, 159, 140, 203, 215, 
    171, 141, 154, 114, 99, 97, 97] 

ax1.plot(x, y, c='b', marker='o') 

ax1.set_yscale('log') 
plt.ylim((-50000, 600000)) 
plt.show() 

回答

6

log(0)未定義。我猜測matplotlib只是忽略了這裏出現的NaN

+0

啊,有意思。我想知道是否有一些解決方法 – jterrace 2012-08-15 15:23:05

+0

我想解決方法將非常依賴於你想要顯示這些點的位置。 – mgilson 2012-08-15 15:25:52

+1

啊,對,因爲在一個對數標度上,0最終會處於y軸的無限底部。將它們設置爲1應該適用於我的情況,謝謝! – jterrace 2012-08-15 15:28:24