diff --git a/docs/example_generation.jl b/docs/example_generation.jl index ac5e02c2..a6f4885c 100644 --- a/docs/example_generation.jl +++ b/docs/example_generation.jl @@ -20,7 +20,7 @@ end # the examples we'll run for each const examples = PlotExample[ PlotExample("Lines", - "A simple line plot of the 3 columns.", + "A simple line plot of the columns.", [:(plot(rand(50,5), w=3))]), PlotExample("Functions", "Plot multiple functions. You can also put the function first.", @@ -32,59 +32,57 @@ const examples = PlotExample[ "Or make a parametric plot (i.e. plot: (fx(u), fy(u))) with plot(fx, fy, umin, umax).", [:(plot(sin, x->sin(2x), 0, 2π, legend=false, fillto=0))]), PlotExample("Global", - "Change the guides/background without a separate call.", - [:(plot(rand(10); title="TITLE", xlabel="XLABEL", ylabel="YLABEL", background_color = RGB(0.2,0.2,0.2)))]), + "Change the guides/background/limits/ticks. You can also use shorthand functions: `title!`, `xlabel!`, `ylabel!`, `xlims!`, `ylims!`, `xticks!`, `yticks!`", + [:(plot(rand(10), title="TITLE", xlabel="XLABEL", ylabel="YLABEL", background_color = RGB(0.2,0.2,0.2), xlim=(-3,13), yticks=0:0.1:1))]), PlotExample("Two-axis", - "Use the `axis` or `axiss` arguments.\n\nNote: Currently only supported with Qwt and PyPlot", + "Use the `axis` arguments.\n\nNote: Currently only supported with Qwt and PyPlot", [:(plot(Vector[randn(100), randn(100)*100]; axis = [:l,:r], ylabel="LEFT", yrightlabel="RIGHT"))]), PlotExample("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(Vector[rand(10), rand(20)]; marker=:ellipse, markersize=8, colors=[:red,:blue]))]), + [:(plot(Vector[rand(10), rand(20)]; marker=:ellipse, markersize=8, c=[:red,:blue]))]), PlotExample("Build plot in pieces", "Start with a base plot...", - [:(plot(rand(100)/3; reg=true, fillto=0))]), + [:(plot(rand(100)/3, reg=true, fillto=0))]), PlotExample("", "and add to it later.", - [:(scatter!(rand(100); markersize=6, c=:blue))]), + [:(scatter!(rand(100), markersize=6, c=:blue))]), PlotExample("Heatmaps", "", - [:(heatmap(randn(10000),randn(10000); nbins=100))]), + [:(heatmap(randn(10000),randn(10000), nbins=100))]), PlotExample("Line types", "", [:(types = intersect(supportedTypes(), [:line, :path, :steppre, :steppost, :sticks, :scatter])), :(n = length(types)), :(x = Vector[sort(rand(20)) for i in 1:n]), :(y = rand(20,n)), - :(plot(x, y; t=types, lab=map(string,types)))]), + :(plot(x, y, t=types, lab=map(string,types)))]), PlotExample("Line styles", "", [:(styles = setdiff(supportedStyles(), [:auto])), :(plot(cumsum(randn(20,length(styles)),1); style=:auto, label=map(string,styles), w=5))]), PlotExample("Marker types", "", - [:(markers = setdiff(supportedMarkers(), [:none,:auto])), :(scatter(0.5:9.5, [fill(i-0.5,10) for i=length(markers):-1:1]; marker=:auto, label=map(string,markers), markersize=10))]), + [:(markers = setdiff(supportedMarkers(), [:none,:auto])), :(scatter(0.5:9.5, [fill(i-0.5,10) for i=length(markers):-1:1]; marker=:auto, label=map(string,markers), ms=10))]), PlotExample("Bar", "x is the midpoint of the bar. (todo: allow passing of edges instead of midpoints)", [:(bar(randn(1000)))]), PlotExample("Histogram", "", - [:(histogram(randn(1000); nbins=50))]), + [:(histogram(randn(1000), nbins=50))]), PlotExample("Subplots", """ subplot and subplot! are distinct commands which create many plots and add series to them in a circular fashion. You can define the layout with keyword params... either set the number of plots `n` (and optionally number of rows `nr` or - number of columns `nc`), or you can set the layout directly with `layout`. - - Note: Gadfly is not very friendly here, and although you can create a plot and save a PNG, I haven't been able to actually display it. + number of columns `nc`), or you can set the layout directly with `layout`. """, - [:(subplot(randn(100,5); layout=[1,1,3], linetypes=[:line,:hist,:scatter,:step,:bar], nbins=10, legend=false))]), + [:(subplot(randn(100,5), layout=[1,1,3], t=[:line,:hist,:scatter,:step,:bar], nbins=10, leg=false))]), PlotExample("Adding to subplots", "Note here the automatic grid layout, as well as the order in which new series are added to the plots.", - [:(subplot(randn(100,5); n=4))]), + [:(subplot(randn(100,5), n=4))]), PlotExample("", "", [:(subplot!(randn(100,3)))]), 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 OHLC objects 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))]), 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)`", diff --git a/docs/gadfly_examples.md b/docs/gadfly_examples.md index 8cd3657c..f7a83826 100644 --- a/docs/gadfly_examples.md +++ b/docs/gadfly_examples.md @@ -1,6 +1,6 @@ # Examples for backend: gadfly -- Supported arguments: `args`, `axis`, `background_color`, `color`, `fillto`, `foreground_color`, `group`, `kwargs`, `label`, `legend`, `linestyle`, `linetype`, `marker`, `markercolor`, `markersize`, `nbins`, `reg`, `ribbon`, `show`, `size`, `title`, `width`, `windowtitle`, `xlabel`, `xticks`, `ylabel`, `yrightlabel`, `yticks` +- Supported arguments: `annotation`, `args`, `background_color`, `color`, `fillto`, `group`, `kwargs`, `label`, `layout`, `legend`, `linestyle`, `linetype`, `marker`, `markercolor`, `markersize`, `n`, `nbins`, `nc`, `nr`, `reg`, `show`, `size`, `title`, `width`, `windowtitle`, `x`, `xlabel`, `xlims`, `xticks`, `y`, `ylabel`, `ylims`, `yticks` - Supported values for axis: `:auto`, `:left` - Supported values for linetype: `:none`, `:line`, `:path`, `:steppost`, `:sticks`, `:scatter`, `:heatmap`, `:hexbin`, `:hist`, `:bar`, `:hline`, `:vline`, `:ohlc` - Supported values for linestyle: `:auto`, `:solid`, `:dash`, `:dot`, `:dashdot`, `:dashdotdot` @@ -11,12 +11,12 @@ ```julia using Plots -gadfly() +gadfly!() ``` ### Lines -A simple line plot of the 3 columns. +A simple line plot of the columns. ```julia plot(rand(50,5),w=3) @@ -58,17 +58,17 @@ plot(sin,(x->begin # /home/tom/.julia/v0.4/Plots/docs/example_generation.jl, li ### Global -Change the guides/background without a separate call. +Change the guides/background/limits/ticks. You can also use shorthand functions: `title!`, `xlabel!`, `ylabel!`, `xlims!`, `ylims!`, `xticks!`, `yticks!` ```julia -plot(rand(10); title="TITLE",xlabel="XLABEL",ylabel="YLABEL",background_color=RGB(0.2,0.2,0.2)) +plot(rand(10),title="TITLE",xlabel="XLABEL",ylabel="YLABEL",background_color=RGB(0.2,0.2,0.2),xlim=(-3,13),yticks=0:0.1:1) ``` ![](../img/gadfly/gadfly_example_5.png) ### Two-axis -Use the `axis` or `axiss` arguments. +Use the `axis` arguments. Note: Currently only supported with Qwt and PyPlot @@ -83,7 +83,7 @@ plot(Vector[randn(100),randn(100) * 100]; axis=[:l,:r],ylabel="LEFT",yrightlabel 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`). ```julia -plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,colors=[:red,:blue]) +plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,c=[:red,:blue]) ``` ![](../img/gadfly/gadfly_example_7.png) @@ -93,7 +93,7 @@ plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,colors=[:red,:blue] Start with a base plot... ```julia -plot(rand(100) / 3; reg=true,fillto=0) +plot(rand(100) / 3,reg=true,fillto=0) ``` ![](../img/gadfly/gadfly_example_8.png) @@ -103,7 +103,7 @@ plot(rand(100) / 3; reg=true,fillto=0) and add to it later. ```julia -scatter!(rand(100); markersize=6,c=:blue) +scatter!(rand(100),markersize=6,c=:blue) ``` ![](../img/gadfly/gadfly_example_9.png) @@ -113,7 +113,7 @@ scatter!(rand(100); markersize=6,c=:blue) ```julia -heatmap(randn(10000),randn(10000); nbins=100) +heatmap(randn(10000),randn(10000),nbins=100) ``` ![](../img/gadfly/gadfly_example_10.png) @@ -127,7 +127,7 @@ types = intersect(supportedTypes(),[:line,:path,:steppre,:steppost,:sticks,:scat n = length(types) x = Vector[sort(rand(20)) for i = 1:n] y = rand(20,n) -plot(x,y; t=types,lab=map(string,types)) +plot(x,y,t=types,lab=map(string,types)) ``` ![](../img/gadfly/gadfly_example_11.png) @@ -149,7 +149,7 @@ plot(cumsum(randn(20,length(styles)),1); style=:auto,label=map(string,styles),w= ```julia markers = setdiff(supportedMarkers(),[:none,:auto]) -scatter(0.5:9.5,[fill(i - 0.5,10) for i = length(markers):-1:1]; marker=:auto,label=map(string,markers),markersize=10) +scatter(0.5:9.5,[fill(i - 0.5,10) for i = length(markers):-1:1]; marker=:auto,label=map(string,markers),ms=10) ``` ![](../img/gadfly/gadfly_example_13.png) @@ -169,7 +169,7 @@ bar(randn(1000)) ```julia -histogram(randn(1000); nbins=50) +histogram(randn(1000),nbins=50) ``` ![](../img/gadfly/gadfly_example_15.png) @@ -178,13 +178,11 @@ histogram(randn(1000); nbins=50) subplot and subplot! are distinct commands which create many plots and add series to them in a circular fashion. You can define the layout with keyword params... either set the number of plots `n` (and optionally number of rows `nr` or - number of columns `nc`), or you can set the layout directly with `layout`. - - Note: Gadfly is not very friendly here, and although you can create a plot and save a PNG, I haven't been able to actually display it. + number of columns `nc`), or you can set the layout directly with `layout`. ```julia -subplot(randn(100,5); layout=[1,1,3],linetypes=[:line,:hist,:scatter,:step,:bar],nbins=10,legend=false) +subplot(randn(100,5),layout=[1,1,3],t=[:line,:hist,:scatter,:step,:bar],nbins=10,leg=false) ``` ![](../img/gadfly/gadfly_example_16.png) @@ -194,7 +192,7 @@ subplot(randn(100,5); layout=[1,1,3],linetypes=[:line,:hist,:scatter,:step,:bar] Note here the automatic grid layout, as well as the order in which new series are added to the plots. ```julia -subplot(randn(100,5); n=4) +subplot(randn(100,5),n=4) ``` ![](../img/gadfly/gadfly_example_17.png) @@ -211,7 +209,7 @@ subplot!(randn(100,3)) ### 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 OHLC objects as your `y` argument. Adjust the tick width with arg `markersize`. ```julia n = 20 @@ -225,3 +223,15 @@ ohlc(y; markersize=8) ![](../img/gadfly/gadfly_example_19.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/gadfly/gadfly_example_20.png) + diff --git a/img/gadfly/gadfly_example_11.png b/img/gadfly/gadfly_example_11.png index c5ac0752..761639ea 100644 Binary files a/img/gadfly/gadfly_example_11.png and b/img/gadfly/gadfly_example_11.png differ diff --git a/img/gadfly/gadfly_example_13.png b/img/gadfly/gadfly_example_13.png index 364caa32..31667818 100644 Binary files a/img/gadfly/gadfly_example_13.png and b/img/gadfly/gadfly_example_13.png differ diff --git a/img/gadfly/gadfly_example_16.png b/img/gadfly/gadfly_example_16.png index f99be322..14053da3 100644 Binary files a/img/gadfly/gadfly_example_16.png and b/img/gadfly/gadfly_example_16.png differ diff --git a/img/gadfly/gadfly_example_20.png b/img/gadfly/gadfly_example_20.png new file mode 100644 index 00000000..37a77f79 Binary files /dev/null and b/img/gadfly/gadfly_example_20.png differ diff --git a/img/gadfly/gadfly_example_5.png b/img/gadfly/gadfly_example_5.png index 435e93bc..84e8fad1 100644 Binary files a/img/gadfly/gadfly_example_5.png and b/img/gadfly/gadfly_example_5.png differ diff --git a/img/gadfly/gadfly_example_7.png b/img/gadfly/gadfly_example_7.png index dfe3947e..1cd74585 100644 Binary files a/img/gadfly/gadfly_example_7.png and b/img/gadfly/gadfly_example_7.png differ diff --git a/img/gadfly/gadfly_example_9.png b/img/gadfly/gadfly_example_9.png index 907df789..653babd5 100644 Binary files a/img/gadfly/gadfly_example_9.png and b/img/gadfly/gadfly_example_9.png differ diff --git a/src/args.jl b/src/args.jl index 9bb7890b..115bd3f3 100644 --- a/src/args.jl +++ b/src/args.jl @@ -182,6 +182,7 @@ const _keyAliases = Dict( :s => :linestyle, :ls => :linestyle, :m => :marker, + :shape => :marker, :mc => :markercolor, :mcolor => :markercolor, :ms => :markersize, @@ -214,6 +215,7 @@ const _keyAliases = Dict( :fgcolor => :foreground_color, :fg_color => :foreground_color, :foreground => :foreground_color, + :regression => :reg, :xlim => :xlims, :xlimit => :xlims, :xlimits => :xlims,