[英]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.