With Octave I am able to plot arrays to the terminal, for example, plotting an array with values for the function x^2
gives this output in my terminal:
10000 ++---------+-----------+----------+-----------+---------++ ++ + + + + ++ |+ : : : : +| |++ : : : : ++| | + : : : : + | | ++ : : : : ++ | 8000 ++.+..................................................+.++ | ++ : : : : ++ | | ++ : : : : ++ | | + : : : : + | | ++ : : : : ++ | | + : : : : + | 6000 ++....++..........................................++....++ | ++ : : : : ++ | | + : : : : + | | ++ : : : : ++ | | ++: : : :++ | 4000 ++........++..................................++........++ | + : : + | | ++ : : ++ | | :++ : : ++: | | : ++ : : ++ : | | : ++ : : ++ : | 2000 ++.............++........................++.............++ | : ++ : : ++ : | | : +++ : : +++ : | | : ++ : : ++ : | | : +++: :+++ : | + + ++++ ++++ + + 0 ++---------+-----------+----------+-----------+---------++ 0 20000 40000 60000 80000 100000
Is there some way I can do something similar in Python, specifically with matplotlib? bashplotlib seems to offer some of this functionality but appears to be quite basic compared to Octave's offering.
The plot() function is used to draw points (markers) in a diagram. By default, the plot() function draws a line from point to point.
Graphs in Python can be plotted by using the Matplotlib library. Matplotlib library is mainly used for graph plotting. You need to install matplotlib before using it to plot graphs. Matplotlib is used to draw a simple line, bargraphs, histograms and piecharts.
As @Benjamin Barenblat pointed out, there is currently no way using matplotlib. If you really want to use a pure python library, you may check ASCII Plotter. However, as I commented above, I would use gnuplot as suggested e.g. in this question.
To use gnuplot directly from python you could either use Gnuplot.py (I haven't tested this yet) or use gnuplot with the scripting interface. Latter can be realised (as suggested here) like:
import numpy as np x=np.linspace(0,2*np.pi,10) y=np.sin(x) import subprocess gnuplot = subprocess.Popen(["/usr/bin/gnuplot"], stdin=subprocess.PIPE) gnuplot.stdin.write("set term dumb 79 25\n") gnuplot.stdin.write("plot '-' using 1:2 title 'Line1' with linespoints \n") for i,j in zip(x,y): gnuplot.stdin.write("%f %f\n" % (i,j)) gnuplot.stdin.write("e\n") gnuplot.stdin.flush()
This gives a plot like
1 ++--------+---A******---------+--------+---------+---------+--------++ + + ** +A* + + + Line1 **A*** + 0.8 ++ ** * ++ | ** ** | 0.6 ++ A * ++ | * * | 0.4 ++ * ++ | ** A | 0.2 ++* * ++ |* * | 0 A+ * A ++ | * * | -0.2 ++ * * ++ | A* ** | -0.4 ++ * * ++ | ** * | -0.6 ++ * A ++ | * ** | -0.8 ++ ** ++ + + + + + A****** ** + + -1 ++--------+---------+---------+--------+--------A+---------+--------++ 0 1 2 3 4 5 6 7
Some styling options can be found e.g. here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With