Как сделать анимацию в SymPy с помощью Matplotlib (Python)

РЕДАКТИРОВАТЬ

Я постараюсь быть более точным (вышеупомянутые детали были удалены за ненадобностью):

Я хочу сделать анимацию, в которой (красный) мяч отходит от (0,0) и рисует функцию sin(x). Функция должна быть нарисована синим цветом, а ведущая точка должна быть красной (как показано на рисунке выше).

Я нашел способ рисовать (анимировать) функцию:

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

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'bo')

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True)
plt.show()

Теперь моя проблема заключается в том, как сделать ведущую точку красной.

Мне сказали, что я должен создать пустой список элементов строки и использовать метод "append()" для добавления новых элементов строки, но я до сих пор не понимаю, как это сделать.

Ссылка https://www.physicsforums.com/threads/how-to-make-an-animation-in-sympy-using-python.969906/

Спасибо за помощь.

Добавляйте код вместо изображений, чтобы было проще воспроизвести то, что вы показали (и улучшить это).

David 12.04.2019 06:31

@ Дэвид, я так и сделал. Что-нибудь еще я могу сделать?

Scientist 13.04.2019 15:24
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
593
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определенно, есть лучшие способы:

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

points = 50

x = np.linspace(0, 2 * np.pi, points)
y = np.sin(x)

fig, ax = plt.subplots()
ax.set_xlim(-0.3, 2 * np.pi + 0.3)
ax.set_ylim(-1.2, 1.2)

def animate(i):

    if i == 0:
#        fig.clear()
        ax.plot(x[i], y[i], 'ro')
    else:
#        fig.clear()
        ax.plot(x[i-1], y[i-1], 'bo')
        ax.plot(x[i], y[i], 'ro')

anim = FuncAnimation(fig, animate, frames=points, repeat=False, interval=150)

plt.show()

Другие вопросы по теме

Похожие вопросы