[RFC] CasualPlots.jl: A simple GUI for casual plotting in Julia

CasualPlots.jl (interim name, but actually I like it) aims to provide a GUI to simplify the creation of plots in Julia. The tool is positioned in the middle ground between purely script-based plotting and standalone GUI plotting applications, like e.g. Origin or Veusz.

The intended user is a casual Julia user, e.g. an experimental scientist or a “hands-on” engineer - for whom it could become an alternative to using Excel🤢 for plotting. The intention is to provide like 60..80% of features commonly expected by that kind of user. It will be limited only to the most common of 2D-Plots (scatter and line plots to start with). The GUI-available features should be mostly sufficient to produce typical plots for e.g. internal presentations, however with the option to apply fine tuning manually to the GUI-produced plot afterwards.

What it is not: In now way the intention is to compete with any “serious” tools in terms of the features scope. It is also probably not that interesting to a Julia developer who uses Julia day in and day out from Emacs or Vim and knows every Makie parameter by heart.

The package usage is as follows: From the command line (or script) user would start a GUI, where they can select data sources. As soon as the X and Y data sources are selected, both the plot, and the data in tabular form, will be displayed. Simultaneously, the corresponding Figure object will be exported into the Main, giving the user the opportunity to do fine-tuning by hand.

The package is based on Bonito.jl, Makie.jl, and AlgebraOfGraphics.jl; Electron.jl window currently used for display.

Planned (and in a small part already implemented) features are:

  • A GUI including panes to
    • select data sources and configure plot features,
    • display the plot,
    • display the source data in tabular form.
  • Data sources can be
    • variables defined in the Main module (vectors, matrices, dataframes),
    • files which can be read into a DataFrame.
  • Saving plot to a file.
  • Exporting the Figure object, making it possible to set parameters not available in the GUI.
  • Automatic generation of Julia code corresponding to the user’s actions in the GUI. This allows users to reuse and modify the generated code.
  • (Possibly) Applying a least-squares fit from the GUI.

The project is in very early stage, just a couple of days of Gemini-coding. Any suggestions, any critique are highly welcome! And, of course, should any come with a better name - it will be considered :grin:

Despite being in its infancy, you can already test it. See the file /src/scripts/three_panes.jl in the repository for code and instructions.

PS For my personal motivation - see here and here.

7 Likes

This looks pretty interesting!

Have you considered targeting AlgebraOfGraphics.jl as the “backend” instead of directly using Makie APIs? It is made for this kind of tabular plotting and provides a much more “form-like” interface than directly using Makie plots.

Just a thought - this is pretty cool already!

Actually it is being used :grin: - I have updated my post to include it

1 Like