Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Flexible command line tool to create graphs from CSV data (github.com)
95 points by miccah 5 months ago | hide | past | web | favorite | 20 comments

Definitely seems like a nice API on top of matplotlib.

I’ve started using gnuplot a lot after hearing Brendan Gregg mention it a few times. It fills a great niche for making decent graphs without having to write code.


I had largely given up on gnuplot because of my inability to produce pretty images. However, after being pointed to http://www.gnuplotting.org/ and seeing the beautiful images there I’ve started using it again.

And, yeah I get that “pretty” shouldn’t be the absolute aim of a plot, but it is a nice addition.

I hadn't used gnuplot, but when my UPS was dying, I decided I needed a realtime graph of it recharging/discharging to see what was going on.

I called the apcupsd api from the command line and output some stats to a file that I'd formatted into columns using awk/grep, I then found that I could configure gnuplot to draw a graph from this file, and then update itself automatically as the file changed.

All in all, it took me 10 minutes to put together having not used gnuplot before and did exactly what I needed. I could watch the graph update every few seconds/minutes and keep an eye on what was happening, and because I had written the data to a file first, I could always go back and re-plot it later if I had found anything interesting to re-plot for.

End result; UPS is dead, get a new one :D

I did the same thing during an internship where tensorboard wasn’t available on our training clusters - instead I just dumped all of the training metrics I needed into a tsv and made a gnuplot ascii graph. Worked brilliantly and took no time to set up.

Oh man, I'm old. Haven't heard "gnuplot" since my second job in 1988 (departmental programmer for Dept of Physics, Monash University; which is where my HN username comes from btw). Yes, gnuplot is cool. One of the oldest OS codebases still in active use I reckon.

Yes! Another of my generation on HN. Gnuplot was great in the 80's.

gnuplot is great today!

Awesome. FYI: Find more more CSV tools at the Awesome CSV pages https://github.com/secretGeek/awesomecsv and https://github.com/csvspecs/awesome-csv Cheers. Prost.

SVG emitter?

Hm, I hadn't thought of this!

It uses matplotlib to generate the graphs, which can save svg files though. This sounds like a good feature to add.

plotly (Python and R) and ggplot (R) can do SVG. Its increadibly useful for generating rescaleable web views.

what are the advantages with respect to gnuplot?

How do you use gnuplot to plot a CSV file non-interactively? The only way I could find was

  gnuplot -e "set datafile separator \",\"; set term png; set output 'foo.png'; plot 'foo.csv'"
and if that is the best way then that's one particularly obvious advantage of graph over gnuplot.

All this verbosity can be solved by a particular .gnuplotrc, but I see what you mean.

Personally, I would rather do

    <foo.csv tr ',' ' '|gnuplot -e 'set term png;plot "-"'>foo.png

For quick plotting I use this gist for gnuplot, https://gist.github.com/jxy/88f2972d3994dfea06fd2d3833b7ac8a which generates an ascii art plot.

But I don't really use scripts for other gnuplot terminals, because custom tailoring for individual data set is always required to make any figure presentable. I usually go through ConTeXt to generate PDF file for its TeX features.

can I plot certain columns, or based on title in the first row?

Columns can be chosen using the -x or -y flags. By default the x column is the first and the y columns are everything else.

You can specify either the column name or number (1 indexed).

2D plots, not graphs...

I think you're using a domain specific definition of a graph. These certainly meet the English definition of a graph[1].

[1] https://www.google.com/search?q=define+graph

maybe you can put some examples on the front page of the repo.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact