Support offset vectors as fillrange and ribbon
This commit is contained in:
parent
8b7f87506a
commit
0db321aecc
@ -885,6 +885,7 @@ const _examples = PlotExample[
|
|||||||
sv = SVector{10}(rand(10))
|
sv = SVector{10}(rand(10))
|
||||||
ov = OffsetVector(rand(10), -2)
|
ov = OffsetVector(rand(10), -2)
|
||||||
plot([sv, ov], label = ["StaticArray" "OffsetArray"])
|
plot([sv, ov], label = ["StaticArray" "OffsetArray"])
|
||||||
|
plot!(3ov, ribbon=ov, label="OffsetArray ribbon")
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
],
|
],
|
||||||
|
|||||||
12
src/utils.jl
12
src/utils.jl
@ -126,8 +126,8 @@ isnothing(x) = false
|
|||||||
_cycle(wrapper::InputWrapper, idx::Int) = wrapper.obj
|
_cycle(wrapper::InputWrapper, idx::Int) = wrapper.obj
|
||||||
_cycle(wrapper::InputWrapper, idx::AVec{Int}) = wrapper.obj
|
_cycle(wrapper::InputWrapper, idx::AVec{Int}) = wrapper.obj
|
||||||
|
|
||||||
_cycle(v::AVec, idx::Int) = v[mod1(idx, length(v))]
|
_cycle(v::AVec, idx::Int) = v[mod(idx, axes(v,1))]
|
||||||
_cycle(v::AMat, idx::Int) = size(v,1) == 1 ? v[1, mod1(idx, size(v,2))] : v[:, mod1(idx, size(v,2))]
|
_cycle(v::AMat, idx::Int) = size(v,1) == 1 ? v[end, mod(idx, axes(v,2))] : v[:, mod(idx, axes(v,2))]
|
||||||
_cycle(v, idx::Int) = v
|
_cycle(v, idx::Int) = v
|
||||||
|
|
||||||
_cycle(v::AVec, indices::AVec{Int}) = map(i -> _cycle(v,i), indices)
|
_cycle(v::AVec, indices::AVec{Int}) = map(i -> _cycle(v,i), indices)
|
||||||
@ -362,10 +362,10 @@ end
|
|||||||
ok(tup::Tuple) = ok(tup...)
|
ok(tup::Tuple) = ok(tup...)
|
||||||
|
|
||||||
# compute one side of a fill range from a ribbon
|
# compute one side of a fill range from a ribbon
|
||||||
function make_fillrange_side(y, rib)
|
function make_fillrange_side(y::AVec, rib)
|
||||||
frs = zeros(length(y))
|
frs = zeros(axes(y))
|
||||||
for (i, (yi, ri)) in enumerate(zip(y, Base.Iterators.cycle(rib)))
|
for (i, yi) in pairs(y)
|
||||||
frs[i] = yi + ri
|
frs[i] = yi + _cycle(rib,i)
|
||||||
end
|
end
|
||||||
frs
|
frs
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user