2016-05-12 65 views
0

我有載體叫v,時間,伏特。我用matplotlib做子圖,這樣我可以更好地查看我的結果。但是,沒有劇情出現我不知道爲什麼?媒介的大小是否重要?我有很大的載體。Python使用Matplotlib繪圖。情節不顯示

import matplotlib.pyplot as plt 
plt.subplot(2, 1, 1) 
spike_id = [i[0] for i in v] 
spike_time = [i[1] for i in v] 
plt.plot(spike_time, spike_id, ".") 
plt.xlabel("Time(ms)") 
plt.ylabel("NeuronID") 


plt.subplot(2, 1, 2) 
plt.plot(time,volts , "-") 
plt.xlabel("Time (ms)") 
plt.ylabel("Volts (mv)") 


plt.show() 
+0

你在使用什麼環境? Windows,Linux,OS X?從IDE?命令行? IPython/Jupyter筆記本?有沒有錯誤?你的'rcParams'或'matplotlibrc'爲你的安裝設置正確嗎?你以前能夠繪製事情嗎?請[編輯]你的問題並儘可能多地添加相關細節。 – MattDMo

回答

2

這可能是因爲你沒有定義一個數字來包含它。

這裏是你的代碼的修改:

from matplotlib.pyplot import figure, plot, show, xlabel, ylabel 

spike_id = [i[0] for i in v] 
spike_time = [i[1] for i in v] 

fig = figure(figsize=[16,9]) 

# Plot number 1: 
fig.add_subplot(211) 
plot(spike_time, spike_id, ".") 
xlabel("Time(ms)") 
ylabel("NeuronID") 

# plot number 2: 
fig.add_subplot(212) 
plot(time,volts , "-") 
xlabel("Time (ms)") 
ylabel("Volts (mv)") 

show() 

你還問,如果向量事項的大小。

不可以。如果可以用Python進行計算,它可以在MatPlotLib中顯示(主要用C實現)。如果有幾百萬個進程可能需要一些時間。另外,考慮計算您的spike_idspike_time作爲生成器或NumPy數組,以避免不必要的迭代。這裏是如何:

發電機:

spike_id = (i[0] for i in v) 
spike_time = (i[1] for i in v) 

NumPy的:

使用與NumPy的允許矢量化,這將大大優化您的程序,並使其相當快;尤其是在處理大量數據的情況下。

這聽起來像是你正在處理一些信號數據(可能是EEG或EMG?)。無論如何,NumPy將爲您提供各種非常有用的工具來處理和分析這些數據。

from numpy import array 

v_array = array(v) 

spike_id = v_array[:, 0] 
spike_time = v_array[:, 1] 

如果您使用的IPython/Jupyter筆記本,您可以嵌入您的筆記本電腦裏面的人物,像這樣:

from matplotlib.pyplot import figure, plot, xlabel, ylabel 
%matplotlib inline 

,從而可以跳過show()因爲這將不再是必要的。

希望這會有所幫助。