From 06ab514472ef9204846731680bf2b43822a52320 Mon Sep 17 00:00:00 2001 From: Thomas Breloff Date: Mon, 28 Sep 2015 17:11:43 -0400 Subject: [PATCH] qwt annotations and examples --- docs/qwt_examples.md | 14 +++++++++++++- img/qwt/qwt_example_20.png | Bin 0 -> 16522 bytes src/backends/qwt.jl | 19 +++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 img/qwt/qwt_example_20.png diff --git a/docs/qwt_examples.md b/docs/qwt_examples.md index 3904ecf2..42f30033 100644 --- a/docs/qwt_examples.md +++ b/docs/qwt_examples.md @@ -80,7 +80,7 @@ plot(Vector[randn(100),randn(100) * 100]; axis=[:l,:r],ylabel="LEFT",yrightlabel ### Vectors w/ pluralized args -Plot multiple series with different numbers of points. Mix arguments that apply to all series (singular... see `marker`) with arguments unique to each series (pluralized... see `colors`). +Plot multiple series with different numbers of points. Mix arguments that apply to all series (marker/markersize) with arguments unique to each series (colors). ```julia plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,c=[:red,:blue]) @@ -207,3 +207,15 @@ subplot!(randn(100,3)) ![](../img/qwt/qwt_example_18.png) +### 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)` + +```julia +y = rand(10) +plot(y,ann=(3,y[3],"this is #3")) +annotate!([(5,y[5],"this is #5"),(9,y[10],"this is #10")]) +``` + +![](../img/qwt/qwt_example_20.png) + diff --git a/img/qwt/qwt_example_20.png b/img/qwt/qwt_example_20.png new file mode 100644 index 0000000000000000000000000000000000000000..54d91ed63319e154bed0bc6c78d561ed874b2cba GIT binary patch literal 16522 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