这个剧情叫做什么以及如何在matplotlib中制作它?

时间:2015-02-02 13:48:32

标签: python matplotlib plot

假设我有一个这样的图表

plot(np.random.rand(10))
pylab.ylim([-0,1.5])

enter image description here

我有一个状态序列

In[141]:np.random.randint(5,size=(1, 10))
Out[142]:array([[2, 2, 4, 2, 1, 2, 0, 0, 4, 4]])

我想在上面的图中叠加那个状态序列,如下所示:

State sequence example superimposed on data.

但是如何在matplotlib中做到这一点?

总结一下:我希望你的情节的不同部分具有不同的彩色背景,这取决于状态,每个独特的状态都有独特的颜色。

1 个答案:

答案 0 :(得分:1)

要将地图划分为不同颜色的部分,您可以使用axvspan功能。

这要求您知道状态的x坐标边界。 假设状态总是L单位长,而STATE_COLOR是状态编号和matplotlib颜色之间的映射(' r',' k', ' b',...)然后你得到以下内容:

# States and their colors
state_list = [1, 2, 1]
STATE_COLOR = { 1 : 'r', 2 : 'y' }

L = 1.5 # Constant state length

x = np.linspace(0, 4.5)
y = x**2 - 3

# Draw states
for i, state in enumerate(state_list):
    x1 = i * L
    x2 = (i+1) * L
    plt.axvspan(x1, x2, color=STATE_COLOR[state])

# Draw line data
plt.plot(x, y)