Render Gadfly plots directly to a Gtk canvas
Asked Answered
N

1

9

Is it possible to render a Gadfly plot directly to a canvas? I would like to develop a Julia GUI using gtk which renders Gadfly plots.

I am hoping for something along the lines of:

some_plot = plot(x=[1,2,3],y=[4,5,6])
draw(ctx::CairoContext, some_plot)

or

draw(c::GtkCanvas, some_plot)

My current approach saves a png and then loads the image. Obviously not optimal:

ctx = getgc(canvas)
canvas_w = width(canvas)
canvas_h = height(canvas)

save(ctx)
set_source_rgb(ctx,1,1,1)
rectangle(ctx,0,0,canvas_w,canvas_h)
fill(ctx)
restore(ctx)

some_plot = plot(x=[1,2,3],y=[4,5,6])
draw(PNG("myplot.png", 8inch, 4inch), some_plot)

save(ctx)
image = read_from_png("myplot.png")
w = image.width
h = image.height
translate(ctx, canvas_w/2, canvas_h/2)
scale(ctx, canvas_w/w, canvas_h/h)
translate(ctx, -0.5*w, -0.5*h)
set_source_surface(ctx, image, 0, 0)
paint(ctx)
restore(ctx)

Thank you

Nkvd answered 6/6, 2014 at 22:6 Comment(0)
D
2

You should look at Tim Holy's package Immerse which does this, which can also be accessed through my package Plots.

Immerse creates Gadfly contexts and renders them to Gtk canvases with some additional interactive functionality.

Desjardins answered 4/10, 2015 at 14:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.