вместо двухцветного графика отображается только один цветовой график. в матплотлибе - PullRequest
0 голосов
/ 02 апреля 2020

Если вы запустите этот код, вы поймете мою проблему. Я хочу видеть красный и желтый график на основе значения в списке z, но. для всех точек отображается только один цвет.

import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style

style.use("ggplot")
x = [1,2,3,4,5,6,7,8,9,10,15]
y = [6,5,7,2,9,8,3,4,1,10,15]
z = [1,1,2,2,2,1,1,2,1,2,1]
x_vals = []
y_vals = []
z_vals = []
fig = plt.figure()
ax1 = plt.subplot(111)

def animate(i,x_vals,y_vals,z_vals):
    print("i:",i)
    x_vals.append(x[i])
    y_vals.append(y[i])
    z_vals.append(z[i])
    ax1.clear()
    if z_vals[i] == 1:
        l1, = ax1.plot(x_vals, y_vals, 'ro')
    if z_vals[i] == 2:
        l2, = ax1.plot(x_vals, y_vals, 'yo')
    ax1.tick_params(axis='x')
    plt.xticks(x_vals, x_vals)

print("Animedotted")
line_ani = animation.FuncAnimation(fig, animate, fargs=(x_vals, y_vals, z_vals), interval=1000, blit = False)
plt.show()

1 Ответ

0 голосов
/ 02 апреля 2020

Если я правильно понимаю, вы хотите точки обоих цветов на каждой итерации?

в вашей функции animate вы делаете ax.clear, поэтому на каждой итерации удаляются все точки.

Кроме того,

if z_vals[i] == 1:
    l1, = ax1.plot(x_vals, y_vals, 'ro')
if z_vals[i] == 2:
    l2, = ax1.plot(x_vals, y_vals, 'yo')

делает вас может иметь только один цвет.

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