如何为子图绘制动画图例?

2024-02-03

我想用 ArtistAnimation 绘制动画子图。不幸的是,我不知道如何拥有一个动画传奇。我尝试了在 StackOverflow 上找到的不同方法。如果我设法获得图例,它不是动画的,而只是所有动画步骤的图例。

我的代码如下所示:

import numpy as np
import pylab as pl
import matplotlib.animation as anim

fig, (ax1, ax2, ax3) = pl.subplots(1,3,figsize=(11,4))
ims   = []
im1   = ['im11','im12','im13']
im2   = ['im21','im22','im23']
x = np.arange(0,2*np.pi,0.1)

n=50
for i in range(n):
    for sp in (1,2,3):
        pl.subplot(1,3,sp)

        y1 = np.sin(sp*x + i*np.pi/n)
        y2 = np.cos(sp*x + i*np.pi/n)

        im1[sp-1], = pl.plot(x,y1)
        im2[sp-1], = pl.plot(x,y2)

        pl.xlim([0,2*np.pi])
        pl.ylim([-1,1])

        lab = 'i='+str(i)+', sp='+str(sp)
        im1[sp-1].set_label([lab])
        pl.legend(loc=2, prop={'size': 6}).draw_frame(False)

    ims.append([ im1[0],im1[1],im1[2], im2[0],im2[1],im2[2] ])

ani = anim.ArtistAnimation(fig,ims,blit=True)
pl.show()

我认为这段代码等同于这里使用的方法如何在Python动画中添加图例/标签 https://stackoverflow.com/questions/35677980/how-to-add-legend-label-in-python-animation但显然我错过了一些东西。

我还尝试按照中的建议设置标签在 matplotlib 中为(艺术家)动画添加图例 https://stackoverflow.com/questions/41191273/add-a-legend-for-an-animation-of-artists-in-matplotlib?rq=1但我真的不明白如何将它用于我的案例。像这样

im2[sp-1].legend(handles='-', labels=[lab])

我得到一个AttributeError: 'Line2D' object has no attribute 'legend'.

[EDIT]:我没有明确说明:我希望图中的两条线都有一个图例。


我不知道图例到底应该是什么样子,但我想你只是想让它显示当前帧中一行的当前值。因此,您最好更新该线的数据,而不是绘制 150 个新图。

import numpy as np
import pylab as plt
import matplotlib.animation as anim

fig, axes = plt.subplots(1,3,figsize=(8,3))
ims   = []
im1   = [ax.plot([],[], label="label")[0] for ax in axes]
im2   = [ax.plot([],[], label="label")[0] for ax in axes]
x = np.arange(0,2*np.pi,0.1)

legs = [ax.legend(loc=2, prop={'size': 6})  for ax in axes]

for ax in axes:
    ax.set_xlim([0,2*np.pi])
    ax.set_ylim([-1,1])
plt.tight_layout()
n=50
def update(i):
    for sp in range(3):
        y1 = np.sin((sp+1)*x + (i)*np.pi/n)
        y2 = np.cos((sp+1)*x + (i)*np.pi/n)

        im1[sp].set_data(x,y1)
        im2[sp].set_data(x,y2)

        lab = 'i='+str(i)+', sp='+str(sp+1)
        legs[sp].texts[0].set_text(lab)
        legs[sp].texts[1].set_text(lab)

    return im1 + im2 +legs 

ani = anim.FuncAnimation(fig,update, frames=n,blit=True)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为子图绘制动画图例? 的相关文章

随机推荐

  • Keras 嵌入层在函数式 API 中具有可变长度

    我有以下适用于可变长度输入的顺序模型 m Sequential m add Embedding len chars 4 name embedding m add Bidirectional LSTM 16 unit forget bias
  • 将运输与 Ruby on Rails 集成

    将运输报价添加到我的购物车的最佳方法是什么 我网站的基本流程是 1 User selects products 2 User is shown cart 3 repeat 1 and 2 until User wants to pay 4
  • PostgreSQL:SELECT DISTINCT ON 表达式必须与初始 ORDER BY 表达式匹配

    假设我有以下 PostgreSQL 表 名为products CREATE TABLE IF NOT EXISTS mytable id serial NOT NULL PRIMARY KEY label VARCHAR 50 NOT NU
  • 为什么我在二叉搜索树中找不到左和右?

    我遇到以下代码片段的问题 using System using System Collections Generic using System Text namespace trees by firas class Program stat
  • 使用$_REQUEST作为数据是错误的吗?

    所以 我已经编码了一点 2年 了 我有一个非常主观的问题 使用 REQUEST作为数据是错误的吗 顺便说一句 这主要与身份验证有关 如果您考虑数据出现的 3 种方式 REQUEST 它可以来自 cookie 表单或查询字符串 现在 我知道大
  • 远程链接中奇怪的下划线参数

    我使用 Rails3 JQuery 和 will paginate gem 来制作远程分页链接 已知的解决方案是 pagination a live click function getScript this href return fal
  • 无法加载文件 %CommonDir%\publish.tlb

    每次我安装并尝试启动 Microsoft Visual Studio 2012 时 都会收到以下弹出窗口 其中包含以下消息 无法加载文件 CommonDir publish tlb 由于找不到该文件 尝试修复此情况失败 请重新安装该程序 我
  • 儒略日期到常规日期的转换

    如何使用 java API 将代表 2013 年 11 月 18 日的儒略日期 2456606 转换为字符串格式 18 11 2013 我尝试执行下面的代码 但它没有给我正确的答案 欢迎对以下代码进行任何更正 String j 245660
  • opencv VideoCapture 在线程中被阻塞

    我需要一些有关在另一个线程中使用 opencv VideoCapture 的帮助 当我使用视频截取 http docs opencv org modules highgui doc reading and writing images an
  • 二维码怎么能存储这么多数据呢?

    快速谷歌搜索结果显示 QR 码可以容纳近 3kb 8 位 数据 但这不就是用黑 白点来表示位吗 如果是这样的话 代码上不可能有超过 20 000 个点 所以我显然是误解了 有人可以解释它是如何工作的吗 电装波says http www de
  • 接受 Rails 使用条款

    在 Rails 应用程序中添加接受使用条款的检查的最佳方法是什么 我似乎无法得到validates acceptance of工作得很好 我在我的用户模型中添加了一个布尔值 有必要吗 然后有一个返回 true false 的复选框 我觉得我
  • AS3 中的 URL 编码变量?

    尝试通过传递变量时出现以下错误URLRequestMethod POST 错误 错误 2101 传递给 URLVariables decode 的字符串必须是包含名称 值对的 URL 编码查询字符串 有没有字符串 URL 编码的方法 Act
  • 如何根据背景图像而不是窗口浏览器来定位图像

    我以前问过这个问题 但似乎没有人明白我在说什么 因为它是书面的 所以我现在只花了 2 分 12 秒 我在视频中说明了我的问题 视频链接 该问题的相关css代码 BackgroundImage position absolute width
  • 加快 Visual Studio 2005 中的编译速度

    对于主要包含 C 项目的解决方案 在 Visual Studio 2005 中加快编译时间的最佳方法是什么 除了预编译标头之外 还有许多其他事情可能会减慢您的速度 病毒检查软件 可能会对构建产生严重影响 如果您正在运行病毒检查程序 请尝试将
  • k-means 的时间复杂度是多少?

    我正在经历k means 维基百科页面 http en wikipedia org wiki K means clustering 根据算法 我认为复杂度是O n k i n 总元素 k 簇迭代次数 那么有人可以向我解释一下维基百科上的这个
  • 没有 pyvenv.cfg 文件

    我做了一个变量cfg waterot cfg然后创建一个新文件 waterot cfg 在 pycharm 中 这会自动生成一个pyvenv cfg文件 我不知道这是什么 我的代码出现错误 我删除了pyvenv cfg文件并更改自 cfg
  • getRootNav() 和 navCtrl() 方法之间的差异

    你能告诉我以下两种方法有什么区别吗 我应该在哪个时刻使用它 book ts this app getRootNav push FromBook bookId this data id this navCtrl push FromBook b
  • 使用 Flask-Security 为每个用户提供唯一的 Salt

    在阅读了一些有关对密码加盐的信息后 似乎最好为每个用户使用唯一的盐 我正在努力实现 Flask Security atm 从文档中看来 您只能设置全局盐 即 SECURITY PASSWORD SALT thesalt 问题 如何为每个密码
  • 如何返回所有列名称/标题(并避免“TypeError:table.columns(...).names不是函数”)?

    我有一个非常相似的问题this one https stackoverflow com questions 24325786 table columns is not a function in datatable js 我创建一个数据表
  • 如何为子图绘制动画图例?

    我想用 ArtistAnimation 绘制动画子图 不幸的是 我不知道如何拥有一个动画传奇 我尝试了在 StackOverflow 上找到的不同方法 如果我设法获得图例 它不是动画的 而只是所有动画步骤的图例 我的代码如下所示 impor