猿问

向动画散点图添加图例

我正在用散点图构建动画,该散点图显示了一段时间内多个组的数据。

当我想添加图例时,我能得到的最好的仅显示一组。

样本数据集:


import pandas as pd 


df = pd.DataFrame([

    [1, 'a', 0.39, 0.73],

    [1, 'b', 0.87, 0.94],

    [1, 'c', 0.87, 0.23],

    [2, 'a', 0.17, 0.37],

    [2, 'b', 0.03, 0.12],

    [2, 'c', 0.86, 0.22],

    [3, 'a', 0.01, 0.15],

    [3, 'b', 0.03, 0.1],

    [3, 'c', 0.29, 0.19],

    columns=['period', 'group', 'x', 'y']

)

我这样制作动画:


import matplotlib.pyplot as plt

import matplotlib.animation as animation


fig, ax = plt.subplots()


ax.set_xlim(0, 1)

ax.set_ylim(0, 1)

colors = {

'a': 'r',

'b': 'b',

'c': 'g'

        }

scat = ax.scatter([], [],

                c=df['group'].map(colors),

                )


def init():

    scat.set_offsets([])

    return scat,


def update(period):

    scat.set_offsets(df[df['period'] == period][['x', 'y']])

    scat.set_label(df[df['period']  == period]['group'])

    ax.legend([scat], df['group'].unique().tolist(), loc=1)

    ax.set_title(period)

    return scat,


ani = animation.FuncAnimation(fig, update, init_func=init,

                            frames=[1,2,3,4,5],

                            interval=500,

                            repeat=True)


plt.show()

我只在传说中出现了一个小组。


如果仅输入ax.legend(loc=1),它将显示如下内容:


6  a

7  b

8  c

Name: group, dtype:object

数字在每一帧中都会变化。



FFIVE
浏览 178回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答