当前位置: 首页 > 面试题库 >

Python:matplotlib-循环,清除并显示同一图上的不同图

洪楚
2023-03-14
问题内容

我想看看使用循环如何绘制不同值的图形。我想在同一情节上看到它。但我不想保留图中的前一个图。在MATLAB中,可以通过创建图形并在同一图形上绘图来实现。循环结束时将其关闭。

喜欢,

fh = figure();
%for loop here
%do something with x and y    
subplot(211), plot(x);
subplot(212), plot(y); 
pause(1)
%loop done
close(fh);

我在matplotlib中找不到与此等效的文件。通常,所有问题都与在同一图上绘制不同系列有关,这似乎在matplotlib上很自然,方法是使用来绘制多个序列plt.plot(),最后使用来显示所有序列plt.show()。但是我想刷新剧情。


问题答案:

在matplotlib中创建动画基本上有两种方法

互动模式

使用打开更多互动功能plt.ion()。即使show尚未调用,也会创建一个图。可以通过调用plt.draw()或为动画更新图plt.pause()

import matplotlib.pyplot as plt

x = [1,1]
y = [1,2]

fig, (ax1,ax2) = plt.subplots(nrows=2, sharex=True, sharey=True)
line1, = ax1.plot(x)
line2, = ax2.plot(y)
ax1.set_xlim(-1,17)
ax1.set_ylim(-400,3000)
plt.ion()

for i in range(15):
    x.append(x[-1]+x[-2])
    line1.set_data(range(len(x)), x)
    y.append(y[-1]+y[-2])
    line2.set_data(range(len(y)), y)

    plt.pause(0.1)

plt.ioff()    
plt.show()

功能动画

Matplotlib提供了一个动画子模块,该子模块简化了动画的创建,并允许轻松地保存它们。与上面相同,使用FuncAnimation如下所示:

import matplotlib.pyplot as plt
import matplotlib.animation

x = [1,1]
y = [1,2]

fig, (ax1,ax2) = plt.subplots(nrows=2, sharex=True, sharey=True)
line1, = ax1.plot(x)
line2, = ax2.plot(y)
ax1.set_xlim(-1,18)
ax1.set_ylim(-400,3000)


def update(i):
    x.append(x[-1]+x[-2])
    line1.set_data(range(len(x)), x)
    y.append(y[-1]+y[-2])
    line2.set_data(range(len(y)), y)

ani = matplotlib.animation.FuncAnimation(fig, update, frames=14, repeat=False)   
plt.show()

下面是一个使频率和功率谱变化的正弦波动画的示例:

import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np

x = np.linspace(0,24*np.pi,512)
y = np.sin(x)

def fft(x):
    fft = np.abs(np.fft.rfft(x))
    return fft**2/(fft**2).max()

fig, (ax1,ax2) = plt.subplots(nrows=2)
line1, = ax1.plot(x,y)
line2, = ax2.plot(fft(y))
ax2.set_xlim(0,50)
ax2.set_ylim(0,1)

def update(i):
    y = np.sin((i+1)/30.*x)
    line1.set_data(x,y)
    y2 = fft(y)
    line2.set_data(range(len(y2)), y2)

ani = matplotlib.animation.FuncAnimation(fig, update, frames=60, repeat=True)  
plt.show()


 类似资料:
  • 我(目前)有三个按钮 使用这些按钮,我想显示不同的菜单/覆盖。覆盖图如下所示: 这方面的JS是: 我的问题是只有菜单1正在显示。脚本可以正常工作,但是menu2和menu3没有显示。 我想这一定是缺少的东西。也许是a$(this)什么的(对不起我的JS已经不是以前的样子了)。我在中循环,然后从google chrome dev中点击了“Right”按钮(我想,很难说出来)。 预期结果:如果我按下按

  • 此方法重复读取命令并执行它们,直到游戏结束。完成的变量为true时,表示玩家/用户点击了退出并想要结束游戏——从而退出循环并执行到方法结束。 但我观察到循环有一种奇怪的行为。它循环得非常好(省略以下行时显示stopWatch.getTime()的连续计数: 但是当我把它们放回去时,它会停止显示秒表的连续递增时间,因为它会朝着时间限制增加(在这一点上,它应该停止)。即使玩家没有输入任何命令或输入。

  • 这只是为了漏洞测试的目的 只是为了找到克服XSS攻击的方法 如果textbox字段为空,我将尝试显示错误消息。 但是当我单击submit按钮时,它只在另一个(db_connection.php)页面上显示错误消息,尽管它没有将数据插入到我的数据库中。我希望它在与表单相同的页面上显示错误消息。 这是我的index.php 这是我的db_connection.php

  • 我在制作这个项目网站的时候,突然想到要制作一个弹出框来显示产品的描述。当我制作弹出式消息框时,它会出现在单击不同的图像时,我看到它会显示不同产品的相同消息,即使在对每种产品给出不同的描述之后也是如此。我不太懂JavaScript,但我想必须在那里添加一些代码。 这里是代码- 这是我从codepen中获取的模板。木卫一。

  • 问题内容: 我有一个关于在Python 3中使用循环在同一行上打印的问题。我搜索了答案,但找不到任何相关内容。 所以,我有这样的事情: 当用户键入“短句”时,该功能应该对其进行处理,并应将其打印在同一行上。假设该函数在每个单词的末尾添加了“ t”,因此输出应为 但是,目前的输出是: 如何轻松在同一行上打印结果?还是我应该做一个新的字符串 它被迭代,最后我打印出来? 问题答案: 在函数中使用参数 还

  • 我在sencha touch 2中创建了一个索引页面,在其中我在容器内创建了一些自定义按钮 这些按钮看起来像这个 单击橙色按钮后,我想显示一个新视图。 我尝试了ext.Navigation view,但它不是我想要的。我必须在按钮上添加一个事件监听器,还是我必须做一些其他事情请建议 我在controller文件夹main.js中创建了一个新控制器 还有我的新视图Eligibelity.js代码 还