MakieCon highlights

We like to thank the Max Planck Institute for Biogeochemistry for hosting MakieCon 23, the Julia Numfocus Project for supporting us with travel funds and Dr. Lazaro Alonso Silva for organizing MakieCon.

At MakieCon, we were happy to announce that Makie is now the most starred Julia plotting library:

stars

While one shouldn't put too much emphasis on GitHub star counts, we like to think that it's an indicator that Makie is on a good trajectory and people are excited to see where it's going next.

We recorded all talks, which you can watch in the MakieCon playlist on youtube:

Fast TopoPlots and Julia native interpolator

At MakieCon, we successfully addressed the reliance of TopPlots on numerous Python packages for rendering. As a result, we have effectively eliminated most of the Python dependencies, while also improving the performance. You can find more info in the PR.

Observable{Vector{PlotSpec}} prototype

This prototype can be used by recipes when the number and type of plots depend on the input data, rather than just the input types.

It extends the functionality of the existing PlotSpec infrastructure and allows for the creation and deletion of plots as needed. It is compatible with any backend.

This functionality is crucial for improving the integration of WGLMakie within Pluto. While Pluto lacks support for UIs via Observables like Makie, it follows a declarative style where users write out the complete plot command for each animation step. Having an efficient declarative API in Makie will ensure compatibility between WGLMakie and Pluto.

A datashader implementation

James A. Bednar delivered an exceptional keynote at MakieCon, where he introduced the Python package datashader.

This presentation sparked immediate inspiration within the Makie community, leading to the development of an initial prototype for Makie.

This plot type was implemented as a recipe and proves particularly useful for exploring vast amounts of data (ranging from millions to billions of points) that may encounter issues like overplotting and over/under saturation.

The preliminary documentation includes an example showcasing the interactive speed of "shading" 2.7 billion points on a laptop: datashader-2 7billion

Once the implementation is finalized, we will publish an official announcement with a blog post elaborating on the details.

Progress on axes in nonlinear spaces

We were able to understand and present a lot of what is required to have generic nonlinear axes in Makie enabling many projection types in GeoMakie:

These were implemented in a PR to GeoMakie, and we've had some success so far. Work is still ongoing to make this a well integrated axis type, though!

Scatterjitter

Benedikt Ehinger also worked on a recipe, which makes it easy to introduce some jitter to points, so that one can better judge their distribution:


New Makie Release: v0.19.5

Some highlights from the 0.19.5 release:

More fixes for line rendering in GLMakie

Frederic Freyer went all in on fixing remaining issues with the new line rendering from v0.19.3. See the well documented PR for more information about the challenges!

Added contour labels #2496

t-bltg put lots of work into enabling proper contour labels for Makie:

contour3d

contours

Fixes for Makie.inline!() #2919 #2937

We now allow and default to Makie.inline!(automatic), which is better at automatically opening a window / inlining a plot into plo tpane when needed #2919 #2937

Block/Axis doc improvements #2940 #2932 #2894

We got a lot of feedback regarding Makie's documentation during MakieCon. Many users feel that while it contains a lot of information, it could be structured more clearly. A system for structuring documentation that has been gaining popularity is the four-sector system from the folks at divio which separates tutorials, how-to's, explanations and references.

There is an ongoing effort to make plotting function and Block documentation pages more reference-like, with more focused examples for each attribute or keyword argument, and extended help functionality in the Julia REPL. In the future, we'd like to add more complex how-to's, an area in which the separate project Beautiful Makie has been stronger than the official documentation in the past.


Exciting developments

Julia v1.9 release

The 1.9 release is a great release for Makie 🙂 It substantially improves time to first plot and time to load the package:

Also, it fixes a long standing issue for GLMakie users with AMD GPU on linux, which got backported to 1.8.4.

Miner.jl

Miner.jl is a MineCraft clone written entirely in Julia and Makie. It's still a prototype, but already shows that it's possible to create a game with Makie, showing off the flexibility and performance Makie offers:

ModelingToolkitDesigner.jl

A really new and exciting package. From the README:

The ModelingToolkitDesigner.jl package is a helper tool for visualizing and editing ModelingToolkit.jl system connections.

Tyler

Tyler.jl is a package which plots large images performantly by breaking them up into a set of "tiles". This is often used for interactive maps where tiles are downloaded on demand. Tyler was written to work well with any tile provider, and therefore offers similar functionality as Leaflet.

During MakieCon and before, lots of cool use cases have been opened up:

SegmentAnything.jl

Simon Danisch has made an initial demo directly calling segment-anything via PyCall and integrating it with Tyler, to easily segment satellite data:

tyler-sam

Rafael Schouten took this demo and created SegmentAnything.jl from it, which wraps the python dependencies much nicer via PythonCall.

Greenland ice loss

Alex S. Gardner has added a great example, visualizing ice loss in Greenland interactively:

OSMMakie

OSMMakie has been around for a while, but it's great to see that it smoothly integrates with Tyler.jl, so one can plot all the vector data on top of any tyler map:

PyramidSchemes.jl

A Gaussian pyramid is a hierarchical structure of scaled-down images created using Gaussian filters and subsampling. It is commonly used in map data applications like Google Maps to efficiently handle different levels of detail. PyramidSchemes.jl was started at MakieCon and promises to do the same for large arrays on disk and a smooth integration with Tyler.jl.

GtkMakie.jl

Jared Wahlstrand took the heroic task of wrapping Gtk4 which works well on windows and finally allows for OpenGL integration working on all platforms which allows for a native GLMakie integration. The package is in its early days, but already quite usable:

gtkmakie

TidierPlots

People have been looking for a ggplot equivalent in Julia for quite some time, and now we have a new Package for it:

TidierPlots.jl is a 100% Julia implementation of the R package ggplot in Julia. Powered by the AlgebraOfGraphics.jl, Makie.jl, and Julia’s extensive meta-programming capabilities, TidierPlots.jl is an R user’s love letter to data visualization in Julia.

                using CairoMakie; CairoMakie.activate!(type=:png)
using TidierPlots, PalmerPenguins, DataFrames
penguins = dropmissing(DataFrame(PalmerPenguins.load()))
(@ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm, color = species)) +
    @geom_point() +
    @geom_smooth(method = "lm") +
    @labs(x = "Bill Length (mm)", y = "Bill Width (mm)",
        title = "Bill Length vs. Bill Width",
        subtitle = "Using geom_point and geom_smooth")) |> draw_ggplot
              

Social Media

You can follow Makie's development on many social media networks. Twitter is right now the most used one, but since it's a dying platform we hope to move things to any of the other platforms: