假设我有一个这样的图表
plot(np.random.rand(10))
pylab.ylim([-0,1.5])
我有一个状态序列
In[141]:np.random.randint(5,size=(1, 10))
Out[142]:array([[2, 2, 4, 2, 1, 2, 0, 0, 4, 4]])
我想在上面的图中叠加那个状态序列,如下所示:
但是如何在matplotlib中做到这一点?
总结一下:我希望你的情节的不同部分具有不同的彩色背景,这取决于状态,每个独特的状态都有独特的颜色。
答案 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)