[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)