簡體   English   中英

matplotlib設置圖例的顏色

[英]matplotlib set color of legend

我正在使用matplot lib生成一個繪圖,通過執行以下操作繪制許多點(〜幾千):

labels = []
for item in items:
        label = item[0]
        labels.append(label)
        plt.plot(item[1][0], item[1][1], 'ro', c = colors[item], label = str(label))

然后通過執行以下操作生成圖例:

plt.legend([str(x) for x in np.unique(labels)])

但是,對於圖例中的每個標簽,相應的顏色是相同的(不是圖中的顏色)。 有沒有辦法手動設置圖例的顏色。

我附上了一個樣本圖來說明問題。 在此輸入圖像描述

--EDIT--只是按照某些人的建議調用plt.legend()似乎並沒有為我解決問題,它為每個點添加了一個圖例條目。 有關示例輸出,請參見下圖: 在此輸入圖像描述

這應該工作:

labels = []
for item in items:
    label = item[0]
    plt.plot(item[1][0], item[1][1], 'o', c=colors[item], label=str(label))
plt.legend()

如果在創建藝術家時直接指定標簽(在調用plot ),則可以不帶參數調用plt.legend() 它將遍歷當前軸中的藝術家並使用他們的標簽。 這樣,圖例中的顏色將與圖中的顏色相匹配。

您還可以創建假行標記並將其用作圖例條目:

markers = [plt.Line2D([0,0],[0,0], color=color[item], marker='o', linestyle='') for item in np.unique(items)]
plt.legend(markers, np.unique(labels), numpoints=1)

你可以在這個答案中看到一個完整的例子。

請注意,我沒有對此進行測試,您可能需要將np.unique(items)調整為實際數據集。 color被假定為帶有顏色的字典。

暫無
暫無

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

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