在matplotlib中添加动画(艺术家)的图例

时间:2016-12-16 19:31:37

标签: python matplotlib

我用这样的一组图像制作了一个动画(10个快照):enter image description here

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import time

infile = open ('out.txt')

frame_counter = 0

N_p = 100
N_step = 10
N_line = N_p*N_step

for s in xrange(N_step):
        x, y = [], []
        for i in xrange(N_p):
                data = infile.readline()
                raw = data.split()
                x.append(float(raw[0]))
                y.append(float(raw[1]))

        xnp = np.array(x)
        ynp = np.array(y)

        fig = plt.figure(0)
        ax = fig.add_subplot(111, aspect='equal')
        for x, y in zip(xnp, ynp):

                cir = Circle(xy = (x, y), radius = 1)
                cir.set_facecolor('red')
                ax.add_artist(cir)
                cir.set_clip_box(ax.bbox)

                ax.set_xlim(-10, 150)
                ax.set_ylim(-10, 150)
        fig.savefig("step.%04d.png" % frame_counter)
        ax.remove()
        frame_counter +=1

现在我想为显示时间步长的每个图像添加一个图例。 为此,我必须为这10幅图像中的每一幅设置图例。问题是我测试了不同的东西,比如 ax.set_label cir.set_label ,...... 我得到这样的错误:

 UserWarning: No labelled objects found. Use label='...' kwarg on individual plots

根据这个错误,我必须在我的个人情节中添加标签,但由于这是艺术家的情节,我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

如果出于某种原因需要legend,您可以将Circle显示为句柄,并使用一些文字作为标签。

r.db('libstats').table('flowcells').merge(function (flowcell) {
    return { libraries: flowcell("libraries").eqJoin("library_id", r.db("libraries").table("libraries") ).zip() };
})

如果你真的不需要传奇,你可以使用一些text放置在轴内。

ax.legend(handles=[cir], labels=["{}".format(frame_counter)])