使用Matplotlib进行Python绘图。情节没有显示出来

时间:2016-05-12 20:36:21

标签: python python-2.7 matplotlib

我有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()

1 个答案:

答案 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_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(),因为它将不再需要。

希望这有帮助。