Lagless interactive graph

15 days ago by viktorzk

# I just noticed that this doesn't work in Internet Explorer, so I should probably state that I have only tried it with Firefox. 
       
def jslider(f,start,end,num_steps): # Draw a tile for the slider import Image, ImageDraw img=Image.new("RGB",(3,20)) draw = ImageDraw.Draw(img) draw.line(((2,0),(2,19)),(255,255,255)) img.save("data/jslider_tile.png", "PNG") step_size=(end-start)/num_steps for i in range(num_steps+1): f(start+i*step_size).save(DATA+'jslider_%d.png'%i) html(""" <script> function jslider_switch(n) { document.getElementsByClassName('jslider_image')[0].src='data/jslider_'+n+'.png'; } </script> """) def tile_html(n): #Returns the html code for the (n)th tile of the slider return '<img src="data/jslider_tile.png" onMouseover="jslider_switch(%d)">'%n slider_html="" for i in range(num_steps+1): slider_html=slider_html+tile_html(i) html(slider_html) html('<img src="data/jslider_0.png" class="jslider_image">') jslider(lambda a:plot(lambda x:sin(a*x),xmin=0,xmax=pi,ymin=-1,ymax=1),0,5,50) # This can take a minute or two. 
       

        
        


        
        

def load_images(num_steps): def frame_html(n): return '<img src="data/jslider_%d.png">'%n cmd="" for i in range(num_steps+1): cmd=cmd+frame_html(i) html(cmd) load_images(50)