matplotlib 根据参考值绘制多条线图颜色
matplotlib multiple line plot color according to reference value
如果我有一个数据集:
import numpy as np
import matplotlib.pyplot as plt
y = np.array([np.random.randn(10) for k in range(100)])
plt.plot(y)
以及相应的分类值向量:
x = np.array([['nr1', 'nr2'] for k in range(5)]).reshape(10,1)
如何根据 y 是 'nr1'
还是 'nr2'
来着色?
如果pandas plot()
函数有一个简单的方法也可以。
它应该最好是可扩展的,这样 x 中可以有两个以上的组。
编辑:这已经包括评论并且适用于任意数量的类别。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
y = np.array([np.random.randn(6) for k in range(100)])
x = np.array([['nr1', 'nr2', 'n3'] for k in range(2)]).reshape(6)
uniques, inverse = np.unique(x, return_inverse=True)
c = mpl.cm.Set1(inverse)
for i in range(y.shape[1]):
plt.plot(y[:,i], color=c[i])
如果我有一个数据集:
import numpy as np
import matplotlib.pyplot as plt
y = np.array([np.random.randn(10) for k in range(100)])
plt.plot(y)
以及相应的分类值向量:
x = np.array([['nr1', 'nr2'] for k in range(5)]).reshape(10,1)
如何根据 y 是 'nr1'
还是 'nr2'
来着色?
如果pandas plot()
函数有一个简单的方法也可以。
它应该最好是可扩展的,这样 x 中可以有两个以上的组。
编辑:这已经包括评论并且适用于任意数量的类别。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
y = np.array([np.random.randn(6) for k in range(100)])
x = np.array([['nr1', 'nr2', 'n3'] for k in range(2)]).reshape(6)
uniques, inverse = np.unique(x, return_inverse=True)
c = mpl.cm.Set1(inverse)
for i in range(y.shape[1]):
plt.plot(y[:,i], color=c[i])