在matplotlib中自定义图例

时间:2016-01-24 16:25:44

标签: python matplotlib plot

我正在绘制matplotlib中具有不同颜色的矩形。我希望每种类型的矩形都有一个在图例中出现一次的标签。我的代码是:

import matplotlib.patches as patches
fig1 = plt.figure()
ax = plt.subplot(1,1,1)
times = [0, 1, 2, 3, 4]
for t in times:
    if t % 2 == 0:
        color="blue"
    else:
        color="green"
    ax.add_patch(patches.Rectangle((t, 0.5), 0.1, 0.1,
                                   facecolor=color,
                                   label=color))
plt.xlim(times[0], times[-1] + 0.1)
plt.legend()
plt.show()

问题是每个矩形在图例中出现多个。我想在图例中只有两个条目:一个标有“蓝色”的蓝色矩形和一个标有“绿色”的绿色矩形。怎么能实现呢?

1 个答案:

答案 0 :(得分:0)

如文档https://biztalkdeployment.codeplex.com/所示,您可以通过指定图形对象的句柄来控制图例。在这种情况下,需要五个对象中的两个,因此您可以将它们存储在字典中

import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig1 = plt.figure()
ax = plt.subplot(1,1,1)
times = [0, 1, 2, 3, 4]
handle = {}
for t in times:
    if t % 2 == 0:
        color="blue"
    else:
        color="green"
    handle[color] = ax.add_patch(patches.Rectangle((t, 0.5), 0.1, 0.1,
                                   facecolor=color,
                                   label=color))
plt.xlim(times[0], times[-1] + 0.1)
print handle
plt.legend([handle['blue'],handle['green']],['MyBlue','MyGreen'])
plt.show()

here