在matplotlib python中组合静态绘图和动画绘图

时间:2016-08-11 21:23:38

标签: python matplotlib

我有一个静态图,它可以一步计算并动态更新图(动画)。我的代码正确显示但在不同的窗口中,如何在一个绘图窗口中将其组合。

我正在为同时制作两个地块的动画制作解决方案,但没有任何一个静态和另一个动态

的解决方案
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import math

E50 = 5000

c = 5
phi = math.radians(30)
sig3 = 100
a = c/math.tan(phi)
# deviatoric load
qa = (sig3+a)*(2*math.sin(phi))/(1-math.sin(phi))
print(qa)

ultimateLoad = 200

def hyperbola():
    stress = []
    strain = []
    q = 0
    while q < ultimateLoad:
        stress.append(q)
        eps1 = (qa/(2*E50))   *   (q/(qa-q))
        strain.append(eps1)
        q +=10
    return strain, stress

def plotHyperbola():
    strain, stress = hyperbola()
    plt.plot(strain, stress ,'bo', linewidth=5, label='Existing Kernel' )

def data_gen():
    load = 0
    while load < ultimateLoad:
        load += 10
        # finally this yield function should give x any that needs to be plotted
        yield load/5000, load


def init():
    ax.set_ylim(-1.1, 300)
    ax.set_xlim(0, 0.1)
    del xdata[:]
    del ydata[:]
    line.set_data(xdata, ydata)
    return line,

fig, ax = plt.subplots()
line, = ax.plot([], [], 'ro', lw=2)
ax.grid()
xdata, ydata = [], []


def run(data):
    # update the data
    t, y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()
    plotHyperbola()
    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)

    return line,

# interval control the time in between each iteration
# repeat whether the whole process needs to be repeated
ani = animation.FuncAnimation(fig, run, data_gen,  interval=1,
                              repeat=False, init_func=init)
plt.show()

0 个答案:

没有答案