Imagesc in Julia v0.5


#1

Up to and including Julia v0.4 I have been using Winston for plotting, but I am experiencing problems in v0.5 and hence I am starting to use other packages.

One particular thing I miss is the imagesc function for viewing matrices as images. I know Gadfly has a spy function, but I prefer an external window for graphics.

Does anyone know of such an imagesc-ish function?


#2

here are a 2 valid approaches with the newly released GLVisualize:
install:

Pkg.update(); Pkg.add("GLVisualize"); Pkg.add("Plots")

With Plots.jl

using Plots, Colors; glvisualize()
plot(rand(RGBA{U8}, 1000, 1000))

More bare bone:

using GLVisualize, Colors; w = glscreen(); @async renderloop(w)
_view(visualize(rand(RGBA{U8}, 1000, 1000)))

#3

And of course this isn’t limited to the glvisualize backend. Plotting a
matrix of colors “shows an image”, but there’s also a heatmap and spy (I
forget…might be in StatPlots…)


#4

In PyPlot the function is called imshow


#5

Wow! There are lots of options :slight_smile:

Thanks a lot!


#6

I use PlotlyJS’s heatmap function for this sort of thing. I think it’s not as efficient as a raw raster display, as it creates a rectangle per-pixel, but it works relatively well. Plotly has an open issue to support raster data directly.


#7

could you please give more context, about what doesn’t work in v0.5 and information about your system?


#8

Sure. Tried on both Linux Mint and OS X Yosemite and the problem is the same.

In order to make Winston work I have to load it as the first package and open a plot (maybe using Winston; plot(something) should even be the first commands).

If I load other packages first, do some calculations, then load Winston and try to plot I get errors.

I can provide a (non-)working example if you’re interested, but probably not before Monday.


#9

imagesc works fine for me with julia 0.5

The following

  Winston.imagesc([0 2 4 6; 8 10 12 14; 16 18 20 22])

gives a result pretty close to the picture displayed on the matlab website
I would agree that Winston segfaults sometimes (e.g. when closing a plot window) but not more frequently since 0.5.


#10

Yes, using Winston and then running that command also works for me. But with a package of mine there are problems:

using GeneralizedSampling
using Winston
plot(rand(8))

Returns

error during Tk callback:
ERROR: TypeError: non-boolean (Bool) used in boolean context
Error showing value of type Winston.FramedPlot:
ERROR: TypeError: non-boolean (Bool) used in boolean context

After a bit of testing I have concluded that my GeneralizedSampling package is the problem (on Julia v0.5, not v0.4), but I am not going to look deeper into the roots of this now.