>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.
DanoMagnum.com