[HN Gopher] Eplot: A new package for making charts in Emacs
___________________________________________________________________
Eplot: A new package for making charts in Emacs
Author : signa11
Score : 237 points
Date : 2024-06-27 06:33 UTC (16 hours ago)
(HTM) web link (lars.ingebrigtsen.no)
(TXT) w3m dump (lars.ingebrigtsen.no)
| tetris11 wrote:
| > Microsoft Github
|
| this is the first time I've seen these two words explicitly put
| together before, and it made my stomach turn, regardless of how
| many years it's been true
| smartmic wrote:
| Perhaps this is why Github still tries to portray itself as the
| self-sufficient start-up it once was. I think a lot of
| independent developers feel like you, and they tend to lean
| more towards the values of software freedom than shareholder
| value and big tech capitalism.
|
| I just opened the front page of github.com, Ctrl-F "Microsoft"
| gives 0 hits.
| LightFog wrote:
| It's still baffling to me how many FOSS projects still use that
| platform, they've done very well keeping the 'Microsoft' prefix
| out of people's sight.
|
| Codeberg does seem to be gaining some momentum with FOSS
| projects now though, at long last.
| pjmlp wrote:
| FOSS folks need a reality check, regarding of many of their
| beloved projects are now on the paychecks from Oracle,
| Microsoft, Oracle, Meta, IBM, Intel, Google, Apple, AMD,
| NVidia,....
|
| From operating systems, programming languages, frameworks,
| compilers, editors, whatever.
|
| While placing the code in Codeberg only to get warm feelings.
| tetris11 wrote:
| You have it backwards.
|
| The beloved projects were already successful without those
| paychecks, hence why those companies took an interest in
| them in the first place and didn't (at least publicly) try
| to create their own alternatives knowing that they wouldnt
| be able to compete.
|
| Since the companies have been in the extend phase of their
| EEE logic, their contributions to open source have been
| helpful, granted.
| pjmlp wrote:
| I have been around long enough, hence why I can offer
| some reality checks.
|
| > 1998: Many major companies such as IBM, Compaq and
| Oracle announce their support for Linux.
|
| https://en.wikipedia.org/wiki/History_of_Linux
|
| The C language it was written on, has come into existence
| thanks to AT&T paychecks, landing on Ken Thompson and
| Brian Kernighan bank accounts.
| tetris11 wrote:
| You omitted:
|
| > 1996: Version 2.0 of the Linux kernel is released. The
| kernel can now serve several processors at the same time
| using symmetric multiprocessing (SMP), and thereby
| becomes a serious alternative for many companies.
|
| Linux had been around for half a decade at that point,
| and companies took note and reacted accordingly in 1998.
| pjmlp wrote:
| Until 1998 was a toy kernel, that barely worked except in
| very special cases, as someone that tried to use 1.0.9
| with IDE CD-ROMs in 1994, or fighting with X modeline for
| the graphics card to display a barely working 800x600 in
| 1996, will recall.
|
| Only after those guys stepped in, it matured to something
| that would compete with Solaris, during the 2000's dotcom
| wave.
| tetris11 wrote:
| Ask yourself, why would large multinational corps step in
| to save a failing product that isn't their own, unless
| that product was a serious contender that threatened
| their bottom line.
| pjmlp wrote:
| To outsource development costs.
| LightFog wrote:
| I don't understand the proposed reality they (we) should
| live in.
|
| They are trying to advocate for software that doesn't hurt
| its users in a sea of enshittifaction.
|
| They should stop because corporations produce powerful
| software?
| pjmlp wrote:
| It isn't a matter of proposed reality, rather the fact
| that somehow bills have to be paid, and all key FOSS
| projects happen to one way or the other, have developers
| paid by all big corps that people love to hate.
| rty32 wrote:
| Why do FOSS projects use github? Because it's a good product,
| simple. It has lots of features that people use every day
| that you don't necessarily find on other source code
| platforms. For example, their new code search is top class.
| You won't realize what's missing until you try to do the same
| thing elsewhere. GitHub also gets a lot of details right e.g.
| in pull requests and issue management.
|
| Added to that, it has the largest community of developers,
| and those who would potentially participate in FOSS projects
| likely already have an account. It's where people already are
| and what they are familiar with.
|
| (I have contributed to a few FOSS projects on github.)
| LightFog wrote:
| This 'everyone is using it so I need to also' logic is
| funny to me, given the idea of the F in FOSS is to use
| network effects to spread the idea of software freedom.
| Using and thus endorsing a proprietary platform with ever
| increasing integration into the software lifecycle seems to
| do the exact opposite of that.
| toolslive wrote:
| "eat $h*t: a billion flies can't be wrong". (once saw
| this on a t-shirt) Popularity != quality.
| jstimpfle wrote:
| Depends on what you mean by quality. The best complete
| package probably wins, although that's not the same for
| everybody.
| throwanem wrote:
| That isn't the only network you have to model.
| zelphirkalt wrote:
| The code search is rather meh than top class. Any grep can
| do better. Also the code search requires one to log in,
| basically does not exist for not logged in users, which
| equals zero quality for them.
| orhmeh09 wrote:
| I don't think any grep would do better on half a billion+
| repositories.
| frou_dh wrote:
| Look at all those people getting stuff done on their projects
| and making consistent releases. What fools! I pity them!
| LightFog wrote:
| If 'getting stuff done' is your only measure of success
| then fair enough.
| tecoholic wrote:
| Exactly my reaction as well. I hope they never rebrand it as MS
| GitHub.
| sph wrote:
| They'll do the opposite.
|
| "Introducing GitHub Windows 12, coming 2025"
| zelphirkalt wrote:
| One could also use Python and matplotlib for plotting in org
| mode. Gnuplot is not the only thing one can use.
| codetrotter wrote:
| Matplotlib already has a pretty uncomfortable API. I can't
| imagine that wrapping that in a layer of elisp would result in
| anything nice to use at all.
|
| It would probably be a case of the thing OP mentioned, where
| the amount of code needed would exceed just doing it yourself.
| setopt wrote:
| Gnuplot is the best plotting interface I've ever used. Once
| you've learned "the Gnuplot language", it's very fast and
| efficient to visualize anything and iterate on it
| interactively, and I personally find it more usable than
| GGPlot, Matplotlib, Seaborn, Bokeh, and Matlab.
|
| I think Gnuplot is undervalued because by default the results
| look horrible. Like many power tools, it requires some config
| in ~/.gnuplotrc to modernize the looks;
| http://gnuplotting.org/ is a great source to get started.
|
| Unfortunately, I'm mostly using Matplotlib these days because
| the data generation is in Python. But despite using it on and
| off for over a decade, I'm nowhere near my efficiency in
| Gnuplot, and often have to ask Google or Copilot for help if
| I'm doing something more complex.
| arnsholt wrote:
| Gnuplot is fantastic. And with the epslatex terminal, it
| sets the graphics in EPS and the text elements in
| TeXsobtgat you can get everything typeset juuuuuust right.
| dima55 wrote:
| To address your python woes:
| https://github.com/dkogan/gnuplotlib/ Gnuplot is excellent,
| and I use it every day.
| billfruit wrote:
| I find Gnuplot syntax to be terse and unintuitive, and
| having poor discoverability without constantly refer to the
| docs.
| setopt wrote:
| In Gnuplot you can indeed write each command in a very
| terse way; some simple examples: plot
| cos(x) ls 2, sin(x) ls 3 plot 'file.dat' u
| 1:2 w lp lw 3 ps 2
|
| But you can also write the same code in a descriptive
| way: plot cos(x) linestyle 2, sin(x)
| linestyle 3 plot 'file.dat' using 1:2 with
| linespoints linewidth 3 pointsize 2
|
| I think most people prefer the terse version once they
| learn it. But I'd definitely recommend learning the
| descriptive commands first, as the abbreviations follow
| very naturally from there.
| zelphirkalt wrote:
| Matplotlib has 2 APIs, a procedural one and an object
| oriented one. Which one are we talking about? Or both?
| Cacti wrote:
| Seaborn, plotly, datashader, etc. all exist to wrap
| matplotlib and they are wildly successful. Is there some
| reason an equally good interface couldn't be written in
| elisp?
| lordgrenville wrote:
| You're not wrapping it in elisp. You can just write
| matplotlib in a code block, evaluate it, and pop out an image
| to your buffer.
| natrys wrote:
| There is also ESS (Emacs Speaks Statistics) which, among other
| things, supercharges org-mode with R/Julia, which means the
| likes of ggplot2 or makie. That said, I do respect any attempt
| at making something with pure elisp.
| Pinus wrote:
| One thing that always bothers me with both matplotlib and
| gnuplot, is that they literally seem to have a command (or
| function call) for everything. To set the tick size for the
| third-level ticks on the Y axis, you call
| set_third_level_y_ticks() or something like that. This is not
| _necessarily_ bad (and maybe it has to be this way -- I haven't
| even tried to analyse the problem) but it _feels_ very un-
| orthogonal, like everything is special-cased.
| setopt wrote:
| If you're looking for something "orthogonal", you should
| definitely have a look at GGPlot and its "Grammar of
| Graphics".
|
| Personally, I prefer the Gnuplot approach, but I think GGPlot
| has some cool ideas behind it :)
| goosedragons wrote:
| You can also use R and it's plotting libraries.
| breck wrote:
| Neat!
|
| Really clever simplicity on how you added gradients.
|
| This is one of my favorite spaces, so I'll add some generic
| advice which may or may not be helpful.
|
| I once had the privilege of working for Max Roser and Hannah
| Ritchie at Our World in Data, as one of the engineers on their
| Grapher library (https://github.com/owid/owid-grapher), and
| learned a ton from them (and others on the team) about making
| great charts.
|
| My one piece of advice from looking at your examples would be:
| don't neglect title, subtitle, and caption! They would be so easy
| to do well because you've already created your "simple headers
| thingies". A few words go along way. Check out "Storytelling with
| Data" by Cole Nussbaumer Knaflic for a great read on the subject.
| Owid's Grapher does those the best, IMO (followed closely by
| DataWrapper.de -- but that's not open source).
|
| At some point, if you keep up with this, you'll also want to add
| a dataflow library and DSL. Hadley Wickham's dplyr in R was the
| GOAT, and I copied that in my Ohayo tool and in OWID Grapher's
| CoreTable library (https://github.com/owid/owid-
| grapher/tree/master/packages/%4...). Jeffrey Heer's newish
| Arquero (https://idl.uw.edu/arquero/) library is also along those
| lines.
|
| Lately I've delving into Mike Bostock's new thing Plot
| (https://observablehq.com/plot/). So far, excited by it, but only
| spent a day or two with it at this point.
|
| I don't use emacs anymore, but hopefully something helpful in the
| comments above.
| thecleaner wrote:
| Thats some solid hacking right there. Esp yhe gradient part .
| Also given that these plots are svg means they can the imported
| to latex or a web browser. The first option makes it a solid
| contender for doing plots that need embedding in papers.
| Congratulations, some good results here.
| throwanem wrote:
| This looks fantastic! One thought, using Emacs' feature of file-
| and directory-local variables for the chart config might make for
| a more flexible UX. (For example, I might be generating the data
| files and not want to have to manually modify before charting, or
| I might have a large directory of data files that I'd like to
| plot at will without having to apply a header by hand to each.)
| TacticalCoder wrote:
| Oh that's why I couldn't find a recent _" 10% of Emacs bugs
| fixed"_: that's what he was working on! Cool stuff. A true Emacs
| guru.
___________________________________________________________________
(page generated 2024-06-27 23:00 UTC)