用茎干绘制两个不同颜色的列表

时间:2017-01-08 22:40:36

标签: python matlab list matplotlib machine-learning

我使用类似Matlba的s_n_hat绘制一个列表(stem()),如下所示:

markerline, stemlines, _ = plt.stem(s_n_hat, '-.')
plt.setp(markerline, 'markerfacecolor', 'b')
plt.setp(baseline, 'color','r', 'linewidth', 2)
plt.show()

在我的实际应用中,我想绘制蓝色的点击和红色的未命中,我该怎么做?因此,有些元素应该是蓝色和红色。

假设我的矢量第一部分有点击而第二部分有未命中,我试图这样做:

s_n_hat = [1, -1, 1, 1, -1, 1, 1, 1, 1]
markerline1, stemlines, _ = plt.stem(s_n_hat[0:5], '-.')
plt.setp(markerline1, 'markerfacecolor', 'b')
markerline2, stemlines, _ = plt.stem(s_n_hat[6:9], '-.')
plt.setp(markerline2, 'markerfacecolor', 'r')
plt.setp(baseline, 'color','r', 'linewidth', 2)
plt.show()

我希望第一个元素是蓝色,其他所有元素都是红色,但它们似乎是混合的:

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

来自documentation

  

如果没有提供* x *值,则默认值为(0,1,...,len(y)-1)

然后你需要传递一个x,但这些点重叠。类似的东西:

s_n_hat = [1, -1, 1, 1, -1, 1, 1, 1, 1]
x1 = list(range(0, 5))
x2 = list(range(5, 8))
markerline1, stemlines, _ = plt.stem(x1, s_n_hat[0:5], '-.')
plt.setp(markerline1, 'markerfacecolor', 'b')
markerline2, stemlines, _ = plt.stem(x2, s_n_hat[6:9], '-.')
plt.setp(markerline2, 'markerfacecolor', 'r')
plt.show()

enter image description here