我想使用matplotlib pyplot制作意大利面条图(一个窗口中的许多行)。根据我的数据,不同的线条需要使用不同的颜色。但是,我不想为每行使用for循环,因为我需要它快速运行。我正在使用matplotlib事件处理,并根据鼠标拖动重新绘制200行以上的代码; for循环为此花费了太长时间。
虽然对此没有任何文档,但我发现如果使用plt.plot并传递x的数组和y的矩阵,则会打印出多行。而且超级快。但是,所有颜色必须相同。传递颜色数组会导致错误。
_ = plt.plot([0,1,2,3,4], np.matrix.transpose(np.asarray([[0,0,0,0,0],[1,1,1,1,1],[2,2,2,2,2]])), color='blue', linewidth=1, alpha=0.4)
此代码在一个绘图中产生3条水平线,并且比使用plot命令3次要快。很棒,但是我想要不同的颜色。如果我愿意
_ = plt.plot([0,1,2,3,4], np.matrix.transpose(np.asarray([[0,0,0,0,0],[1,1,1,1,1],[2,2,2,2,2]])), color=['blue', 'red, 'green'], linewidth=1, alpha=0.4)
我得到一个错误无效的RGBA参数:array(['blue','red','red'],dtype ='
答案 0 :(得分:5)
a = [0,0,0,0,0]
b = [1,1,1,1,1]
c = [2,2,2,2,2]
plt.plot([0,1,2,3,4], np.matrix.transpose(np.asarray([a, b, c])), linewidth=1, alpha=0.4)
plt.hlines([0, 1, 2], 0, 4, ['r', 'b', 'g'])
import seaborn as sns
import pandas as pd
ex = pd.DataFrame({'a': [0, 0, 0],
'b': [1, 1, 1],
'c': [2, 2, 2]})
# either palette works
palette=["#9b59b6", "#3498db", "#95a5a6"]
# palette=['blue', 'red', 'green']
sns.lineplot(data=ex, palette=palette, dashes=False)
plt.show()