Gre*_*ier 3 python colors matplotlib
我似乎无法通过 RGB 定义更改 Matplotlib 散点图的颜色。我错了吗?
这是一个代码(已经在堆栈溢出中给出),它使用浮点数索引的颜色:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
def main():
numframes = 100
numpoints = 10
color_data = np.random.random((numframes, numpoints))
x, y, c = np.random.random((3, numpoints))
fig = plt.figure()
scat = plt.scatter(x, y, c=c, s=100)
ani = animation.FuncAnimation(fig, update_plot, frames=range(numframes),
fargs=(color_data, scat))
plt.show()
def update_plot(i, data, scat):
scat.set_array(data[i])
return scat,
main()
Run Code Online (Sandbox Code Playgroud)
但是如果color_data
是通过 RGB 颜色定义的,则会出现错误:
ValueError:集合只能映射排名 1 的数组
相关代码如下(在这段代码中,我只是每次改变一个样本的颜色):
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
def main():
numframes = 100
numpoints = 10
rgb_color_data = np.random.random((numpoints, 3))
x, y = np.random.random((2, numpoints))
fig = plt.figure()
scat = plt.scatter(x, y, c=rgb_color_data, s=100) #this work well at this level
ani = animation.FuncAnimation(fig, update_plot2, frames=range(numframes),
fargs=(rgb_color_data, scat))
plt.show()
def update_plot2(i,data,scat):
data[ i%10 ] = np.random.random((3))
scat.set_array(data) # this fails
return scat,
main()
Run Code Online (Sandbox Code Playgroud)
有没有办法set_array
与 RGB 颜色阵列一起使用?
不确定你想要达到的目标。但是如果你想改变颜色,为什么不使用 的set_color()
功能Collection
呢?
def update_plot2(i,data,scat):
data[ i%10 ] = np.random.random((3))
scat.set_color(data) # <<<<<<<<<<<<<<<<<<<
return scat,
Run Code Online (Sandbox Code Playgroud)