immerse subplot gui fix; pyplot colorbars; subplot creation fix
This commit is contained in:
parent
8d490b9e52
commit
479ab989df
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -54,7 +54,7 @@ end
|
|||||||
|
|
||||||
function addAnnotations{X,Y,V}(plt::Plot{ImmersePackage}, anns::AVec{@compat(Tuple{X,Y,V})})
|
function addAnnotations{X,Y,V}(plt::Plot{ImmersePackage}, anns::AVec{@compat(Tuple{X,Y,V})})
|
||||||
for ann in anns
|
for ann in anns
|
||||||
push!(plt.o[2].guides, createGadflyAnnotationObject(ann...))
|
push!(getGadflyContext(plt).guides, createGadflyAnnotationObject(ann...))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -62,17 +62,6 @@ end
|
|||||||
|
|
||||||
# accessors for x/y data
|
# accessors for x/y data
|
||||||
|
|
||||||
# function Base.getindex(plt::Plot{ImmersePackage}, i::Int)
|
|
||||||
# data = plt.o[2].layers[end-i+1].mapping
|
|
||||||
# data[:x], data[:y]
|
|
||||||
# end
|
|
||||||
|
|
||||||
# function Base.setindex!(plt::Plot{ImmersePackage}, xy::Tuple, i::Integer)
|
|
||||||
# data = plt.o[2].layers[end-i+1].mapping
|
|
||||||
# data[:x], data[:y] = xy
|
|
||||||
# plt
|
|
||||||
# end
|
|
||||||
|
|
||||||
function Base.getindex(plt::Plot{ImmersePackage}, i::Integer)
|
function Base.getindex(plt::Plot{ImmersePackage}, i::Integer)
|
||||||
mapping = getGadflyMappings(plt, i)[1]
|
mapping = getGadflyMappings(plt, i)[1]
|
||||||
mapping[:x], mapping[:y]
|
mapping[:x], mapping[:y]
|
||||||
@ -80,9 +69,7 @@ end
|
|||||||
|
|
||||||
function Base.setindex!(plt::Plot{ImmersePackage}, xy::Tuple, i::Integer)
|
function Base.setindex!(plt::Plot{ImmersePackage}, xy::Tuple, i::Integer)
|
||||||
for mapping in getGadflyMappings(plt, i)
|
for mapping in getGadflyMappings(plt, i)
|
||||||
# @show "before",i xy mapping[:x] mapping[:y]
|
|
||||||
mapping[:x], mapping[:y] = xy
|
mapping[:x], mapping[:y] = xy
|
||||||
# @show "after",i xy mapping[:x] mapping[:y]
|
|
||||||
end
|
end
|
||||||
plt
|
plt
|
||||||
end
|
end
|
||||||
@ -92,8 +79,11 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function buildSubplotObject!(subplt::Subplot{ImmersePackage}, isbefore::Bool)
|
function buildSubplotObject!(subplt::Subplot{ImmersePackage}, isbefore::Bool)
|
||||||
isbefore && return false
|
return false
|
||||||
|
# isbefore && return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function showSubplotObject(subplt::Subplot{ImmersePackage})
|
||||||
# create the Gtk window with vertical box vsep
|
# create the Gtk window with vertical box vsep
|
||||||
d = getinitargs(subplt,1)
|
d = getinitargs(subplt,1)
|
||||||
w,h = d[:size]
|
w,h = d[:size]
|
||||||
@ -128,7 +118,7 @@ function buildSubplotObject!(subplt::Subplot{ImmersePackage}, isbefore::Bool)
|
|||||||
end
|
end
|
||||||
|
|
||||||
# destructor... clean up plots
|
# destructor... clean up plots
|
||||||
Gtk.on_signal_destroy((x...) -> [Immerse.dropfig(Immerse._display,i) for i in figindices], win)
|
Gtk.on_signal_destroy((x...) -> ([Immerse.dropfig(Immerse._display,i) for i in figindices]; subplt.o = nothing), win)
|
||||||
|
|
||||||
subplt.o = win
|
subplt.o = win
|
||||||
true
|
true
|
||||||
@ -194,6 +184,11 @@ end
|
|||||||
|
|
||||||
function Base.display(::PlotsDisplay, subplt::Subplot{ImmersePackage})
|
function Base.display(::PlotsDisplay, subplt::Subplot{ImmersePackage})
|
||||||
|
|
||||||
|
# if we haven't created the window yet, do it
|
||||||
|
if subplt.o == nothing
|
||||||
|
showSubplotObject(subplt)
|
||||||
|
end
|
||||||
|
|
||||||
# display the plots by creating a fresh Immerse.Figure object from the GtkCanvas and Gadfly.Plot
|
# display the plots by creating a fresh Immerse.Figure object from the GtkCanvas and Gadfly.Plot
|
||||||
for plt in subplt.plts
|
for plt in subplt.plts
|
||||||
fig, gplt = plt.o
|
fig, gplt = plt.o
|
||||||
|
|||||||
@ -1,73 +1,8 @@
|
|||||||
|
|
||||||
# https://github.com/stevengj/PyPlot.jl
|
# https://github.com/stevengj/PyPlot.jl
|
||||||
|
|
||||||
# immutable PyPlotPackage <: PlottingPackage end
|
|
||||||
|
|
||||||
# export pyplot
|
|
||||||
# pyplot() = backend(:pyplot)
|
|
||||||
|
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
|
|
||||||
# supportedArgs(::PyPlotPackage) = [
|
|
||||||
# :annotation,
|
|
||||||
# # :args,
|
|
||||||
# :axis,
|
|
||||||
# :background_color,
|
|
||||||
# :color,
|
|
||||||
# :color_palette,
|
|
||||||
# :fillrange,
|
|
||||||
# :fillcolor,
|
|
||||||
# :foreground_color,
|
|
||||||
# :group,
|
|
||||||
# # :heatmap_c,
|
|
||||||
# # :kwargs,
|
|
||||||
# :label,
|
|
||||||
# :layout,
|
|
||||||
# :legend,
|
|
||||||
# :linestyle,
|
|
||||||
# :linetype,
|
|
||||||
# :linewidth,
|
|
||||||
# :markershape,
|
|
||||||
# :markercolor,
|
|
||||||
# :markersize,
|
|
||||||
# :n,
|
|
||||||
# :nbins,
|
|
||||||
# :nc,
|
|
||||||
# :nr,
|
|
||||||
# # :pos,
|
|
||||||
# # :smooth,
|
|
||||||
# # :ribbon,
|
|
||||||
# :show,
|
|
||||||
# :size,
|
|
||||||
# :title,
|
|
||||||
# :windowtitle,
|
|
||||||
# :x,
|
|
||||||
# :xlabel,
|
|
||||||
# :xlims,
|
|
||||||
# :xticks,
|
|
||||||
# :y,
|
|
||||||
# :ylabel,
|
|
||||||
# :ylims,
|
|
||||||
# :yrightlabel,
|
|
||||||
# :yticks,
|
|
||||||
# :xscale,
|
|
||||||
# :yscale,
|
|
||||||
# :xflip,
|
|
||||||
# :yflip,
|
|
||||||
# :z,
|
|
||||||
# :tickfont,
|
|
||||||
# :guidefont,
|
|
||||||
# :legendfont,
|
|
||||||
# # :grid,
|
|
||||||
# ]
|
|
||||||
# supportedAxes(::PyPlotPackage) = _allAxes
|
|
||||||
# supportedTypes(::PyPlotPackage) = [:none, :line, :path, :steppre, :steppost, :sticks, :scatter, :heatmap, :hexbin, :hist, :bar, :hline, :vline]
|
|
||||||
# supportedStyles(::PyPlotPackage) = [:auto, :solid, :dash, :dot, :dashdot]
|
|
||||||
# # supportedMarkers(::PyPlotPackage) = [:none, :auto, :rect, :ellipse, :diamond, :utriangle, :dtriangle, :cross, :xcross, :star5, :hexagon]
|
|
||||||
# supportedMarkers(::PyPlotPackage) = vcat(_allMarkers, Shape)
|
|
||||||
# supportedScales(::PyPlotPackage) = [:identity, :log, :log2, :log10]
|
|
||||||
# subplotSupported(::PyPlotPackage) = true
|
|
||||||
|
|
||||||
# convert colorant to 4-tuple RGBA
|
# convert colorant to 4-tuple RGBA
|
||||||
getPyPlotColor(c::Colorant) = map(f->float(f(c)), (red, green, blue, alpha))
|
getPyPlotColor(c::Colorant) = map(f->float(f(c)), (red, green, blue, alpha))
|
||||||
getPyPlotColor(scheme::ColorScheme) = getPyPlotColor(getColor(scheme))
|
getPyPlotColor(scheme::ColorScheme) = getPyPlotColor(getColor(scheme))
|
||||||
@ -88,12 +23,6 @@ function getPyPlotLineStyle(linetype::Symbol, linestyle::Symbol)
|
|||||||
return "-"
|
return "-"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# function getMarkerGeom(d::Dict)
|
|
||||||
# shape = d[:markershape]
|
|
||||||
# gadflyshape(isa(shape, Shape) ? shape : _shapes[shape])
|
|
||||||
# end
|
|
||||||
|
|
||||||
function getPyPlotMarker(marker::Shape)
|
function getPyPlotMarker(marker::Shape)
|
||||||
marker.vertices
|
marker.vertices
|
||||||
end
|
end
|
||||||
@ -277,6 +206,12 @@ function plot!(pkg::PyPlotPackage, plt::Plot; kw...)
|
|||||||
elseif lt in (:heatmap, :hexbin)
|
elseif lt in (:heatmap, :hexbin)
|
||||||
|
|
||||||
extraargs[:gridsize] = d[:nbins]
|
extraargs[:gridsize] = d[:nbins]
|
||||||
|
c = d[:color]
|
||||||
|
if !isa(c, ColorGradient)
|
||||||
|
c = ColorGradient(:redsblues)
|
||||||
|
end
|
||||||
|
# c = ColorGradient(d[:color])
|
||||||
|
extraargs[:cmap] = getPyPlotColorMap(c)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -307,12 +242,17 @@ function plot!(pkg::PyPlotPackage, plt::Plot; kw...)
|
|||||||
extraargs[:label] = d[:label]
|
extraargs[:label] = d[:label]
|
||||||
|
|
||||||
# do the plot
|
# do the plot
|
||||||
if lt == :hist
|
d[:serieshandle] = if lt == :hist
|
||||||
d[:serieshandle] = plotfunc(d[:y]; extraargs...)[1]
|
plotfunc(d[:y]; extraargs...)[1]
|
||||||
elseif lt in (:scatter, :heatmap, :hexbin)
|
elseif lt in (:scatter, :heatmap, :hexbin)
|
||||||
d[:serieshandle] = plotfunc(d[:x], d[:y]; extraargs...)
|
plotfunc(d[:x], d[:y]; extraargs...)
|
||||||
else
|
else
|
||||||
d[:serieshandle] = plotfunc(d[:x], d[:y]; extraargs...)[1]
|
plotfunc(d[:x], d[:y]; extraargs...)[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
# add the colorbar legend
|
||||||
|
if plt.initargs[:legend] && haskey(extraargs, :cmap)
|
||||||
|
PyPlot.colorbar(d[:serieshandle])
|
||||||
end
|
end
|
||||||
|
|
||||||
# this sets the bg color inside the grid
|
# this sets the bg color inside the grid
|
||||||
|
|||||||
@ -157,6 +157,7 @@ function backend()
|
|||||||
@eval import PyPlot
|
@eval import PyPlot
|
||||||
@eval export PyPlot
|
@eval export PyPlot
|
||||||
@eval const pycolors = PyPlot.pywrap(PyPlot.pyimport("matplotlib.colors"))
|
@eval const pycolors = PyPlot.pywrap(PyPlot.pyimport("matplotlib.colors"))
|
||||||
|
# @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()
|
||||||
end
|
end
|
||||||
|
|||||||
@ -170,7 +170,7 @@ function subplot(args...; kw...)
|
|||||||
|
|
||||||
# initialize the individual plots
|
# initialize the individual plots
|
||||||
pkg = backend()
|
pkg = backend()
|
||||||
plts = Plot[]
|
plts = Plot{typeof(pkg)}[]
|
||||||
# ds = Dict[]
|
# ds = Dict[]
|
||||||
for i in 1:length(layout)
|
for i in 1:length(layout)
|
||||||
di = getPlotArgs(pkg, d, i)
|
di = getPlotArgs(pkg, d, i)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user