我試圖在此動畫中爲每個點獲取不同的顏色。我想傳遞數組c_state作爲每個點的hsv元組的hue值。到目前爲止,我嘗試過的一切都失敗我在animate函數嘗試使用這樣的:matplotlib動畫中的數組的不同顏色點
particles.set_color(pbox.color[:,0],1.0,1.0)
但我得到警告說,只有長度爲1的陣列可以轉換爲標量。 我也嘗試使用np.random製作長度爲3的數組,並試圖將它們轉換爲rgb-tuples,但那也不起作用。我很難找到正確的數據結構傳遞給ax.plot的顏色變量。 顏色只需設置一次,在動畫過程中不需要更改。
import matplotlib.pyplot as plt
import matplotlib.animation as anim
import numpy as np
import colorsys
from random import random
n = 250
class ParticleBox:
def __init__(self,i_state,c_state):
self.i_state = np.asarray(i_state, dtype=float)
self.c_state = np.asarray(c_state, dtype=float)
self.state = self.i_state.copy()
self.color = self.c_state.copy()
i_state = -5 + 10 * np.random.random((n, 2))
c_state = np.random.random((n, 1))
pbox = ParticleBox(i_state, c_state)
fig = plt.figure()
ax = fig.add_subplot(111, xlim=(-10,10), ylim=(-10,10))
particles, = ax.plot([], [], 'o', ms=5)
def init():
global pbox
particles.set_data([],[])
return particles,
def animate(i):
global pbox, ax, fig
particles.set_data(pbox.state[:,0],pbox.state[:,1])
return particles,
ani = anim.FuncAnimation(fig, animate, frames = 500,
interval = 10, blit=True,
init_func=init)
plt.show()
*如何*已經失敗了,那麼遠? – SiHa
我編輯了這個問題。 – Ebo