pyplot annotations and ioff fix
This commit is contained in:
parent
eafc1a784c
commit
228ce768e0
@ -68,6 +68,7 @@ scatter(iris, :SepalLength, :SepalWidth, group=:Species, ms=12, m=[:+,:d,:s])
|
|||||||

|

|
||||||
|
|
||||||
See the examples pages for lots of examples of plots, and what those commands produce for each supported backend.
|
See the examples pages for lots of examples of plots, and what those commands produce for each supported backend.
|
||||||
|
Also check out the [IJulia notebooks](examples) and see how it works interactively.
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
@ -168,12 +169,14 @@ 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:
|
||||||
|
|
||||||
Keyword | Default | Type | Aliases
|
Keyword | Default | Type | Aliases
|
||||||
---- | ---- | ---- | ----
|
---- | ---- | ---- | ----
|
||||||
|
`:annotation` | `nothing` | Series | `:ann`, `:annotate`, `:annotations`, `:anns`
|
||||||
`:args` | `Any[]` | Series | `:argss`
|
`:args` | `Any[]` | Series | `:argss`
|
||||||
`:axis` | `left` | Series | `:axiss`
|
`:axis` | `left` | Series | `:axiss`
|
||||||
`:color` | `auto` | Series | `:c`, `:colors`
|
`:color` | `auto` | Series | `:c`, `:colors`
|
||||||
|
|||||||
@ -86,7 +86,13 @@ const examples = PlotExample[
|
|||||||
PlotExample("Open/High/Low/Close",
|
PlotExample("Open/High/Low/Close",
|
||||||
"Create an OHLC chart. Pass in a vector of 4-tuples as your `y` argument. Adjust the tick width with arg `markersize`.",
|
"Create an OHLC chart. Pass in a vector of 4-tuples as your `y` argument. Adjust the tick width with arg `markersize`.",
|
||||||
[:(n=20), :(hgt=rand(n)+1), :(bot=randn(n)), :(openpct=rand(n)), :(closepct=rand(n)), :(y = [OHLC(openpct[i]*hgt[i]+bot[i], bot[i]+hgt[i], bot[i], closepct[i]*hgt[i]+bot[i]) for i in 1:n]), :(ohlc(y; markersize=8))]),
|
[:(n=20), :(hgt=rand(n)+1), :(bot=randn(n)), :(openpct=rand(n)), :(closepct=rand(n)), :(y = [OHLC(openpct[i]*hgt[i]+bot[i], bot[i]+hgt[i], bot[i], closepct[i]*hgt[i]+bot[i]) for i in 1:n]), :(ohlc(y; markersize=8))]),
|
||||||
|
PlotExample("Annotations",
|
||||||
|
"Currently only text annotations are supported. Pass in a tuple or vector-of-tuples: (x,y,text). `annotate!(ann)` is shorthand for `plot!(; annotation=ann)`",
|
||||||
|
[
|
||||||
|
:(y = rand(10)),
|
||||||
|
:(plot(y, ann=(3,y[3],"this is #3"))),
|
||||||
|
:(annotate!([(5,y[5],"this is #5"),(8.4,y[10],"this is #10")]))
|
||||||
|
]),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -164,7 +170,7 @@ function test_example(pkgname::Symbol, idx::Int)
|
|||||||
plotter()
|
plotter()
|
||||||
map(eval, examples[idx].exprs)
|
map(eval, examples[idx].exprs)
|
||||||
plt = currentPlot()
|
plt = currentPlot()
|
||||||
display(plt)
|
gui(plt)
|
||||||
plt
|
plt
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -172,9 +178,9 @@ end
|
|||||||
function test_all_examples(pkgname::Symbol)
|
function test_all_examples(pkgname::Symbol)
|
||||||
plts = Dict()
|
plts = Dict()
|
||||||
for i in 1:length(examples)
|
for i in 1:length(examples)
|
||||||
if examples[i].header == "Subplots" && !subplotSupported()
|
# if examples[i].header == "Subplots" && !subplotSupported()
|
||||||
break
|
# break
|
||||||
end
|
# end
|
||||||
|
|
||||||
try
|
try
|
||||||
plt = test_example(pkgname, i)
|
plt = test_example(pkgname, i)
|
||||||
|
|||||||
@ -68,6 +68,7 @@ scatter(iris, :SepalLength, :SepalWidth, group=:Species, ms=12, m=[:+,:d,:s])
|
|||||||

|

|
||||||
|
|
||||||
See the examples pages for lots of examples of plots, and what those commands produce for each supported backend.
|
See the examples pages for lots of examples of plots, and what those commands produce for each supported backend.
|
||||||
|
Also check out the [IJulia notebooks](examples) and see how it works interactively.
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -301,18 +301,16 @@ end
|
|||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
function createAnnotationObject(x, y, val::AbstractString)
|
function createGadflyAnnotationObject(x, y, val::AbstractString)
|
||||||
Gadfly.Guide.annotation(Compose.compose(
|
Gadfly.Guide.annotation(Compose.compose(
|
||||||
Compose.context(),
|
Compose.context(),
|
||||||
Compose.text(x, y, val)
|
Compose.text(x, y, val)
|
||||||
# Compose.fill(colorant"black"),
|
|
||||||
# Compose.stroke(colorant"black")
|
|
||||||
))
|
))
|
||||||
end
|
end
|
||||||
|
|
||||||
function addAnnotations{X,Y,V}(plt::Plot{GadflyPackage}, anns::AVec{Tuple{X,Y,V}})
|
function addAnnotations{X,Y,V}(plt::Plot{GadflyPackage}, anns::AVec{Tuple{X,Y,V}})
|
||||||
for ann in anns
|
for ann in anns
|
||||||
push!(plt.o.guides, createAnnotationObject(ann...))
|
push!(plt.o.guides, createGadflyAnnotationObject(ann...))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,14 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
function addAnnotations{X,Y,V}(plt::Plot{ImmersePackage}, anns::AVec{Tuple{X,Y,V}})
|
||||||
|
for ann in anns
|
||||||
|
push!(plt.o[2].guides, createGadflyAnnotationObject(ann...))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
# accessors for x/y data
|
# accessors for x/y data
|
||||||
|
|||||||
@ -243,14 +243,16 @@ end
|
|||||||
|
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
|
|
||||||
# function savepng(::PyPlotPackage, plt::PlottingObject, fn::AbstractString, args...)
|
function createPyPlotAnnotationObject(plt::Plot{PyPlotPackage}, x, y, val::AbstractString)
|
||||||
# fig, num = plt.o
|
ax = getLeftAxis(plt.o[1])
|
||||||
# addPyPlotLegend(plt)
|
ax[:annotate](val, xy = (x,y))
|
||||||
# f = open(fn, "w")
|
end
|
||||||
# writemime(f, "image/png", fig)
|
|
||||||
# close(f)
|
|
||||||
# end
|
|
||||||
|
|
||||||
|
function addAnnotations{X,Y,V}(plt::Plot{PyPlotPackage}, anns::AVec{Tuple{X,Y,V}})
|
||||||
|
for ann in anns
|
||||||
|
createPyPlotAnnotationObject(plt, ann...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
@ -274,7 +276,6 @@ end
|
|||||||
|
|
||||||
function Base.writemime(io::IO, m::MIME"image/png", plt::PlottingObject{PyPlotPackage})
|
function Base.writemime(io::IO, m::MIME"image/png", plt::PlottingObject{PyPlotPackage})
|
||||||
fig, num = plt.o
|
fig, num = plt.o
|
||||||
# makePyPlotCurrent(plt)
|
|
||||||
addPyPlotLegend(plt)
|
addPyPlotLegend(plt)
|
||||||
ax = fig.o[:axes][1]
|
ax = fig.o[:axes][1]
|
||||||
updateAxisColors(ax, getPyPlotColor(plt.initargs[:foreground_color]))
|
updateAxisColors(ax, getPyPlotColor(plt.initargs[:foreground_color]))
|
||||||
@ -284,8 +285,6 @@ end
|
|||||||
|
|
||||||
function Base.display(::PlotsDisplay, plt::Plot{PyPlotPackage})
|
function Base.display(::PlotsDisplay, plt::Plot{PyPlotPackage})
|
||||||
fig, num = plt.o
|
fig, num = plt.o
|
||||||
# PyPlot.figure(num) # makes this current
|
|
||||||
# makePyPlotCurrent(plt)
|
|
||||||
addPyPlotLegend(plt)
|
addPyPlotLegend(plt)
|
||||||
ax = fig.o[:axes][1]
|
ax = fig.o[:axes][1]
|
||||||
updateAxisColors(ax, getPyPlotColor(plt.initargs[:foreground_color]))
|
updateAxisColors(ax, getPyPlotColor(plt.initargs[:foreground_color]))
|
||||||
|
|||||||
@ -125,7 +125,9 @@ function plotter()
|
|||||||
try
|
try
|
||||||
@eval import PyPlot
|
@eval import PyPlot
|
||||||
@eval export PyPlot
|
@eval export PyPlot
|
||||||
PyPlot.ioff()
|
if !isa(Base.Multimedia.displays[end], Base.REPL.REPLDisplay)
|
||||||
|
PyPlot.ioff()
|
||||||
|
end
|
||||||
catch
|
catch
|
||||||
error("Couldn't import PyPlot. Install it with: Pkg.add(\"PyPlot\")")
|
error("Couldn't import PyPlot. Install it with: Pkg.add(\"PyPlot\")")
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user