# \[ANN\] CasualPlots.jl: A simple GUI for easy plotting with Julia

**URL:** <https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891>\
**Category:** Package Announcements\
**Tags:** announcement, plotting, makie, gui, bonito\
**Created:** [November 14, 2025, 8:49pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891 "2025-11-14T20:49:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [November 14, 2025, 8:49pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/1 "2025-11-14T20:49:19Z")

</div>

[Edit: the package is registered]

[CasualPlots.jl](https://github.com/Eben60/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](https://www.originlab.com/) or [Veusz](https://veusz.github.io/).

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.

 ![Screenshot_ClickAndPlot](https://global.discourse-cdn.com/julialang/original/3X/e/1/e10ca48633b673daafba515460991582ff022079.png)

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 😁

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](https://discourse.julialang.org/t/too-much-time-on-my-hands/117816) and [here](https://discourse.julialang.org/t/too-much-time-on-my-hands/117816/41).

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [November 14, 2025, 8:57pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/2 "2025-11-14T20:57:55Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [November 14, 2025, 9:20pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/3 "2025-11-14T21:20:23Z")

</div>

> [@asinghvi17](#):
>
> Have you considered targeting [AlgebraOfGraphics.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/AlgebraOfGraphics)

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

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [December 20, 2025, 10:57am UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/4 "2025-12-20T10:57:54Z")

</div>

I am excited to announce that CasualPlots.jl has been registered! While it is still a bit rough around the edges, a large part of the core functionality is already in place.

The current state of the package is as follows:

- [✅] A GUI with panes for user interactions, plot display, and source data display.
- [✅] Data sources: variables defined in the Main module (vectors, matrices, dataframes).
- [✅] Data sources: CSV and XLSX files.
  - [🚧] Support for CSV/XLSX file reading options (kwargs) planned.

- [✅] Plotting: Lines and Scatter plots.
  - [🚧] More plot formatting options.

- [✅] Saving plot to a file.
- [✅] Exporting the Figure object.
- ~~[❌] Saving the Figure object to `JLD2` file.~~ Edit: looks like not possible
- [❌] Precompile to reduce Time To First Plot.
- [❌] Documenter.jl based documentation.
- [❌] Automatic generation of Julia code corresponding to the user’s actions.
- [❌] Applying a least-squares fit from the GUI.

Screenshots:

- [Open File Tab](https://github.com/Eben60/CasualPlots.jl/blob/main/AGENTS_more_info/ScreenShots/open_file_tab.png)
- [X, Y Source Selection, Scatter Plot](https://github.com/Eben60/CasualPlots.jl/blob/main/AGENTS_more_info/ScreenShots/xy_source_selection.png)
- [DataFrame Source Selection](https://github.com/Eben60/CasualPlots.jl/blob/main/AGENTS_more_info/ScreenShots/dataframe_source_selection.png)
- [Format Tab, Lines Plot](https://github.com/Eben60/CasualPlots.jl/blob/main/AGENTS_more_info/ScreenShots/format_tab.png)
- [Save Tab](https://github.com/Eben60/CasualPlots.jl/blob/main/AGENTS_more_info/ScreenShots/save_tab.png)

Happy plotting!

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [January 4, 2026, 10:01pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/5 "2026-01-04T22:01:07Z")

</div>

In the meanwhile the v0.5.0 is just registered.

The progress:

- [✅] Data sources: variables defined in the Main module (vectors, matrices, dataframes).
  - [✅] **Range selection.**

- [✅] Data sources: CSV and XLSX files.
  - [✅] **Support for CSV/XLSX file reading options (kwargs).**

- [✅] Plotting: Lines and Scatter plots.
  - [🚧] **Themes, Labels/Title, Axes Limits and more implemented.**

- [✅] **Precompile to reduce Time To First Plot.**

I’ve updated the screenshots linked in the previous post.

There is still a lot to do, but I’d say the package is already ready for the intended, i.e. not too ambitious, usage.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [July 13, 2026, 7:16pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/6 "2026-07-13T19:16:58Z")

</div>

**v0.6.0 is out! The most significant feature is:**

[✅] **Automatic generation of Julia code corresponding to the user’s actions.**

Select the source and range, and customize the plot formatting to your liking—all within the GUI. Then, at the press of a button, the software generates a standalone Julia script that recreates the exact plot you configured. Starting with that script, you can apply final polishes to produce a publication-quality plot, or integrate the code directly into your data processing pipeline.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [August 16, 2026, 4:27pm UTC](https://discourse.julialang.org/t/ann-casualplots-jl-a-simple-gui-for-easy-plotting-with-julia/133891/7 "2026-08-16T16:27:32Z")

</div>

**v0.9.0 is out!** Here is a summary of the progress since v0.6.0:

[✅] Adding _BarPlot_ and _Line+Symbol_ to the existing _Lines_ and _Scatter_ plots, the most common XY-plot types are now all supported.

[✅] Thanks to BonitoWidgets.jl, the Plot and Data Table panes can now be resized, maximized, and minimized, with responsive plot canvas resizing.

[✅] The table view received much-needed love 😳 — with reliable scrolling and cleaner number formatting (on top of the resizability mentioned above), it is now actually useful.

[✅] Under the hood: Complete overhaul of the plot type architecture. Adding new plot types or composite layers has become straightforward and modular.

The next step is **1.0**. The “only” things left to do are documentation, automated GUI testing, and, and… 😄
