2014-02-24 83 views
1

我在C++中生成光譜圖,並使用matplotlib繪製/顯示此圖。光譜圖 - 美白出特定區域

這很好,但是,我正在分割譜圖的一部分,並且想要確定關鍵興趣點。式的工作原理類似於這樣:

if(block >= threshold) then 
    spectrogram = block 
else: 
    spectrogram = "0" 

在本質上,如果該頻譜內的塊是上方的閾值,則該塊的數據在特定的位置被捕獲。但是,如果不是那麼我們只是讓塊包含「0」。問題是,當我繪製這一點,它不會在值爲「0」的區域顯示「白色」:

import numpy as np 
import matplotlib.pylab as pl; 

data = np.loadtxt('spec.txt') 

hm = pl.imshow(10*np.log10(data.T),interpolation='nearest',origin='lower',aspect='auto') 
pl.show() 

下面是結果:

enter image description here

是否有設置的方式,使不感興趣的區域爲「白色」,只顯示感興趣的區域?你想白

data = np.loadtxt("spec.txt") 
data = np.ma.masked_where(data == 0, data) 
pl.imshow(data, interpolation='nearest', ...) 

編輯

回答

2

嘗試掩蓋方面:

下面是一個例子:

import numpy as np 
import matplotlib.pyplot as plt 

data = np.random.random_integers(-1, 1, (10, 10)) 
masked_data = np.ma.masked_where(data == 0, data) 

plt.imshow(data, interpolation="nearest") 
plt.show() 

enter image description here

plt.imshow(masked_data, interpolation="nearest") 
plt.show() 

enter image description here

第二個編輯:

要更改配色方案,使用顏色表

import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 

data = np.random.rand(10, 10) 

cmap = matplotlib.cm.binary 
plt.imshow(data, interpolation="nearest", cmap=cmap) 
plt.show() 

enter image description here

退房here對於許多色彩映射的列表。

+0

感謝您的回覆,但是,這是行不通的。只是顯示相同。 – Phorce

+1

你能看到編輯。它適用於我,所以1.)確保你已經遵循我的代碼,並且2.)你能否請你發佈數據的樣本副本? – wflynny

+0

Ooops,正在看錯文件;)!漫長的一天!謝謝先生,終於可以開始寫這篇論文了! – Phorce