pyplot gui fixes and background/foreground fixes with writemime

This commit is contained in:
Thomas Breloff 2015-10-25 00:34:20 -04:00
parent 1c556ade57
commit a9b39fad64
5 changed files with 50 additions and 11 deletions

View File

@ -511,9 +511,17 @@ end
# 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) 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 end
@ -524,20 +532,47 @@ function finalizePlot(subplt::Subplot{PyPlotPackage})
end end
end end
function Base.display(::PlotsDisplay, subplt::Subplot{PyPlotPackage}) # function Base.display(::PlotsDisplay, subplt::Subplot{PyPlotPackage})
finalizePlot(subplt) # finalizePlot(subplt)
display(getfig(subplt.o)) # PyPlot.ion()
end # PyPlot.figure(getfig(subplt.o).o[:number])
# PyPlot.draw_if_interactive()
# PyPlot.ioff()
# # display(getfig(subplt.o))
# end
# allow for writing any supported mime # # allow for writing any supported mime
for mime in (MIME"image/png", MIME"application/pdf", MIME"application/postscript") # for mime in (MIME"image/png", MIME"application/pdf", MIME"application/postscript")
@eval function Base.writemime(io::IO, ::$mime, plt::PlottingObject{PyPlotPackage}) # @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) 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
end end
# function Base.writemime(io::IO, m::MIME"image/png", subplt::Subplot{PyPlotPackage}) # function Base.writemime(io::IO, m::MIME"image/png", subplt::Subplot{PyPlotPackage})
# finalizePlot(subplt) # finalizePlot(subplt)
# writemime(io, m, getfig(subplt.o)) # writemime(io, m, getfig(subplt.o))

View File

@ -160,6 +160,7 @@ function backend()
# @eval const pycolorbar = PyPlot.pywrap(PyPlot.pyimport("matplotlib.colorbar")) # @eval const pycolorbar = PyPlot.pywrap(PyPlot.pyimport("matplotlib.colorbar"))
if !isa(Base.Multimedia.displays[end], Base.REPL.REPLDisplay) if !isa(Base.Multimedia.displays[end], Base.REPL.REPLDisplay)
PyPlot.ioff() PyPlot.ioff()
PyPlot.pygui(true)
end end
catch err catch err
warn("Couldn't import PyPlot. Install it with: Pkg.add(\"PyPlot\").") warn("Couldn't import PyPlot. Install it with: Pkg.add(\"PyPlot\").")

View File

@ -1,4 +1,7 @@
# include this first to help with crashing??
using Gtk
# macro test_approx_eq_sigma_eps(A, B, sigma, eps) # macro test_approx_eq_sigma_eps(A, B, sigma, eps)
include("../docs/example_generation.jl") include("../docs/example_generation.jl")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB