산점도가 있다고 가정하면 scat = ax.scatter(...)
다음을 수행 할 수 있습니다.
위치를 바꾸다
scat.set_offsets(array)
여기서 array
A는 N x 2
x 및 y 좌표의 모양 배열.
크기 변경
scat.set_sizes(array)
여기서 array
포인트 크기의 1 차원 배열이다.
색을 바꾸다
scat.set_array(array)
여기서 array
colormapped 될 값들의 1 차원 어레이이다.
다음은 애니메이션 모듈을 사용하는 간단한 예 입니다.
필요한 것보다 약간 더 복잡하지만 더 멋진 일을 할 수있는 프레임 워크를 제공해야합니다.
(현재 버전과 호환되도록 2019 년 4 월에 편집 된 코드. 이전 코드는 개정 내역 참조 )
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
class AnimatedScatter(object):
"""An animated scatter plot using matplotlib.animations.FuncAnimation."""
def __init__(self, numpoints=50):
self.numpoints = numpoints
self.stream = self.data_stream()
self.fig, self.ax = plt.subplots()
self.ani = animation.FuncAnimation(self.fig, self.update, interval=5,
init_func=self.setup_plot, blit=True)
def setup_plot(self):
"""Initial drawing of the scatter plot."""
x, y, s, c = next(self.stream).T
self.scat = self.ax.scatter(x, y, c=c, s=s, vmin=0, vmax=1,
cmap="jet", edgecolor="k")
self.ax.axis([-10, 10, -10, 10])
return self.scat,
def data_stream(self):
"""Generate a random walk (brownian motion). Data is scaled to produce
a soft "flickering" effect."""
xy = (np.random.random((self.numpoints, 2))-0.5)*10
s, c = np.random.random((self.numpoints, 2)).T
while True:
xy += 0.03 * (np.random.random((self.numpoints, 2)) - 0.5)
s += 0.05 * (np.random.random(self.numpoints) - 0.5)
c += 0.02 * (np.random.random(self.numpoints) - 0.5)
yield np.c_[xy[:,0], xy[:,1], s, c]
def update(self, i):
"""Update the scatter plot."""
data = next(self.stream)
self.scat.set_offsets(data[:, :2])
self.scat.set_sizes(300 * abs(data[:, 2])**1.5 + 100)
self.scat.set_array(data[:, 3])
return self.scat,
if __name__ == '__main__':
a = AnimatedScatter()
plt.show()
당신은 OSX에와 OSX 백엔드를 사용하는 경우, 당신은 변경해야합니다 blit=True
에 blit=False
에 FuncAnimation
아래의 초기화. OSX 백엔드는 블리 팅을 완전히 지원하지 않습니다. 성능이 저하되지만 블리 팅이 비활성화 된 OSX에서 예제가 올바르게 실행되어야합니다.
색상 만 업데이트하는 간단한 예제는 다음을 참조하십시오.
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()