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