簡體   English   中英

Pyplot 在圖例中顯示不同的顏色,但以相同的顏色繪制

[英]Pyplot shows different colors in legend but plots in same color

我正在嘗試使用 Pyplot 繪制 nstrats 不同的帕累托前沿,但無論我似乎嘗試什么,每個前沿都以相同的顏色出現。 我已經嘗試使用和不使用下面的顏色數組來執行此操作,因為我讀到 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()

我的程序輸出什么:

輸出圖像

嘗試將參數顏色更改為 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 ) 的值。 否則,它將無法工作。

發生這種情況是因為所有內容都是由同一個繪圖命令繪制的。

下面是一個例子:

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 為 x 列輸入了 0。 由於這個錯誤,chunk 0 是數據的完整副本,chunk 1 是空的。 因此,所有內容都由第一個繪圖命令以相同的顏色繪制。 第二個命令僅將具有不同顏色的標簽添加到圖例中,因為在塊 1 中沒有要繪制的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM