我有v,时间,伏特的向量。我使用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 :(得分: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_id
和spike_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()
,因为它将不再需要。
希望这有帮助。