[编辑:澄清。]
我想绘制多条线,其中一些线属于相同的材料,因此应该具有相同的颜色并共享相同的图例条目。
我为这些标签创建了一个名称向量,但 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()
谢谢!
答案 0 :(得分:1)
这是一种(可能太复杂)绘制每个唯一标签曲线的方法:
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()