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:
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:
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.
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.
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:
Once the implementation is finalized, we will publish an official announcement with a blog post elaborating on the details.
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!
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:
Some highlights from the 0.19.5 release:
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.
The 1.9 release is a great release for Makie 🙂 It substantially improves time to first plot and time to load the package:
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:
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.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:
Rafael Schouten took this demo and created SegmentAnything.jl from it, which wraps the python dependencies much nicer via PythonCall.
Alex S. Gardner has added a great example, visualizing ice loss in Greenland interactively:
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:
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.
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:
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
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: