簡體   English   中英

matplotlib 圖例多次顯示相同的標簽(使用 label 向量)

[英]matplotlib legend shows same labels multiple times (using a label vector)

[編輯:澄清。]

我想 plot 多條線,其中一些屬於相同的材料,因此應該具有相同的顏色並共享相同的圖例條目。 我為這些標簽創建了一個名稱向量,但是 matplotlib 仍然為每一行分配一個單獨的圖例條目,盡管它們共享相同的名稱字符串。
如何將一個類別的數據合並到一個圖例條目中?

示例
我希望描繪“治療”的兩條線具有相同的顏色並共享相同的圖例條目:

import numpy as np
import matplotlib.pyplot as plt

a = np.array([[1.1, 1.7, 2.2, 3, 4.1, 5.5],
             [1, 2.2, 3.3, 4.4, 4.6, 5],
             [2.5, 3.8, 5.2, 7.3, 8.4, 8.5]])
x = np.linspace(0, 6, num=6)
names = ['Treatment', 'Treatment', 'Control']
for i in range (len(a)):
    plt.plot(x, a[i].T, label=names[i])
plt.legend()
plt.show()

示例圖

謝謝!

這是一種(可能太復雜)根據獨特的 label 繪制曲線的方法:

import numpy as np
import matplotlib.pyplot as plt

a = np.array([[1.1, 1.7, 2.2, 3, 4.1, 5.5],
              [1, 2.2, 3.3, 4.4, 4.6, 5],
              [2.5, 3.8, 5.2, 7.3, 8.4, 8.5]])
x = np.linspace(0, 6, num=6)
names = ['Treatment', 'Treatment', 'Control']

unique_names = np.unique(names)
colors = plt.cm.get_cmap('Set1').colors
for unique_name, color in zip(unique_names, colors):
    label = unique_name
    for ai, name in zip(a, names):
        if name == unique_name:
            plt.plot(x, ai.T, label=label, color=color)
            label = None  # set to None when used once
plt.legend()
plt.show()

示例圖

暫無
暫無

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

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