>Asciigraph 

Last Edit: Dec. 21, 2010, 9:52 p.m.

I was playing around today, and I made a little python script that can graph functions in the terminal. It could be nicer, but I'm happy enough with it. Here's some sample output:

It can graph functions from 0 to any number (you'd want a limit so it doesn't wrap). This is a graph of sin(x)

compare.functiontogrid(function=lambda x:math.sin(x),maxx=6,scale=10,marks=15)

 +1.0|                                                                       
 +0.9|            XXXXXXXXX                                                  
 +0.8|          XX         XX                                                
 +0.7|        XX             X                                               
 +0.6|       X                X                                              
 +0.5|      X                  XX                                          X 
 +0.4|     X                     X                                       XX  
 +0.3|    X                       X                                     X    
 +0.2|   X                         X                                   X     
 +0.1|  X                           X                                 X      
 +0.0|XX-----------------------------XX-----------------------------XX-------
 -0.1|                                 X                           X         
 -0.2|                                  X                         X          
 -0.3|                                   X                       X           
 -0.4|                                    X                     X            
 -0.5|                                     X                   X             
 -0.6|                                      XX                X              
 -0.7|                                        X             XX               
 -0.8|                                         XX         XX                 
 -0.9|                                           XXXXXXXXX                   
 -1.0|                                                                       
     |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  
     | 0.4 0.8 1.2 1.6 2.0 2.4 2.8 3.2 3.6 4.0 4.4 4.8 5.2 5.6 6.0 6.4 6.8  


It can do a comparison bar-graph to visually compare numbers. It has three modes, and can handle negative numbers.

lst = ["one","two","longest","short"]
val = [-1,5,-3,4]
compare.doitall(lst,val)

longest:-0.23%:                         #######                               :
  one  :-0.08%:                              ##                               :
 short :+0.31%:                                ########                       :
  two  :+0.38%:                                ###########                    :

val = [1,2,3,4]
compare.doitall(lst,val)

  one  :0.10%:######                                                          :
  two  :0.20%:############                                                    :
longest:0.30%:###################                                             :
 short :0.40%:#########################                                       :

The last thing it can do is graph scatter plots

nums = range(20) + range(20) + range(20)
x = random.sample(nums,50)
y = random.sample(nums,50)

out = compare.coordstogrid(x,y,marks=6)

+19.0|                    
+18.0|    X X             
+17.0|   X         X      
+16.0|  X    X     X      
+15.0|       XX      X    
+14.0|X           X       
+13.0| X    X             
+12.0|              X X   
+11.0|   X X              
+10.0|          X X     X 
 +9.0|     X   X      X   
 +8.0|   X             X  
 +7.0|  X     X           
 +6.0|                    
 +5.0|    XX              
 +4.0| X  X  X            
 +3.0|          X   X     
 +2.0|        X X       X 
 +1.0|           X     X  
 +0.0|X-------------X-----
     |  |  |  |  |  |  | 
     |  3  6  9 12 15 18 


Here are the files. Compare.py is the actual file, example.py has some examples.

1.) big government and big business are not natural enemies
2.) one party pretends to fight big government
3.) one party pretends to fight big business
4.) people choose a party
5.) the winners are big government and big business