Hello r/emacs! First-time poster here!

I recently wanted to visualise some data in org-mode using a Python source block to generate an image, which was then rendered directly in the buffer.

It took my a couple of goes to work out how to do it.

Given some data like this:

#+begin_src bash :results output file :file data.njson
echo '{"name": "Spock", "editor": "Emacs"}
{"name": "James Kirk", "editor": "Vim"}
{"name": "Dr McCoy", "editor": "Vim"}
{"name": "Scotty", "editor": "Emacs"}
{"name": "Worf", "editor": "ed"}
{"name": "Geordi LaForge", "editor": "Emacs"}
{"name": "Data", "editor": "Emacs"}
{"name": "Jean-luc Picard", "editor": "VS Code"}
{"name": "Wesley Crusher", "editor": "VS Code"}
{"name": "William Riker", "editor": "Vim"}
'
#+end_src

A visualisation can be rendered as follows:

#+begin_src python :results output file :file usage.png
import pandas as pd
import seaborn as sns
import sys

df = pd.read_json("data.njson", lines=True)
axes = sns.histplot(df, x="editor")
axes.get_figure().savefig(sys.stdout.buffer)
#+end_src

The main trick here is to set the :results output file header argument to write the output to a file, and to save the figure to sys.stdout.buffer from Python.

I’ve written about this on my blog too, where you can see the [unsurprising] results of the analysis!

  • publicvoitB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Is there somebody here using Nix(OS) who could teach me how to call this using a Python virtualenv where I deliberately setup pandas + seaborn before (in a shell)?

  • github-alphapapaB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I’ve written about this on my blog too, where you can see the [unsurprising] results of the analysis!

    Of course everyone loves to hate on Wesley, but let’s face it, he’d probably be the Emacs geek who was constantly talking about this new thing he just did in Emacs, and everyone would be tired of hearing about it. :)

    • akuszykOPB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      That’s true, although I figured he’d be doing whatever Picard was doing!