I shared this recipe some time ago, maybe this capability should be added to Makie.jl directly?..
Basically, image() but alpha can be an array of values:
@recipe ImageAlpha (
x::Makie.EndPoints,
y::Makie.EndPoints,
image::AbstractMatrix{<:Number}) begin
Makie.MakieCore.documented_attributes(Makie.Image)...
alpha = nothing
alpharange = 0..1
end
function Makie.plot!(p::ImageAlpha)
alpha = p.alpha[]
p.alpha = 1
Makie.color_and_colormap!(p, p.image)
imcolors = @lift Makie.to_color($(p.calculated_colors))
alphas_interval = @lift @something(extrema($(p.alpharange)), extrema(alpha))
alpha = @lift clamp.((alpha .- $alphas_interval[1]) ./ ($alphas_interval[2] - $alphas_interval[1]), 0, 1)
imcolors_a = @lift Makie.coloralpha.($imcolors, $alpha)
image!(p, Makie.shared_attributes(p, Image), imcolors_a)
return p
end
Makie.convert_arguments(::Type{<:ImageAlpha}, args...) = Makie.convert_arguments(ImageLike(), args...)
