diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index cf2edf76..500bf16a 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -511,9 +511,17 @@ end # end -function Base.display(::PlotsDisplay, plt::Plot{PyPlotPackage}) +# NOTE: to bring up a GUI window in IJulia, need some extra steps +function Base.display(::PlotsDisplay, plt::PlottingObject{PyPlotPackage}) finalizePlot(plt) - display(getfig(plt.o)) + if isa(Base.Multimedia.displays[end], Base.REPL.REPLDisplay) + display(getfig(plt.o)) + else + PyPlot.ion() + PyPlot.figure(getfig(plt.o).o[:number]) + PyPlot.draw_if_interactive() + PyPlot.ioff() + end end @@ -524,20 +532,47 @@ function finalizePlot(subplt::Subplot{PyPlotPackage}) end end -function Base.display(::PlotsDisplay, subplt::Subplot{PyPlotPackage}) - finalizePlot(subplt) - display(getfig(subplt.o)) -end +# function Base.display(::PlotsDisplay, subplt::Subplot{PyPlotPackage}) +# finalizePlot(subplt) +# PyPlot.ion() +# PyPlot.figure(getfig(subplt.o).o[:number]) +# PyPlot.draw_if_interactive() +# PyPlot.ioff() +# # display(getfig(subplt.o)) +# end -# allow for writing any supported mime -for mime in (MIME"image/png", MIME"application/pdf", MIME"application/postscript") - @eval function Base.writemime(io::IO, ::$mime, plt::PlottingObject{PyPlotPackage}) +# # allow for writing any supported mime +# for mime in (MIME"image/png", MIME"application/pdf", MIME"application/postscript") +# @eval function Base.writemime(io::IO, ::$mime, plt::PlottingObject{PyPlotPackage}) +# finalizePlot(plt) +# writemime(io, $mime(), getfig(plt.o)) +# end +# end + +const _pyplot_mimeformats = @compat Dict( + "application/eps" => "eps", + "image/eps" => "eps", + "application/pdf" => "pdf", + "image/png" => "png", + "application/postscript" => "ps", + # "image/svg+xml" => "svg" + ) + + +for (mime, fmt) in _pyplot_mimeformats + @eval function Base.writemime(io::IO, ::MIME{symbol($mime)}, plt::PlottingObject{PyPlotPackage}) finalizePlot(plt) - writemime(io, $mime(), getfig(plt.o)) + fig = getfig(plt.o) + fig.o["canvas"][:print_figure](io, + format=$fmt, + bbox_inches="tight", + facecolor = fig.o["get_facecolor"](), + edgecolor = "none" + # edgecolor = fig.o["get_edgecolor"]() + ) end end - # function Base.writemime(io::IO, m::MIME"image/png", subplt::Subplot{PyPlotPackage}) # finalizePlot(subplt) # writemime(io, m, getfig(subplt.o)) diff --git a/src/plotter.jl b/src/plotter.jl index b0e03c58..a9b783ea 100644 --- a/src/plotter.jl +++ b/src/plotter.jl @@ -160,6 +160,7 @@ function backend() # @eval const pycolorbar = PyPlot.pywrap(PyPlot.pyimport("matplotlib.colorbar")) if !isa(Base.Multimedia.displays[end], Base.REPL.REPLDisplay) PyPlot.ioff() + PyPlot.pygui(true) end catch err warn("Couldn't import PyPlot. Install it with: Pkg.add(\"PyPlot\").") diff --git a/test/imgcomp.jl b/test/imgcomp.jl index 72620b05..e5f43fde 100644 --- a/test/imgcomp.jl +++ b/test/imgcomp.jl @@ -1,4 +1,7 @@ +# include this first to help with crashing?? +using Gtk + # macro test_approx_eq_sigma_eps(A, B, sigma, eps) include("../docs/example_generation.jl") diff --git a/test/refimg/v0.4/gadfly/ref1.png b/test/refimg/v0.4/gadfly/ref1.png index 8645d95d..d4e8b9f3 100644 Binary files a/test/refimg/v0.4/gadfly/ref1.png and b/test/refimg/v0.4/gadfly/ref1.png differ diff --git a/test/refimg/v0.4/gadfly/ref3.png b/test/refimg/v0.4/gadfly/ref3.png index 03bb34db..56d935a5 100644 Binary files a/test/refimg/v0.4/gadfly/ref3.png and b/test/refimg/v0.4/gadfly/ref3.png differ