I come across the following colorbar somewhere and would like to implement something similar for my heatmap
plot in CairoMakie
:
So suppose I want ColorSchemes.viridis
from -5 to -2, and then ColorSchemes.Greys_3
from -2 to 0, how should I combine the two?
1 Like
Does this work for you?
using GLMakie
using ColorSchemes
GLMakie.activate!()
fig = Figure(resolution = (800, 800));
ax = Axis(fig[1,1])
xs = LinRange(0, 10, 100);
ys = LinRange(0, 15, 100);
zs = [ -5 * cos(x) * sin(y) for x in xs, y in ys]
# color bar ratios
cmin, cmiddle, cmax = -5, -2, 0
clength = cmax - cmin
ratio_viridis = (cmiddle - cmin) / clength
ratio_greys3 = (cmax - cmiddle) / clength
# construct a colormap
viridis = get(ColorSchemes.viridis, LinRange(0,1,Int64(ratio_viridis*100)))
greys3 = get(ColorSchemes.Greys_3, LinRange(0,1,Int64(ratio_greys3*100)))
virgre3 = vcat(viridis, greys3)
h = heatmap!(ax, xs, ys, zs, colormap=virgre3, colorrange=(cmin, cmax))
Colorbar(fig[1,2], h)
fig
2 Likes