2014-06-06 1 views
9

Est-il possible de rendre un tracé de Gadfly directement sur une toile? Je voudrais développer une interface graphique de Julia en utilisant gtk qui rend les complots de Gadfly.Rendu Gadfly tracer directement sur une toile Gtk

J'espère que quelque chose le long des lignes de:

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

ou

draw(c::GtkCanvas, some_plot) 

Mon approche actuelle permet de gagner et .png charge alors l'image. De toute évidence pas optimale:

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) 

Merci

+0

Bonne question! – hdante

Répondre

2

Vous devriez regarder le paquet de Tim Saint Immerse qui fait cela, qui peut également être accessible par mon colis Plots.

Immerger crée des contextes Gadfly et les restitue aux toiles Gtk avec des fonctionnalités interactives supplémentaires.