在pyQt matplotlib中嵌入_update_plot函数

时间:2019-03-21 09:00:11

标签: python matplotlib pyqt

这是我要放入pyqt5窗口的更新绘图程序。

我找不到使用_update_plot函数的示例,它们都使用update_figure或带有计时器的draw函数,而我的示例使用以指定速率更新的i变量。

感谢任何帮助/建议

程序:

import math
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
from matplotlib.widgets import Slider, Button, RadioButtons
from matplotlib import style

style.use('seaborn-poster')
def _update_plot(i, fig, scat, l,l2):

        M = ((math.sin(math.radians(i))*7.5)-(math.sin(math.radians(i/2))*9))/((math.cos(math.radians(i))*7.5)-(math.cos(math.radians(i/2))*9))

        g = M*(15-(math.cos(math.radians(i/2))*9))+(math.sin(math.radians(i/2))*9)


        scat.set_offsets(([math.cos(math.radians(i))*7.5, math.sin(math.radians(i))*7.5], [math.cos(math.radians(i/2))*9, math.sin(math.radians(i/2))*9], [0, 0]))

        if (i>=540) or (i<=180):
                l.set_data(([math.cos(math.radians(i))*7.5,math.cos(math.radians(i/2))*9],[math.sin(math.radians(i))*7.5,math.sin(math.radians(i/2))*9]))
                l2.set_data(([math.cos(math.radians(i/2))*9,15],[math.sin(math.radians(i/2))*9,g]))
        else:
                l.set_data(([0,0],[0,0]))
                l2.set_data(([0,0],[0,0]))


        return [scat,l,l2]



fig = plt.figure()


x = [0]
y = [0]

ax = fig.add_subplot(111)
ax.set_aspect('equal')
ax.grid(True, linestyle = '-', color = '0.10')
ax.set_xlim([-15, 15])
ax.set_ylim([-15, 15])

l, = plt.plot([],[], '-', zorder=1)
l2, = plt.plot([],[], '-', zorder=2)
scat = plt.scatter(x, y, c = x, zorder=3)
scat.set_alpha(0.8)

anim = animation.FuncAnimation(fig, _update_plot, fargs = (fig, scat, l,l2),
                               frames = 720, interval = 10)

plt.show()

0 个答案:

没有答案