Обновление точечного графика с соединительной линией (matplotlib) - PullRequest
0 голосов
/ 18 октября 2018

Я использую функцию обновления графика, чтобы сделать симуляцию орбиты Марса и Земли с использованием Matplotlib, но я пытаюсь провести линию, соединяющую эти два, чтобы она могла описать ретроградное движение Марса.Как добавить функцию plt.plot () в _update_plot?

def _update_plot(i, fig, scat):
        scat.set_offsets(([math.cos(math.radians(i))*5, math.sin(math.radians(i))*5], [math.cos(math.radians(i/2))*10, math.sin(math.radians(i/2))*10], [0, 0]))
        print('Frames: %d' %i)

        return scat*

    fig = plt.figure()

    x = [0]
    y = [0]

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

    scat = plt.scatter(x, y, c = x)
    scat.set_alpha(0.8)

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

    plt.show()

1 Ответ

0 голосов
/ 18 октября 2018

Это то, что вы имели в виду?

import math
def _update_plot(i, fig, scat, l):
        scat.set_offsets(([math.cos(math.radians(i))*5, math.sin(math.radians(i))*5], [math.cos(math.radians(i/2))*10, math.sin(math.radians(i/2))*10], [0, 0]))
        l.set_data(([math.cos(math.radians(i))*5,math.cos(math.radians(i/2))*10],[math.sin(math.radians(i))*5,math.sin(math.radians(i/2))*10]))
        return [scat,l]

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([-11, 11])
ax.set_ylim([-11, 11])

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

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

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...