Merge pull request #641 from tbreloff/surfacecolor
Add fill_z attribute and plotly impl
This commit is contained in:
commit
492618ae67
@ -29,6 +29,7 @@ const _arg_desc = KW(
|
|||||||
:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.",
|
:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.",
|
||||||
:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.",
|
:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.",
|
||||||
:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).",
|
:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).",
|
||||||
|
:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.",
|
||||||
:levels => "Integer, NTuple{2,Integer}. Number of levels (or x-levels/y-levels) for a contour type.",
|
:levels => "Integer, NTuple{2,Integer}. Number of levels (or x-levels/y-levels) for a contour type.",
|
||||||
:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).",
|
:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).",
|
||||||
:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)",
|
:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)",
|
||||||
|
|||||||
@ -188,6 +188,7 @@ const _series_defaults = KW(
|
|||||||
:z => nothing, # depth for contour, surface, etc
|
:z => nothing, # depth for contour, surface, etc
|
||||||
:marker_z => nothing, # value for color scale
|
:marker_z => nothing, # value for color scale
|
||||||
:line_z => nothing,
|
:line_z => nothing,
|
||||||
|
:fill_z => nothing,
|
||||||
:levels => 15,
|
:levels => 15,
|
||||||
:orientation => :vertical,
|
:orientation => :vertical,
|
||||||
:bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side)
|
:bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side)
|
||||||
@ -431,6 +432,7 @@ add_aliases(:zguide, :zlabel, :zlab, :zl)
|
|||||||
add_aliases(:zlims, :zlim, :zlimit, :zlimits)
|
add_aliases(:zlims, :zlim, :zlimit, :zlimits)
|
||||||
add_aliases(:zticks, :ztick)
|
add_aliases(:zticks, :ztick)
|
||||||
add_aliases(:zrotation, :zrot, :zr)
|
add_aliases(:zrotation, :zrot, :zr)
|
||||||
|
add_aliases(:fill_z, :fillz, :fz, :surfacecolor, :surfacecolour, :sc, :surfcolor, :surfcolour)
|
||||||
add_aliases(:legend, :leg, :key)
|
add_aliases(:legend, :leg, :key)
|
||||||
add_aliases(:colorbar, :cb, :cbar, :colorkey)
|
add_aliases(:colorbar, :cb, :cbar, :colorkey)
|
||||||
add_aliases(:clims, :clim, :cbarlims, :cbar_lims, :climits, :color_limits)
|
add_aliases(:clims, :clim, :cbarlims, :cbar_lims, :climits, :color_limits)
|
||||||
|
|||||||
@ -20,7 +20,7 @@ const _plotly_attr = merge_with_base_supported([
|
|||||||
:guide, :lims, :ticks, :scale, :flip, :rotation,
|
:guide, :lims, :ticks, :scale, :flip, :rotation,
|
||||||
:tickfont, :guidefont, :legendfont,
|
:tickfont, :guidefont, :legendfont,
|
||||||
:grid, :legend, :colorbar,
|
:grid, :legend, :colorbar,
|
||||||
:marker_z, :levels,
|
:marker_z, :fill_z, :levels,
|
||||||
:ribbon, :quiver,
|
:ribbon, :quiver,
|
||||||
:orientation,
|
:orientation,
|
||||||
# :overwrite_figure,
|
# :overwrite_figure,
|
||||||
@ -371,6 +371,7 @@ end
|
|||||||
plotly_colorscale(c, α) = plotly_colorscale(cgrad(alpha=α), α)
|
plotly_colorscale(c, α) = plotly_colorscale(cgrad(alpha=α), α)
|
||||||
# plotly_colorscale(c, alpha = nothing) = plotly_colorscale(cgrad(), alpha)
|
# plotly_colorscale(c, alpha = nothing) = plotly_colorscale(cgrad(), alpha)
|
||||||
|
|
||||||
|
|
||||||
const _plotly_markers = KW(
|
const _plotly_markers = KW(
|
||||||
:rect => "square",
|
:rect => "square",
|
||||||
:xcross => "x",
|
:xcross => "x",
|
||||||
@ -488,6 +489,9 @@ function plotly_series(plt::Plot, series::Series)
|
|||||||
d_out[:contours] = KW(:x => wirelines, :y => wirelines, :z => wirelines)
|
d_out[:contours] = KW(:x => wirelines, :y => wirelines, :z => wirelines)
|
||||||
else
|
else
|
||||||
d_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha])
|
d_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha])
|
||||||
|
if series[:fill_z] != nothing
|
||||||
|
d_out[:surfacecolor] = plotly_surface_data(series, series[:fill_z])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
elseif st == :pie
|
elseif st == :pie
|
||||||
|
|||||||
@ -257,12 +257,23 @@ end
|
|||||||
# # 1 argument
|
# # 1 argument
|
||||||
# # --------------------------------------------------------------------
|
# # --------------------------------------------------------------------
|
||||||
|
|
||||||
|
# helper function to ensure relevant attributes are wrapped by Surface
|
||||||
|
function wrap_surfaces(d::KW)
|
||||||
|
if haskey(d, :fill_z)
|
||||||
|
v = d[:fill_z]
|
||||||
|
if !isa(v, Surface)
|
||||||
|
d[:fill_z] = Surface(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@recipe f(n::Integer) = is3d(get(d,:seriestype,:path)) ? (SliceIt, n, n, n) : (SliceIt, n, n, nothing)
|
@recipe f(n::Integer) = is3d(get(d,:seriestype,:path)) ? (SliceIt, n, n, n) : (SliceIt, n, n, nothing)
|
||||||
|
|
||||||
# return a surface if this is a 3d plot, otherwise let it be sliced up
|
# return a surface if this is a 3d plot, otherwise let it be sliced up
|
||||||
@recipe function f{T<:Union{Integer,AbstractFloat}}(mat::AMat{T})
|
@recipe function f{T<:Union{Integer,AbstractFloat}}(mat::AMat{T})
|
||||||
if all3D(d)
|
if all3D(d)
|
||||||
n,m = size(mat)
|
n,m = size(mat)
|
||||||
|
wrap_surfaces(d)
|
||||||
SliceIt, 1:m, 1:n, Surface(mat)
|
SliceIt, 1:m, 1:n, Surface(mat)
|
||||||
else
|
else
|
||||||
SliceIt, nothing, mat, nothing
|
SliceIt, nothing, mat, nothing
|
||||||
@ -274,6 +285,7 @@ end
|
|||||||
if all3D(d)
|
if all3D(d)
|
||||||
mat = fmt.data
|
mat = fmt.data
|
||||||
n,m = size(mat)
|
n,m = size(mat)
|
||||||
|
wrap_surfaces(d)
|
||||||
SliceIt, 1:m, 1:n, Formatted(Surface(mat), fmt.formatter)
|
SliceIt, 1:m, 1:n, Formatted(Surface(mat), fmt.formatter)
|
||||||
else
|
else
|
||||||
SliceIt, nothing, fmt, nothing
|
SliceIt, nothing, fmt, nothing
|
||||||
@ -400,6 +412,7 @@ end
|
|||||||
@recipe function f(x::AVec, y::AVec, zf::Function)
|
@recipe function f(x::AVec, y::AVec, zf::Function)
|
||||||
# x = X <: Number ? sort(x) : x
|
# x = X <: Number ? sort(x) : x
|
||||||
# y = Y <: Number ? sort(y) : y
|
# y = Y <: Number ? sort(y) : y
|
||||||
|
wrap_surfaces(d)
|
||||||
SliceIt, x, y, Surface(zf, x, y) # TODO: replace with SurfaceFunction when supported
|
SliceIt, x, y, Surface(zf, x, y) # TODO: replace with SurfaceFunction when supported
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -410,6 +423,7 @@ end
|
|||||||
if !like_surface(get(d, :seriestype, :none))
|
if !like_surface(get(d, :seriestype, :none))
|
||||||
d[:seriestype] = :contour
|
d[:seriestype] = :contour
|
||||||
end
|
end
|
||||||
|
wrap_surfaces(d)
|
||||||
SliceIt, x, y, Surface(z)
|
SliceIt, x, y, Surface(z)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user