使用Matplotlib绘制Python。情节没有出现

2024-06-22 10:42:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: inidfortimeplotmatplotlib时间plt
1条回答
网友
1楼 · 发布于 2024-06-22 10:42:24

这可能是因为你没有定义一个数字来包含它。你知道吗

以下是对您的代码的修改:

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显示(MatPlotLib主要用C实现)。如果有几百万个进程,可能需要一些时间。另外,考虑将spike_idspike_time计算为生成器或NumPy数组,以避免不必要的迭代。以下是方法:

生成器:

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

NumPy:

NumPy的使用允许矢量化,这将极大地优化您的程序并使其更快;尤其是在处理大量数据时。你知道吗

听起来你也在处理一些信号数据(可能是脑电图或肌电图?)。无论如何,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(),因为它不再是必需的。你知道吗

希望这有帮助。你知道吗

相关问题 更多 >