- Fix grouping of a zero-height bar in
barplot
. Now a zero-height bar shares the same properties of the previous bar, and if the bar is the first one, its height is treated as positive if and only if there exists a bar of positive height or all bars are zero-height #3058. - Fixed a bug where Axis still consumes scroll events when interactions are disabled #3272.
- Added
cornerradius
attribute toBox
for rounded corners #3308. - Upgraded
StableHashTraits
from 1.0 to 1.1 #3309.
- Fix bugs with Colorbar in recipes, add new API for creating a recipe colorbar and introduce experimental support for Categorical colormaps #3090.
- Add experimental Datashader implementation #2883.
- [Breaking] Changed the default order Polar arguments to (theta, r). #3154
- General improvements to
PolarAxis
: full rlimtis & thetalimits, more controls and visual tweaks. See pr for more details.#3154
- Allow arbitrary reversible scale functions through
ReversibleScale
. - Deprecated
linestyle=vector_of_gaps
in favor oflinestyle=Linestyle(vector_of_gaps)
3135, 3193. - Fixed some errors around dynamic changes of
ax.xscale
orax.yscale
#3084 - Improved Barplot Label Alignment #3160.
- Fixed regression in determining axis limits #3179
- Added a theme
theme_latexfonts
that uses the latex font family as default fonts #3147. - Upgrades
StableHashTraits
from 0.3 to 1.0
- Improved CairoMakie rendering of
lines
with repeating colors in an array #3141. - Added
strokecolormap
to poly. #3145 - Added
xreversed
,yreversed
andzreversed
attributes toAxis3
#3138. - Fixed incorrect placement of contourlabels with transform functions #3083
- Fixed automatic normal generation for meshes with shading and no normals #3041.
- Added the
triplot
andvoronoiplot
recipes from DelaunayTriangulation.jl #3102, #3159.
- Allow arbitrary functions to color
streamplot
lines by passing aFunction
tocolor
. This must acceptPoint
of the appropriate dimension and return aPoint
,Vec
, or other arraylike object #2002. arrows
can now take input of the formx::AbstractVector, y::AbstractVector, [z::AbstractVector,] f::Function
, wheref
must return aVecTypes
of the appropriate dimension #2597.- Exported colorbuffer, and added
colorbuffer(axis::Axis; include_decorations=false, colorbuffer_kws...)
, to get an image of an axis with or without decorations #3078. - Fixed an issue where the
linestyle
of some polys was not applied to the stroke in CairoMakie. #2604 - Add
colorscale = identity
to any plotting function using a colormap. This works with any scaling function likelog10
,sqrt
etc. Consequently,scale
forhexbin
is replaced withcolorscale
#2900. - Add
alpha=1.0
argument to all basic plots, which supports independently adding an alpha component to colormaps and colors. Multiple alphas like inplot(alpha=0.2, color=RGBAf(1, 0, 0, 0.5))
, will get multiplied #2900. hexbin
now supports any per-observation weights which StatsBase respects -<: StatsBase.AbstractWeights
,Vector{Real}
, ornothing
(the default). #2804- Added a new Axis type,
PolarAxis
, which is an axis with a polar projection. Input is in(r, theta)
coordinates and is transformed to(x, y)
coordinates using the standard polar-to-cartesian transformation. Generally, its attributes are very similar to the usualAxis
attributes, butx
is replaced byr
andy
byθ
. It also inherits from the theme ofAxis
in this manner, so should work seamlessly with Makie themes #2990. inherit
now has a new signatureinherit(scene, attrs::NTuple{N, Symbol}, default_value)
, allowing recipe authors to access nested attributes when trying to inherit from the parent Scene. For example, one could inherit fromscene.Axis.yticks
byinherit(scene, (:Axis, :yticks), $default_value)
#2990.- Fixed incorrect rendering of 3D heatmaps #2959
- Deprecated
flatten_plots
in favor ofcollect_atomic_plots
. Using the newcollect_atomic_plots
fixed a bug in CairoMakie where the z-level of plots within recipes was not respected. #2793 - Fixed incorrect line depth in GLMakie #2843
- Fixed incorrect line alpha in dense lines in GLMakie #2843
- Fixed DataInspector interaction with transformations #3002
- Added option
WGLMakie.activate!(resize_to_body=true)
, to make plots resize to the VSCode plotpane. Resizes to the HTML body element, so may work outside VSCode #3044, #3042. - Fixed DataInspector interaction with transformations #3002.
- Fix incomplete stroke with some Bezier markers in CairoMakie and blurry strokes in GLMakie #2961
- Added the ability to use custom triangulations from DelaunayTriangulation.jl #2896.
- Adjusted scaling of scatter/text stroke, glow and anti-aliasing width under non-uniform 2D scaling (Vec2f markersize/fontsize) in GLMakie #2950.
- Scaled
errorbar
whiskers andbracket
correctly with transformations #3012. - Updated
bracket
when the screen is resized or transformations change #3012.
- Fixed broken AA for lines with strongly varying linewidth #2953.
- Fixed WGLMakie JS popup #2976.
- Fixed
legendelements
when children have no elements #2982. - Bumped compat for StatsBase to 0.34 #2915.
- Improved thread safety #2840.
- Added
loop
option for GIF outputs when recording videos withrecord
#2891. - Fixed line rendering issues in GLMakie #2843.
- Fixed incorrect line alpha in dense lines in GLMakie #2843.
- Changed
scene.clear
to an observable and made changes inScene
Observables trigger renders in GLMakie #2929. - Added contour labels #2496.
- Allowed rich text to be used in Legends #2902.
- Added more support for zero length Geometries #2917.
- Made CairoMakie drawing for polygons with holes order independent #2918.
- Fixes for
Makie.inline!()
, allowing now forMakie.inline!(automatic)
(default), which is better at automatically opening a window/ inlining a plot into plotpane when needed #2919 #2937. - Block/Axis doc improvements #2940 #2932 #2894.
- Added export of
hidezdecorations!
from MakieLayout #2821. - Fixed an issue with GLMakie lines becoming discontinuous #2828.
- Added the
stephist
plotting function #2408. - Added the
brackets
plotting function #2356. - Fixed an issue where
poly
plots withVector{<: MultiPolygon}
inputs with per-polygon color were mistakenly rendered as meshes using CairoMakie #2590. - Fixed a small typo which caused an error in the
Stepper
constructor #2600. - Improve cleanup on block deletion #2614
- Add
menu.scroll_speed
and increase default speed for non-apple #2616. - Fixed rectangle zoom for nonlinear axes #2674
- Cleaned up linestyles in GLMakie (Fixing artifacting, spacing/size, anti-aliasing) #2666.
- Fixed issue with scatterlines only accepting concrete color types as
markercolor
#2691. - Fixed an accidental issue where
LaTeXStrings
were not typeset correctly inAxis3
#2558. - Fixed a bug where line segments in
text(lstr::LaTeXString)
were ignoring offsets #2668. - Fixed a bug where the
arrows
recipe accidentally called aBool
whennormalize = true
#2740. - Re-exported the
@colorant_str
(colorant"..."
) macro from Colors.jl #2726. - Speedup heatmaps in WGLMakie. #2647
- Fix slow
data_limits
for recipes, which made plotting lots of data with recipes much slower #2770.
- Add
show_data
method forband
which shows the min and max values of the band at the x position of the cursor #2497. - Added
xlabelrotation
,ylabelrotation
(Axis
) andlabelrotation
(Colorbar
) #2478. - Fixed forced rasterization in CairoMakie svg files when polygons with colors specified as (color, alpha) tuples were used #2535.
- Do less copies of Observables in Attributes + plot pipeline #2443.
- Add Search Page and tweak Result Ordering #2474.
- Remove all global attributes from TextureAtlas implementation and fix julia#master #2498.
- Use new JSServe, implement WGLMakie picking, improve performance and fix lots of WGLMakie bugs #2428.
- Breaking The attribute
textsize
has been removed everywhere in favor of the attributefontsize
which had also been in use. To migrate, search and replace all uses oftextsize
tofontsize
#2387. - Added rich text which allows to more easily use superscripts and subscripts as well as differing colors, fonts, fontsizes, etc. for parts of a given text #2321.
- Added the
waterfall
plotting function #2416. - Add support for
AbstractPattern
inWGLMakie
#2432. - Broadcast replaces deprecated method for quantile #2430.
- Fix CairoMakie's screen re-using #2440.
- Fix repeated rendering with invisible objects #2437.
- Fix hvlines for GLMakie #2446.
- Add
render_on_demand
flag forGLMakie.Screen
. Setting this totrue
will skip rendering until plots get updated. This is the new default #2336, #2397. - Clean up OpenGL state handling in GLMakie #2397.
- Fix salting #2407.
- Fixes for GtkMakie #2418.
- Fix Axis3 tick flipping with negative azimuth #2364.
- Fix empty!(fig) and empty!(ax) #2374, #2375.
- Remove stencil buffer #2389.
- Move Arrows and Wireframe to MakieCore #2384.
- Skip legend entry if label is nothing #2350.
- fix heatmap interpolation #2343.
- move poly to MakieCore #2334
- Fix picking warning and update_axis_camera #2352.
- bring back inline!, to not open a window in VSCode repl #2353.
- Breaking Added
BezierPath
which can be constructed from SVG like command list, SVG string or from aPolygon
. Added ability to useBezierPath
andPolgyon
as scatter markers. Replaced default symbol markers like:cross
which converted to characters before with more preciseBezierPaths
and adjusted default markersize to 12. Deprecated usingString
to specify multiple char markers (scatter(1:4, marker="abcd")
). Deprecated concrete geometries as markers likeCircle(Point2f(0), 1.5)
in favor of using the type likeCircle
for dispatch to special backend methods. Added single image marker support to WGLMakie #979. - Breaking Refactored
display
,record
,colorbuffer
andscreens
to be faster and more consistent #2306. - Breaking Refactored
DataInspector
to usetooltip
. This results in changes in the attributes of DataInspector. Addedinspector_label
,inspector_hover
andinspector_clear
as optional attributes #2095. - Added the
hexbin
plotting function #2201. - Added the
tricontourf
plotting function #2226. - Fixed per character attributes in text #2244.
- Allowed
CairoMakie
to renderscatter
with images as markers #2080. - Reworked text drawing and added ability to draw special characters via glyph indices in order to draw more LaTeX math characters with MathTeXEngine v0.5 #2139.
- Allowed text to be copy/pasted into
Textbox
#2281 - Fixed updates for multiple meshes #2277.
- Fixed broadcasting for linewidth, lengthscale & arrowsize in
arrow
recipe #2273. - Made GLMakie relocatable #2282.
- Fixed changing input types in plot arguments #2297.
- Better performance for Menus and fix clicks on items #2299.
- Fixed CairoMakie bitmaps with transparency by using premultiplied ARGB surfaces #2304.
- Fixed hiding of
Scene
s by settingscene.visible[] = false
#2317. Axis
now accepts aTuple{Bool, Bool}
forxtrimspine
andytrimspine
to trim only one end of the spine #2171.
- Fixed boundingboxes #2184.
- Fixed highclip/lowclip in meshscatter, poly, contourf, barplot #2183.
- Fixed gridline updates #2196.
- Fixed glDisablei argument order, which crashed some Intel drivers.
- Fixed stackoverflow in show #2167.
rainclouds
(!) now supportsviolin_limits
keyword argument, serving the same. role asdatalimits
inviolin
#2137.- Fixed an issue where nonzero
strokewidth
results in a thin outline of the wrong color ifcolor
andstrokecolor
didn't match and weren't transparent. #2096. - Improved performance around Axis(3) limits #2115.
- Cleaned up stroke artifacts in scatter and text #2096.
- Compile time improvements #2153.
- Mesh and Surface now interpolate between values instead of interpolating between colors for WGLMakie + GLMakie #2097.
- Bumped compatibility bound of
GridLayoutBase.jl
tov0.9.0
which fixed a regression withMixed
andOutside
alignmodes in nestedGridLayout
s #2135.
- Patterns (
Makie.AbstractPattern
) are now supported byCairoMakie
inpoly
plots that don't involvemesh
, such asbar
andpoly
#2106. - Fixed regression where
Block
alignments could not be specified as numbers anymore #2108. - Added the option to show mirrored ticks on the other side of an Axis using the attributes
xticksmirrored
andyticksmirrored
#2105. - Fixed a bug where a set of
Axis
wouldn't be correctly linked together if they were only linked in pairs instead of all at the same time #2116.
- Improved
Menu
performance, now it should be much harder to reach the boundary of 255 scenes in GLMakie.Menu
also takes adefault
keyword argument now and can be scrolled if there is too little space available.
- EXPERIMENTAL: Added support for multiple windows in GLMakie through
display(GLMakie.Screen(), figure_or_scene)
#1771. - Added support for RGB matrices in
heatmap
with GLMakie #2036 Textbox
doesn't defocus anymore on trying to submit invalid input #2041.text
now takes the position as the first argument(s) likescatter
and most other plotting functions, it is invokedtext(x, y, [z], text = "text")
. Because it is now of conversion typePointBased
, the positions can be given in all the usual different ways which are implemented as conversion methods. All old invocation styles such astext("text", position = Point(x, y))
still work to maintain backwards compatibility #2020.
- Fixed a regression with
linkaxes!
#2039.
- The functions
hlines!
,vlines!
,hspan!
,vspan!
andabline!
were reimplemented as recipes. This allows using them without anAxis
argument in first position and also as visuals in AlgebraOfGraphics.jl. Also,abline!
is now calledablines!
for consistency,abline!
is still exported but deprecated and will be removed in the future. #2023. - Added
rainclouds
andrainclouds!
#1725. - Improve CairoMakie performance #1964 #1981.
- Interpolate colormap correctly #1973.
- Fix picking #1993.
- Improve compile time latency #1968 #2000.
- Fix multi poly with rects #1999.
- Respect scale and nonlinear values in PlotUtils cgrads #1979.
- Fix CairoMakie heatmap filtering #1828.
- Remove GLVisualize and MakieLayout module #2007 #2008.
- Add linestyle and default to extrema(z) for contour, remove bitrotten fillrange #2008.
- Switched to
MathTeXEngine v0.4
, which improves the look of LaTeXStrings #1952. - Added subtitle capability to
Axis
#1859. - Fixed a bug where scaled colormaps constructed using
Makie.cgrad
were not interpreted correctly.
- Changed the default font from
Dejavu Sans
toTeX Gyre Heros Makie
which is the same asTeX Gyre Heros
with slightly decreased descenders and ascenders. Decreasing those metrics reduced unnecessary whitespace and alignment issues. Four fonts in total were added, the styles Regular, Bold, Italic and Bold Italic. Also changedAxis
,Axis3
andLegend
attributestitlefont
toTeX Gyre Heros Makie Bold
in order to separate it better from axis labels in multifacet arrangements #1897.
- Added word wrapping. In
Label
,word_wrap = true
causes it to use the suggested width and wrap text to fit. Intext
,word_wrap_width > 0
can be used to set a pixel unit line width. Any word (anything between two spaces without a newline) that goes beyond this width gets a newline inserted before it #1819. - Improved
Axis3
's interactive performance #1835. - Fixed errors in GLMakie's
scatter
implementation when markers are given as images. #1917. - Removed some method ambiguities introduced in v0.17 #1922.
- Add an empty default label,
""
, to each slider that doesn't have a label inSliderGrid
#1888.
- Breaking Added
space
as a generic attribute to switch between data, pixel, relative and clip space for positions.space
in text has been renamed tomarkerspace
because of this.Pixel
andSceneSpace
are no longer valid inputs forspace
ormarkerspace
#1596. - Breaking Deprecated
mouse_selection(scene)
forpick(scene)
. - Breaking Bumped
GridLayoutBase
version tov0.7
, which introduced offset layouts. Now, indexing into row 0 doesn't create a new row 1, but a new row 0, so that all previous content positions stay the same. This makes building complex layouts order-independent #1704. - Breaking deprecate
to_colormap(cmap, ncolors)
in favor ofcategorical_colors(cmap, ncolors)
andresample_cmap(cmap, ncolors)
#1901 #1723. - Added
empty!(fig)
and changedempty!(scene)
to remove all child plots without detaching windows #1818. - Switched to erroring instead of warning for deprecated events
mousebuttons
,keyboardbuttons
andmousedrag
. Layoutable
was renamed toBlock
and the infrastructure changed such that attributes are fixed fields and each block has its ownScene
for better encapsulation #1796.- Added
SliderGrid
block which replaces the deprecatedlabelslider!
andlabelslidergrid!
functions #1796. - The default anti-aliasing method can now be set in
CairoMakie.activate!
using theantialias
keyword. Available options areCairoMakie.Cairo.ANTIALIAS_*
#1875. - Added ability to rasterize a plots in CairoMakie vector graphics if
plt.rasterize = true
orplt.rasterize = scale::Int
#1872. - Fixed segfaults in
streamplot_impl
on Mac M1 #1830. - Set the Cairo miter limit to mimic GLMakie behaviour #1844.
- Fixed a method ambiguity in
rotatedrect
#1846. - Allow weights in statistical recipes #1816.
- Fixed manual cycling of plot attributes #1873.
- Fixed type constraints in ticklabelalign attributes #1882.
- Fixed WGLMakie performance bug and added option to set fps via
WGLMakie.activate!(fps=30)
. - Implemented
nan_color
,lowclip
,highclip
forimage(::Matrix{Float})
in shader. - Cleaned up mesh shader and implemented
nan_color
,lowclip
,highclip
formesh(m; color::Matrix{Float})
on the shader. - Allowed
GLMakie.Buffer
GLMakie.Sampler
to be used inGeometryBasics.Mesh
to partially update parts of a mesh/texture and different interpolation and clamping modes for the texture.
- Breaking Removed
Node
alias #1307, #1393. To upgrade, simply replace all occurrences ofNode
withObservable
. - Breaking Cleaned up
Scene
type #1192, #1393. TheScene()
constructor doesn't create any axes or limits anymore. All keywords likeraw
,show_axis
have been removed. A scene now always works like it did when using the deprecatedraw=true
. All the high level functionality like showing an axis and adding a 3d camera has been moved toLScene
. See the newScene
tutorial for more info: https://docs.makie.org/dev/tutorials/scenes/. - Breaking Lights got moved to
Scene
, see the lighting docs and RPRMakie examples. - Added ECDF plot #1310.
- Added Order Independent Transparency to GLMakie #1418, #1506. This type of transparency is now used with
transpareny = true
. The old transparency handling is available withtransparency = false
. - Fixed blurry text in GLMakie and WGLMakie #1494.
- Introduced a new experimental backend for ray tracing: RPRMakie.
- Added the
Cycled
type, which can be used to select the i-th value from the current cycler for a specific attribute #1248. - The plot function
scatterlines
now usescolor
asmarkercolor
ifmarkercolor
isautomatic
. Also, cycling of thecolor
attribute is enabled #1463. - Added the function
resize_to_layout!
, which allows to resize aFigure
so that it contains its topGridLayout
without additional whitespace or clipping #1438. - Cleaned up lighting in 3D contours and isosurfaces #1434.
- Adjusted attributes of volumeslices to follow the normal structure #1404. This allows you to adjust attributes like
colormap
without going through nested attributes. - Added depth to 3D contours and isosurfaces #1395, #1393. This allows them to intersect correctly with other 3D objects.
- Restricted 3D scene camera to one scene #1394, #1393. This fixes issues with multiple scenes fighting over events consumed by the camera. You can select a scene by cleaning on it.
- Added depth shift attribute for GLMakie and WGLMakie #1382, #1393. This can be used to adjust render order similar to
overdraw
. - Simplified automatic width computation in barplots #1223, #1393. If no
width
attribute is passed, the default width is computed as the minimum difference between consecutivex
positions. Gap between bars are given by the (multiplicative)gap
attribute. The actual bar width equalswidth * (1 - gap)
. - Added logical expressions for
ispressed
#1222, #1393. This moves a lot of control over hotkeys towards the user. With these changes one can now set a hotkey to trigger on any or no key, collections of keys and logical combinations of keys (i.e. "A is pressed and B is not pressed"). - Fixed issues with
Menu
render order #1411. - Added
label_rotation
to barplot #1401. - Fixed issue where
pixelcam!
does not remove controls from other cameras #1504. - Added conversion for OffsetArrays #1260.
- The
qqplot
qqline
options were changed to:identity
,:fit
,:fitrobust
and:none
(the default) #1563. Fixed numeric error due to double computation of quantiles when fittingqqline
. Deprecatedplot(q::QQPair)
method as it does not have enough information for correctqqline
fit.
All other changes are collected in this PR and in the release notes.
- The functions
labelslidergrid!
andlabelslider!
now set fixed widths for the value column with a heuristic. It is possible now to passFormatting.format
format strings as format specifiers in addition to the previous functions. - Fixed 2D arrow rotations in
streamplot
#1352.
- Reenabled Julia 1.3 support.
- Use MathTexEngine v0.2.
- Depend on new GeometryBasics, which changes all the Vec/Point/Quaternion/RGB/RGBA - f0 aliases to just f. For example,
Vec2f0
is changed toVec2f
. Old aliases are still exported, but deprecated and will be removed in the next breaking release. For more details and an upgrade script, visit GeometryBasics#97. - Added
hspan!
andvspan!
functions #1264.
- Switched documentation framework to Franklin.jl.
- Added a specialization for
volumeslices
to DataInspector. - Fixed 1 element
hist
#1238 and make it easier to movehist
#1150.
LaTeXString
s can now be used as input totext
and therefore as labels forAxis
,Legend
, or other comparable objects. Mathematical expressions are typeset using MathTeXEngine.jl which offers a fast approximation of LaTeX typesetting #1022.- Added
Symlog10
andpseudolog10
axis scales for log scale approximations that work with zero and negative values #1109. - Colorbar limits can now be passed as the attribute
colorrange
similar to plots #1066. - Added the option to pass three vectors to heatmaps and other plots using
SurfaceLike
conversion #1101. - Added
stairs
plot recipe #1086. - Breaking Removed
FigurePosition
andFigureSubposition
types. Indexing into aFigure
likefig[1, 1]
now returnsGridPosition
andGridSubposition
structs, which can be used in the same way as the types they replace. Because of an underlying change inGridLayoutBase.jl
, it is now possible to doAxis(gl[1, 1])
wheregl
is aGridLayout
that is a sublayout of aFigure
's top layout #1075. - Bar plots and histograms have a new option for adding text labels #1069.
- It is now possible to specify one
linewidth
value per segment inlinesegments
#992. - Added a new 3d camera that allows for better camera movements using keyboard and mouse #1024.
- Fixed the application of scale transformations to
surface
#1070. - Added an option to set a custom callback function for the
RectangleZoom
axis interaction to enable other use cases than zooming #1104. - Fixed rendering of
heatmap
s with one or more reversed ranges in CairoMakie, as inheatmap(1:10, 10:-1:1, rand(10, 10))
#1100. - Fixed volume slice recipe and added docs for it #1123.