Pyplot在图例中显示不同的颜色,但绘制的颜色相同

时间:2015-11-26 04:50:42

标签: python matplotlib plot

我正在尝试使用Pyplot绘制nstrats不同的Pareto前线,但不管我似乎尝试过,每个前端都以相同的颜色出现。我已经尝试过使用和不使用下面的颜色数组,因为我读到Python会自动循环颜色。我在循环中如何使用plot / scatter函数可能有问题?我的代码和输出图的链接如下。特别要注意的是,图例显示了我前面的正确颜色,但所有输出都是一种颜色。我已经验证输出来自多种策略。谢谢您的帮助!

colors = ['r', 'g', 'b']
for i in range(nstrats):
    plt.scatter(NPV[i], dev[i], color=colors[i], label = 'Strategy ' +         str(i+1))
plt.xlabel("NPV of Harvest Strategy")
plt.ylabel("Standard Dev of Yearly Harvest")
plt.title("Pareto Front for Each Strategy")
plt.legend(loc='best')
plt.show()

我的节目输出的内容:

output image

2 个答案:

答案 0 :(得分:1)

尝试将参数颜色更改为c。

colors = ['r', 'g', 'b']
for i in range(nstrats):
plt.scatter(NPV[i], dev[i], c=colors[i], label = 'Strategy ' + str(i+1))
plt.xlabel("NPV of Harvest Strategy")
plt.ylabel("Standard Dev of Yearly Harvest")
plt.title("Pareto Front for Each Strategy")
plt.legend(loc='best')
plt.show()

注意:保留(nstart< = 3 )的值。否则,它将无法正常工作。

答案 1 :(得分:1)

之所以会发生这种情况,是因为所有内容都是通过相同的单个plot命令绘制的。

这里是一个例子:

import matplotlib.pyplot as plt
import numpy as np

data = [1, 100, 2, 200, 3, 300, 4, 400, 5, 500]
data = np.reshape(data, (5, 2))

column = 0
chunks = dict()
chunks[0] = data[data[:, column] < 300]
chunks[1] = data[data[:, column] >= 300]

for i in chunks:
    plt.plot(chunks[i][:, 0], chunks[i][:, 1], "x", label="Chunk %i" % i)

plt.legend()
plt.show()

应基于y值将数据分为多个块。但是发生了一个错误,而不是1为y列输入了0。由于此错误,块0是数据的完整副本,块1为空。因此,所有内容均由第一个plot命令以相同颜色绘制。第二个命令仅将带有不同颜色的标签添加到图例中,因为在块1中没有要绘制的数据。