Blank Heatmaps in GLMakie

I’ve tried the recent exciting Makie update but heatmaps all seem to come out completely blank. E.g.

using GLMakie
fig = Figure()
ax = fig[1,1] = Axis(fig)
hm = heatmap!(ax,randn(5, 5), axis = (aspect = 1,))
Colorbar(fig[1,2], hm, width=25)


I’m using Windows 10, GLMakie 0.3.0.
Other features of the new update such as colour cycling and DataInspector are working fine (and very welcome - thanks!).

I think the additional axis keyword in the heatmap call might mess this up, because the GLMakie backend doesn’t know what to do with it. You already have an axis, so you can’t pass an additional axis keyword. Pass the aspect to the Axis directly instead.

My example is over-complicated because I copied the code fron the Makie announcement thread and also wanted to show that Colorbar still works. Just using

heatmap(rand(5, 5))

gives exactly the same problem.

I just checked and I can’t reproduce it.
Can you show the versions of Makie + GLMakie?

What could have happened is, that the new shader introduced one of those super annoying driver specific bugs…
Can you show the output of display(heatmap(rand(5, 5))) ?

In case it’s relevant, PlotlyJS seemed to be holding back the update so I had to remove it (something about WebIO versions, I think) before I could get the latest version of GLMakie.

I’ve tried deleting my .julia folder and re-instantiating but that didn’t help.

[e9467ef8] GLMakie v0.3.0
[ee78f7c6] Makie v0.13.1
display(heatmap(rand(5, 5)))

I also can’t reproduce :man_shrugging:

I have a UHD display using the Intel UHD graphics 630 with NVidia GTX 1650 on a Dell XPS15.

I can reproduce the empty plot and I also have a Dell XPS175 with an NVIDIA card. And that’s probably the same reason why 3D scatter plots do not work too. As I mentioned in another thread this plots an empty axes

f = Figure(resolution = (1200, 800), fontsize = 14)
ax = Axis3(f[fldmod1(1, 2)...], aspect = (1,1,1));
scatter!(rand(10), rand(10), rand(10))

but oddly surface works

That plot’s blank for me as well.

Is there really no output whatsoever if you do an explicit display(fig) or is everyone just omitting the printout?

Guess we are omitting the fig, This is what I get with the scatter example

The only output, apart from the picture itself, was:

julia> display(heatmap(rand(5, 5)))

can you try really large marker sizes here like markersize = 2000? I think there’s a scaling issue with Axis3 and scatter specifically

That gives me very tiny points. Making it bigger still

f = Figure()
ax = Axis3(f[fldmod1(1, 2)...], aspect = (1,1,1))
scatter!(rand(10), rand(10), rand(10), markersize = 2000*2)


It doesn’t change the heatmap.

Sorry to deviate a little but I’ll have to go soon and wanted to leave this other remark.
This surface plot works fine (aside from me still having to figure out the tight memory layout for the matrices). It shows the Canary islands and coast of Africa from an unknown viewpoint, but that doesn’t matter here. What matters is that once displayed my GPU stays a 100% use and fan goes crazy even if I don’t touch the figure. That, I think, is a very killing feature, specially when run from laptops.

using GLMakie, GMT
f = Figure(resolution = (1200, 800), fontsize = 14)
ax = Axis3(f[fldmod1(1, 2)...], aspect = (1,1,0.1))
G = gmtread("mauritania.grd");
surface!(G.y, G.x, G.z)

Heatmaps also work for me. I do have the same issue with scatter on Axis3 though. It looks fine with LScene though…

Hi @joa-quim. I had that problem with plots with lots of data and the solution given to me was to reduce the rate at which the plot is redrawn by something like


The only output, apart from the picture itself, was:

How annoying…that gives me very little to debug this obviously GPU driver dependent bug -.-

Can someone with this issue confirm, that the heatmap works on GLMakie@0.2.9?

Thanks @tt1234567 it does make a difference but not that much. Experimenting with this case showed that I need a framerate~=10 to have a smooth refresh, but with that the gpu usage is in the 70-80%