码迷,mamicode.com
首页 > 其他好文 > 详细

matplotlib画动态散点图

时间:2014-10-30 22:43:16      阅读:905      评论:0      收藏:0      [点我收藏+]

标签:blog   io   color   ar   for   on   2014   art   log   

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()

  # Setup the figure and axes...
  self.fig, self.ax = plt.subplots()
  # Then setup FuncAnimation.
  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)
  self.scat = self.ax.scatter(x, y, c=c, s=s, animated=True)
  self.ax.axis([-10, 10, -10, 10])

  # For FuncAnimation's sake, we need to return the artist we'll be using
  # Note that it expects a sequence of artists, thus the trailing comma.
  return self.scat,

 def data_stream(self):
  """Generate a random walk (brownian motion). Data is scaled to produce
  a soft "flickering" effect."""
  data = np.random.random((4, self.numpoints))
  xy = data[:2, :]
  s, c = data[2:, :]
  xy -= 0.5
  xy *= 10
  while True:
   xy += 0.03 * (np.random.random((2, self.numpoints)) - 0.5)
   s += 0.05 * (np.random.random(self.numpoints) - 0.5)
   c += 0.02 * (np.random.random(self.numpoints) - 0.5)
   yield data

 def update(self, i):
  """Update the scatter plot."""
  data = next(self.stream)

  # Set x and y data...
  self.scat.set_offsets(data[:2, :])
  # Set sizes...
  self.scat._sizes = 300 * abs(data[2])**1.5 + 100
  # Set colors..
  self.scat.set_array(data[3])

  # We need to return the updated artist for FuncAnimation to draw..
  # Note that it expects a sequence of artists, thus the trailing comma.
  return self.scat,

 def show(self):
  plt.show()

if __name__ == '__main__':
 a = AnimatedScatter()
 a.show()

一个简单的例子:

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=xrange(numframes),
         fargs=(color_data, scat))
 plt.show()

def update_plot(i, data, scat):
 scat.set_array(data[i])
 return scat,

main()


matplotlib画动态散点图

标签:blog   io   color   ar   for   on   2014   art   log   

原文地址:http://blog.csdn.net/yapian8/article/details/40627505

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!