标题可能看似简单,但我不知道实现目标的最佳方法是什么。
所以我把数据存储在列表中:
这给了我这个与X和Y共享的情节。
如您所见,我显示了3个信号周期(60 Hz)。有4个脉冲阶段和一个静止阶段。
我希望每个阶段都有不同的颜色。此外,如果在一个阶段中,一个通道没有脉冲,他将采取其余状态的颜色。 例如,上图中的通道2(从顶部!)没有脉冲直到第4阶段。所以在t = [0:6]之间曲线应该与t = [8:16.67]之间的颜色相同。
此外,我正在寻找解决问题的方法,以避免在+5和-5之间重叠。
感谢您的帮助!
修改
示例数据+代码:
Time = [3000.0, 3000.0, 3000.3, 3000.3, 3000.35, 3000.35, 3001.55, 3001.55, 3002.0, 3002.0, 3002.3, 3002.3, 3002.35, 3002.35, 3003.55, 3003.55, 3004.0, 3004.0, 3004.3, 3004.3, 3004.35, 3004.35, 3005.55, 3005.55, 3006.0, 3006.0, 3006.3, 3006.3, 3006.35, 3006.35, 3007.55, 3007.55, 3008.0, 3016.67, 3016.67, 3016.97, 3016.97, 3017.02, 3017.02, 3018.22, 3018.22, 3018.67, 3018.67, 3018.97, 3018.97, 3019.02, 3019.02, 3020.22, 3020.22, 3020.67, 3020.67, 3020.97, 3020.97, 3021.02, 3021.02, 3022.22, 3022.22, 3022.67, 3022.67, 3022.97, 3022.97, 3023.02, 3023.02, 3024.22, 3024.22, 3024.67, 3033.34, 3033.34, 3033.64, 3033.64, 3033.69, 3033.69, 3034.89, 3034.89, 3035.34, 3035.34, 3035.64, 3035.64, 3035.69, 3035.69, 3036.89, 3036.89, 3037.34, 3037.34, 3037.64, 3037.64, 3037.69, 3037.69, 3038.89, 3038.89, 3039.34, 3039.34, 3039.64, 3039.64, 3039.69, 3039.69, 3040.89, 3040.89, 3041.34]
Sig1 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.7, -2.7, 0.0, 0.0, 0.675, 0.675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.7, -2.7, 0.0, 0.0, 0.675, 0.675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.7, -2.7, 0.0, 0.0, 0.675, 0.675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Sig2 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.6, -4.6, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.6, -4.6, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.6, -4.6, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Sig3 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2, -1.2, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2, -1.2, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2, -1.2, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0]
Sig4 = [0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Sig5 = [0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15, 1.15, 0.0, 0.0, -0.2875, -0.2875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Sig6 = [0.0, -2.3, -2.3, 0.0, 0.0, 0.575, 0.575, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.3, -2.3, 0.0, 0.0, 0.575, 0.575, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.3, -2.3, 0.0, 0.0, 0.575, 0.575, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Sig7 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 4.6, 0.0, 0.0, -1.15, -1.15, 0.0, 0.0, 2.7, 2.7, 0.0, 0.0, -0.675, -0.675, 0.0, 0.0, 1.2, 1.2, 0.0, 0.0, -0.3, -0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 4.6, 0.0, 0.0, -1.15, -1.15, 0.0, 0.0, 2.7, 2.7, 0.0, 0.0, -0.675, -0.675, 0.0, 0.0, 1.2, 1.2, 0.0, 0.0, -0.3, -0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 4.6, 0.0, 0.0, -1.15, -1.15, 0.0, 0.0, 2.7, 2.7, 0.0, 0.0, -0.675, -0.675, 0.0, 0.0, 1.2, 1.2, 0.0, 0.0, -0.3, -0.3, 0.0, 0.0]
f, ax = plt.subplots(7, sharex=True, sharey=True, figsize=(20,10))
ax[0].set_title("My title")
f.subplots_adjust(hspace=0)
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False)
ax[0].plot(Time, Sig1, label = "signal 1")
ax[1].plot(Time, Sig2, label = "signal 2")
ax[2].plot(Time, Sig3, label = "signal 3")
ax[3].plot(Time, Sig4, label = "signal 4")
ax[4].plot(Time, Sig5, label = "signal 5")
ax[5].plot(Time, Sig6, label = "signal 6")
ax[6].plot(Time, Sig7, label = "signal 7")
f.text(0.5, 0.04, 'Time (ms)', ha='center')
f.text(0.04, 0.5, 'my Y axes label', va='center', rotation='vertical')
plt.show()
此示例将为您提供我添加的相同数字(可能还有一个或两个以上的子图)。我只是更改了名称,因此愚蠢的命名:p 我还想补充一点,每个子图都应该有一个带有labbel的图例(即附近写有名字信号的颜色线);并且还应该在图表的侧面放置一个颜色图例,如下所示: