ColorGradient fixes; allow default keywords in backend calls

This commit is contained in:
Thomas Breloff 2016-01-29 17:21:25 -05:00
parent d077307721
commit d5797054fb
3 changed files with 28 additions and 20 deletions

View File

@ -12,7 +12,9 @@ getPyPlotColor(c, α=nothing) = getPyPlotColor(convertColor(c, α))
function getPyPlotColorMap(c::ColorGradient, α=nothing) function getPyPlotColorMap(c::ColorGradient, α=nothing)
# c = ColorGradient(c.colors, c.values, alpha=α) # c = ColorGradient(c.colors, c.values, alpha=α)
# pycolors.pymember("LinearSegmentedColormap")[:from_list]("tmp", map(getPyPlotColor, getColorVector(c))) # pycolors.pymember("LinearSegmentedColormap")[:from_list]("tmp", map(getPyPlotColor, getColorVector(c)))
pyvals = [(c.values[i], getPyPlotColor(c.colors[i], α)) for i in 1:length(c.colors)] # pyvals = [(c.values[i], getPyPlotColor(c.colors[i], α)) for i in 1:length(c.colors)]
pyvals = [(v, getPyPlotColor(getColorZ(c, v), α)) for v in c.values]
# @show c α pyvals
pycolors.pymember("LinearSegmentedColormap")[:from_list]("tmp", pyvals) pycolors.pymember("LinearSegmentedColormap")[:from_list]("tmp", pyvals)
end end

View File

@ -75,28 +75,34 @@ immutable ColorGradient <: ColorScheme
colors::Vector{Colorant} colors::Vector{Colorant}
values::Vector{Float64} values::Vector{Float64}
function ColorGradient{T<:Colorant,S<:Real}(cs::AVec{T}, vals::AVec{S} = 0:1; alpha = nothing) function ColorGradient{T<:Colorant,S<:Real}(cs::AVec{T}, vals::AVec{S} = linspace(0, 1, length(cs)); alpha = nothing)
if length(cs) == length(vals) if length(cs) == length(vals)
return new(convertColor(cs,alpha), collect(vals)) return new(convertColor(cs,alpha), collect(vals))
end end
# otherwise interpolate evenly between the minval and maxval # # otherwise interpolate evenly between the minval and maxval
minval, maxval = minimum(vals), maximum(vals) # minval, maxval = minimum(vals), maximum(vals)
vs = Float64[interpolate(minval, maxval, w) for w in linspace(0, 1, length(cs))] # vs = Float64[interpolate(minval, maxval, w) for w in linspace(0, 1, length(cs))]
new(convertColor(cs,alpha), vs) # new(convertColor(cs,alpha), vs)
# interpolate the colors for each value
grad = ColorGradient(cs)
cs = [getColorZ(grad, z) for z in linspace(0, 1, length(vals))]
new(convertColor(cs, alpha), collect(vals)) #collect(linspace(0, 1, length(cs))))
end end
end end
# create a gradient from a symbol (blues, reds, etc) and vector of boundary values # create a gradient from a symbol (blues, reds, etc) and vector of boundary values
function ColorGradient{T<:Real}(s::Symbol, vals::AVec{T} = 0:1; kw...) function ColorGradient{T<:Real}(s::Symbol, vals::AVec{T} = 0:0; kw...)
haskey(_gradients, s) || error("Invalid gradient symbol. Choose from: ", sort(collect(keys(_gradients)))) haskey(_gradients, s) || error("Invalid gradient symbol. Choose from: ", sort(collect(keys(_gradients))))
# if we passed in the right number of values, create the gradient directly
cs = _gradients[s] cs = _gradients[s]
if vals == 0:0
vals = linspace(0, 1, length(cs))
end
ColorGradient(cs, vals; kw...) ColorGradient(cs, vals; kw...)
end end
function ColorGradient{T<:Real}(cs::AVec{Symbol}, vals::AVec{T} = 0:1; kw...) function ColorGradient{T<:Real}(cs::AVec{Symbol}, vals::AVec{T} = linspace(0, 1, length(cs)); kw...)
ColorGradient(map(convertColor, cs), vals; kw...) ColorGradient(map(convertColor, cs), vals; kw...)
end end

View File

@ -26,16 +26,16 @@ export
glvisualize glvisualize
# winston # winston
gadfly() = backend(:gadfly) gadfly(; kw...) = (default(; kw...); backend(:gadfly))
immerse() = backend(:immerse) immerse(; kw...) = (default(; kw...); backend(:immerse))
pyplot() = backend(:pyplot) pyplot(; kw...) = (default(; kw...); backend(:pyplot))
qwt() = backend(:qwt) qwt(; kw...) = (default(; kw...); backend(:qwt))
unicodeplots() = backend(:unicodeplots) unicodeplots(; kw...) = (default(; kw...); backend(:unicodeplots))
bokeh() = backend(:bokeh) bokeh(; kw...) = (default(; kw...); backend(:bokeh))
plotly() = backend(:plotly) plotly(; kw...) = (default(; kw...); backend(:plotly))
gr() = backend(:gr) gr(; kw...) = (default(; kw...); backend(:gr))
glvisualize() = backend(:glvisualize) glvisualize(; kw...) = (default(; kw...); backend(:glvisualize))
# winston() = backend(:winston) # winston(; kw...) = (default(; kw...); backend(:winston))
backend_name(::GadflyPackage) = :gadfly backend_name(::GadflyPackage) = :gadfly
backend_name(::ImmersePackage) = :immerse backend_name(::ImmersePackage) = :immerse