Hey there, JuliaDynamics is planning to switch everything to Makie once it is stable enough. In parallel we are developing some interactive applications using Makie. This issue is simply a reference list of what is missing before we can fully switch to Makie.
I will be editing the list as I go along and any contributor here is welcome to "check" implemented features. I also hope to contribute myself some of the following, but no promises.
[ ] Support for the existence of multiple GUIs in parallel. I.e. scatter opens a new window instead of replacing the existing window. #188
[x] Selectable zoom (i.e. zooming into a selected rectangle instead of the center of the scene, which is what the mouse wheel does now).
[x] a way for the axis limits to not change when plotting something new, i.g. setting xlim(), ylim().
[x] Markers in dimensionless points / Markers that have the same relative size on the screen when you zoom.
[x] linewidths in dimensionless points / linewidths that have the same relative size on the screen when you zoom.
[x] to be able to create subplots and to return to them and plot again
[x] for subplots that are one below each other, to be able to share the x-axis. And thus when zooming/moving one subplot, all of them move (at least horizontally). This is achieved in PyPlot with: fig, axs = subplots(D, 1, sharex = true)
[x] fix textslider https://github.com/JuliaPlots/Makie.jl/issues/241
[x] Updating plot limits: https://github.com/JuliaPlots/AbstractPlotting.jl/issues/62
[ ] Arrows in dimensionless units that have angles in axis units. This means that we need an arrow whose direction is based on the data units (and thus changes if I zoom in a skewed rectangle). Its size however (e.g. width) is defined on axis units and thus does not change under zooming. This is for making particles in billiards. In PyPlot this is done by: q1 = ax[:quiver](x, y, dx, dy; angles = "xy", scale = 1). Here x, y are starting positions and dx, dy are offsets. The angles = "xy" argument sets the direction of the arrow to be data units, while scale = 1 argument sets its size (total length and width) to be axis units.
[x] A way to ensure that what is plotted _outside_ the axis limits is not shown
For the last point, that's pretty much what this code does:
https://github.com/JuliaPlots/AbstractPlotting.jl/blob/master/src/camera/camera2d.jl#L149
Alright, but it will need a docstring and to be exported and to be somewhere in the documentation page :)
@SimonDanisch how is the selectable zoom achieved? I dont see a way to do it using the mouse.
space + left mouse button
You are correct, but in interactive plots that clicking mouse does something, this also triggers the click. How shall I modify this: ispressed(scene, Mouse.left) to not include it if space is pressed?
I think you could also check for Keyboard.space and filter
@Datseris I believe the fix for textslider (in JuliaPlots/AbstractPlotting#84) has been merged and released.
And colorbars are pretty decent now through colorlegend
Can you link the doc of colorlegend please ?
Welp, it's not up yet but it's in the latest tag of MakieGallery, I guess were just waiting on the website to be rebuilt. It's in docs/src/colors.md.
I've updated this a bit.
Color bars are pretty easy now
Well, not easy enough ;)
Oh you mean autogenerating them?
you should just be a flag!
Would need better legend support as well. Is that something you're planning to do during the hackathon, or is there something I can do to help?
@Datseris, JuliaPlots/AbstractPlotting.jl#180 fixes:
a way for the axis limits to not change when plotting something new, i.g. setting xlim(), ylim().
Cool! BTW everyone please just feel free to "tick off" things that are implemented as time goes by