working on annotations
This commit is contained in:
parent
fd3a4d0a0e
commit
eafc1a784c
@ -168,6 +168,7 @@ xlims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(xlims = lims)
|
|||||||
ylims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(ylims = lims)
|
ylims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(ylims = lims)
|
||||||
xticks!{T<:Real}(v::AVec{T}) = plot!(xticks = v)
|
xticks!{T<:Real}(v::AVec{T}) = plot!(xticks = v)
|
||||||
yticks!{T<:Real}(v::AVec{T}) = plot!(yticks = v)
|
yticks!{T<:Real}(v::AVec{T}) = plot!(yticks = v)
|
||||||
|
annotate!(annotations) = plot!(annotation = annotations)
|
||||||
```
|
```
|
||||||
|
|
||||||
Some keyword arguments you can set:
|
Some keyword arguments you can set:
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
27
src/Plots.jl
27
src/Plots.jl
@ -43,6 +43,7 @@ export
|
|||||||
ylims!,
|
ylims!,
|
||||||
xticks!,
|
xticks!,
|
||||||
yticks!,
|
yticks!,
|
||||||
|
annotate!,
|
||||||
|
|
||||||
savepng,
|
savepng,
|
||||||
gui,
|
gui,
|
||||||
@ -96,21 +97,23 @@ ohlc(args...; kw...) = plot(args...; kw..., linetype = :ohlc)
|
|||||||
ohlc!(args...; kw...) = plot!(args...; kw..., linetype = :ohlc)
|
ohlc!(args...; kw...) = plot!(args...; kw..., linetype = :ohlc)
|
||||||
|
|
||||||
|
|
||||||
title!(s::AbstractString) = plot!(title = s)
|
title!(s::AbstractString) = plot!(title = s)
|
||||||
xlabel!(s::AbstractString) = plot!(xlabel = s)
|
xlabel!(s::AbstractString) = plot!(xlabel = s)
|
||||||
ylabel!(s::AbstractString) = plot!(ylabel = s)
|
ylabel!(s::AbstractString) = plot!(ylabel = s)
|
||||||
xlims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(xlims = lims)
|
xlims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(xlims = lims)
|
||||||
ylims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(ylims = lims)
|
ylims!{T<:Real,S<:Real}(lims::Tuple{T,S}) = plot!(ylims = lims)
|
||||||
xticks!{T<:Real}(v::AVec{T}) = plot!(xticks = v)
|
xticks!{T<:Real}(v::AVec{T}) = plot!(xticks = v)
|
||||||
yticks!{T<:Real}(v::AVec{T}) = plot!(yticks = v)
|
yticks!{T<:Real}(v::AVec{T}) = plot!(yticks = v)
|
||||||
|
annotate!(anns) = plot!(annotation = anns)
|
||||||
|
|
||||||
title!(plt::Plot, s::AbstractString) = plot!(plt; title = s)
|
title!(plt::Plot, s::AbstractString) = plot!(plt; title = s)
|
||||||
xlabel!(plt::Plot, s::AbstractString) = plot!(plt; xlabel = s)
|
xlabel!(plt::Plot, s::AbstractString) = plot!(plt; xlabel = s)
|
||||||
ylabel!(plt::Plot, s::AbstractString) = plot!(plt; ylabel = s)
|
ylabel!(plt::Plot, s::AbstractString) = plot!(plt; ylabel = s)
|
||||||
xlims!{T<:Real,S<:Real}(plt::Plot, lims::Tuple{T,S}) = plot!(plt; xlims = lims)
|
xlims!{T<:Real,S<:Real}(plt::Plot, lims::Tuple{T,S}) = plot!(plt; xlims = lims)
|
||||||
ylims!{T<:Real,S<:Real}(plt::Plot, lims::Tuple{T,S}) = plot!(plt; ylims = lims)
|
ylims!{T<:Real,S<:Real}(plt::Plot, lims::Tuple{T,S}) = plot!(plt; ylims = lims)
|
||||||
xticks!{T<:Real}(plt::Plot, v::AVec{T}) = plot!(plt; xticks = v)
|
xticks!{T<:Real}(plt::Plot, v::AVec{T}) = plot!(plt; xticks = v)
|
||||||
yticks!{T<:Real}(plt::Plot, v::AVec{T}) = plot!(plt; yticks = v)
|
yticks!{T<:Real}(plt::Plot, v::AVec{T}) = plot!(plt; yticks = v)
|
||||||
|
annotate!(plt::Plot, anns) = plot!(plt; annotation = anns)
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------
|
# ---------------------------------------------------------
|
||||||
|
|||||||
93
src/args.jl
93
src/args.jl
@ -390,96 +390,3 @@ function getSeriesArgs(pkg::PlottingPackage, initargs::Dict, kw, commandIndex::I
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# # note: idx is the index of this series within this call, n is the index of the series from all calls to plot/subplot
|
|
||||||
# function getPlotKeywordArgs(pkg::PlottingPackage, kw, idx::Int, n::Int)
|
|
||||||
# d = Dict(kw)
|
|
||||||
|
|
||||||
# # # replace alternate names
|
|
||||||
# # for tup in kw
|
|
||||||
# # if haskey(ALT_ARG_NAMES, tup)
|
|
||||||
# # d[tup[1]] = ALT_ARG_NAMES[tup]
|
|
||||||
# # end
|
|
||||||
# # end
|
|
||||||
|
|
||||||
# # default to a white background, but only on the initial call (so we don't change the background automatically)
|
|
||||||
# if haskey(d, :background_color)
|
|
||||||
# d[:background_color] = getRGBColor(d[:background_color])
|
|
||||||
# elseif n == 0
|
|
||||||
# d[:background_color] = colorant"white"
|
|
||||||
# end
|
|
||||||
|
|
||||||
# # fill in d with either 1) plural value, 2) value, 3) default
|
|
||||||
# for k in keys(PLOT_DEFAULTS)
|
|
||||||
# plural = makeplural(k)
|
|
||||||
# if !haskey(d, k)
|
|
||||||
# if n == 0 || k != :size
|
|
||||||
# d[k] = haskey(d, plural) ? autopick(d[plural], idx) : PLOT_DEFAULTS[k]
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# delete!(d, plural)
|
|
||||||
# end
|
|
||||||
|
|
||||||
# # auto-pick
|
|
||||||
# if n > 0
|
|
||||||
# if d[:axis] == :auto
|
|
||||||
# d[:axis] = autopick_ignore_none_auto(supportedAxes(pkg), n)
|
|
||||||
# end
|
|
||||||
# # if d[:linetype] == :auto
|
|
||||||
# # d[:linetype] = autopick_ignore_none_auto(supportedTypes(pkg), n)
|
|
||||||
# # end
|
|
||||||
# if d[:linestyle] == :auto
|
|
||||||
# d[:linestyle] = autopick_ignore_none_auto(supportedStyles(pkg), n)
|
|
||||||
# end
|
|
||||||
# if d[:marker] == :auto
|
|
||||||
# d[:marker] = autopick_ignore_none_auto(supportedMarkers(pkg), n)
|
|
||||||
# end
|
|
||||||
|
|
||||||
# end
|
|
||||||
|
|
||||||
# # # swap out dots for no line and a marker
|
|
||||||
# # if haskey(d, :linetype) && d[:linetype] == :scatter
|
|
||||||
# # d[:linetype] = :none
|
|
||||||
# # if d[:marker] == :none
|
|
||||||
# # d[:marker] = :ellipse
|
|
||||||
# # end
|
|
||||||
# # end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# # handle plot initialization differently
|
|
||||||
# if n == 0
|
|
||||||
# delete!(d, :x)
|
|
||||||
# delete!(d, :y)
|
|
||||||
# else
|
|
||||||
# # once the plot is created, we can get line/marker colors
|
|
||||||
|
|
||||||
# # update color
|
|
||||||
# d[:color] = getRGBColor(d[:color], n)
|
|
||||||
|
|
||||||
# # update markercolor
|
|
||||||
# mc = d[:markercolor]
|
|
||||||
# mc = (mc == :match ? d[:color] : getRGBColor(mc, n))
|
|
||||||
# d[:markercolor] = mc
|
|
||||||
|
|
||||||
# # set label
|
|
||||||
# label = d[:label]
|
|
||||||
# label = (label == "AUTO" ? "y$n" : label)
|
|
||||||
# if d[:axis] == :right && length(label) >= 4 && label[end-3:end] != " (R)"
|
|
||||||
# label = string(label, " (R)")
|
|
||||||
# end
|
|
||||||
# d[:label] = label
|
|
||||||
|
|
||||||
# warnOnUnsupported(pkg, d)
|
|
||||||
# end
|
|
||||||
|
|
||||||
|
|
||||||
# d
|
|
||||||
# end
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: arg aliases
|
|
||||||
|
|
||||||
|
|||||||
@ -310,17 +310,9 @@ function createAnnotationObject(x, y, val::AbstractString)
|
|||||||
))
|
))
|
||||||
end
|
end
|
||||||
|
|
||||||
function addAnnotations(plt::Plot{GadflyPackage}, d::Dict)
|
function addAnnotations{X,Y,V}(plt::Plot{GadflyPackage}, anns::AVec{Tuple{X,Y,V}})
|
||||||
if haskey(d, :annotation)
|
for ann in anns
|
||||||
anns = d[:annotation]
|
push!(plt.o.guides, createAnnotationObject(ann...))
|
||||||
if !(isa(anns, AbstractVector) && issubtype(eltype(anns), Tuple))
|
|
||||||
error("Expecting a vector of tuples for annotations: (x, y, annotation)\n got: $(typeof(anns))")
|
|
||||||
end
|
|
||||||
|
|
||||||
for ann in anns
|
|
||||||
x, y, val = ann
|
|
||||||
push!(plt.o.guides, createAnnotationObject(x, y, val))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
20
src/plot.jl
20
src/plot.jl
@ -129,6 +129,8 @@ function plot!(plt::Plot, args...; kw...)
|
|||||||
plt
|
plt
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
function setTicksFromStringVector(d::Dict, di::Dict, sym::Symbol, ticksym::Symbol)
|
function setTicksFromStringVector(d::Dict, di::Dict, sym::Symbol, ticksym::Symbol)
|
||||||
# if the x or y values are strings, set ticks to the unique values, and x/y to the indices of the ticks
|
# if the x or y values are strings, set ticks to the unique values, and x/y to the indices of the ticks
|
||||||
# @show get(d,ticksym,:auto) == :auto isa(di[sym], AbstractArray) isa(eltype(di[sym]), AbstractString)
|
# @show get(d,ticksym,:auto) == :auto isa(di[sym], AbstractArray) isa(eltype(di[sym]), AbstractString)
|
||||||
@ -142,8 +144,11 @@ function setTicksFromStringVector(d::Dict, di::Dict, sym::Symbol, ticksym::Symbo
|
|||||||
# @show sym ticksym di[sym] d[ticksym]
|
# @show sym ticksym di[sym] d[ticksym]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
preparePlotUpdate(plt::Plot) = nothing
|
preparePlotUpdate(plt::Plot) = nothing
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
# should we update the x/y label given the meta info during input slicing?
|
# should we update the x/y label given the meta info during input slicing?
|
||||||
function updateDictWithMeta(d::Dict, initargs::Dict, meta::Symbol, isx::Bool)
|
function updateDictWithMeta(d::Dict, initargs::Dict, meta::Symbol, isx::Bool)
|
||||||
@ -154,6 +159,21 @@ function updateDictWithMeta(d::Dict, initargs::Dict, meta::Symbol, isx::Bool)
|
|||||||
end
|
end
|
||||||
updateDictWithMeta(d::Dict, initargs::Dict, meta, isx::Bool) = nothing
|
updateDictWithMeta(d::Dict, initargs::Dict, meta, isx::Bool) = nothing
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
|
annotations(::Void) = []
|
||||||
|
annotations{X<:Real, Y<:Real, V}(v::AVec{Tuple{X,Y,V}}) = v
|
||||||
|
annotations{X<:Real, Y<:Real, V}(t::Tuple{X,Y,V}) = [t]
|
||||||
|
annotations(anns) = error("Expecting a tuple (or vector of tuples) for annotations: ",
|
||||||
|
"(x, y, annotation)\n got: $(typeof(anns))")
|
||||||
|
|
||||||
|
function addAnnotations(plt::Plot, d::Dict)
|
||||||
|
anns = annotations(get(d, :annotation, nothing))
|
||||||
|
if !isempty(anns)
|
||||||
|
addAnnotations(plt, anns)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user