2016-05-12 16 views
0

私は、v、時間、ボルトと呼ばれるベクトルを持っています。 matplotlibを使用してサブプロットを行い、私の結果をよりよく理解できるようにしました。しかし、来るプロットはありません私はなぜわからないのですか?ベクターのサイズは重要ですか?私は本当に大きなベクトルを持っています。Matplotlibを使用したPythonプロッティング。プロットが表示されない

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 matplotlib.pyplot import figure, plot, xlabel, ylabel 
%matplotlib inline 

をし、それはもはや必要ではないだろうとして、それによってあなたはshow()をスキップすることができます

from numpy import array 

v_array = array(v) 

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

あなたはIPython/Jupyterノートブックを使用する場合は、そのようなあなたのノートPC内部の姿を埋め込むことができます。

これが役に立ちます。

関連する問題