fixed qwt and examples

This commit is contained in:
Thomas Breloff 2015-10-07 17:42:08 -04:00
parent 95b8c71083
commit f7cd5276f0
22 changed files with 49 additions and 31 deletions

View File

@ -36,7 +36,7 @@ const examples = PlotExample[
[:(plot(0:0.01:4π, [sin,cos]))]), [:(plot(0:0.01:4π, [sin,cos]))]),
PlotExample("", PlotExample("",
"Or make a parametric plot (i.e. plot: (fx(u), fy(u))) with plot(fx, fy, umin, umax).", "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π, leg=false, fill=(0,:orange)))]), [:(plot(sin, x->sin(2x), 0, 2π, line=4, leg=false, fill=(0,:orange)))]),
PlotExample("Colors", PlotExample("Colors",
"Access predefined palettes (or build your own with the `colorscheme` method). Line/marker colors are auto-generated from the plot's palette, unless overridden. Set the `z` argument to turn on series gradients.", "Access predefined palettes (or build your own with the `colorscheme` method). Line/marker colors are auto-generated from the plot's palette, unless overridden. Set the `z` argument to turn on series gradients.",
[:(y = rand(100)), :(plot(0:10:100,rand(11,4),lab="lines",w=3, palette=:grays, fill=(0.5,:auto))), :(scatter!(y, z=abs(y-.5), m=(10,:heat), lab="grad"))]), [:(y = rand(100)), :(plot(0:10:100,rand(11,4),lab="lines",w=3, palette=:grays, fill=(0.5,:auto))), :(scatter!(y, z=abs(y-.5), m=(10,:heat), lab="grad"))]),

View File

@ -1,8 +1,8 @@
# Examples for backend: qwt # Examples for backend: qwt
- Supported arguments: `annotation`, `args`, `axis`, `background_color`, `color`, `fillto`, `foreground_color`, `group`, `heatmap_c`, `kwargs`, `label`, `layout`, `legend`, `linestyle`, `linetype`, `marker`, `markercolor`, `markersize`, `n`, `nbins`, `nc`, `nr`, `pos`, `reg`, `show`, `size`, `title`, `width`, `windowtitle`, `x`, `xlabel`, `y`, `ylabel`, `yrightlabel` - Supported arguments: `annotation`, `axis`, `background_color`, `color`, `fillrange`, `fillcolor`, `foreground_color`, `group`, `heatmap_c`, `label`, `layout`, `legend`, `linestyle`, `linetype`, `linewidth`, `markershape`, `markercolor`, `markersize`, `n`, `nbins`, `nc`, `nr`, `pos`, `reg`, `show`, `size`, `title`, `windowtitle`, `x`, `xlabel`, `xlims`, `xticks`, `y`, `ylabel`, `ylims`, `yrightlabel`, `yticks`, `xscale`, `yscale`
- Supported values for axis: `:auto`, `:left`, `:right` - Supported values for axis: `:auto`, `:left`, `:right`
- Supported values for linetype: `:none`, `:line`, `:path`, `:steppre`, `:steppost`, `:sticks`, `:scatter`, `:heatmap`, `:hexbin`, `:hist`, `:bar` - Supported values for linetype: `:none`, `:line`, `:path`, `:steppre`, `:steppost`, `:sticks`, `:scatter`, `:heatmap`, `:hexbin`, `:hist`, `:bar`, `:hline`, `:vline`
- Supported values for linestyle: `:auto`, `:solid`, `:dash`, `:dot`, `:dashdot`, `:dashdotdot` - Supported values for linestyle: `:auto`, `:solid`, `:dash`, `:dot`, `:dashdot`, `:dashdotdot`
- Supported values for marker: `:none`, `:auto`, `:rect`, `:ellipse`, `:diamond`, `:utriangle`, `:dtriangle`, `:cross`, `:xcross`, `:star1`, `:star2`, `:hexagon` - Supported values for marker: `:none`, `:auto`, `:rect`, `:ellipse`, `:diamond`, `:utriangle`, `:dtriangle`, `:cross`, `:xcross`, `:star1`, `:star2`, `:hexagon`
- Is `subplot`/`subplot!` supported? Yes - Is `subplot`/`subplot!` supported? Yes
@ -19,14 +19,14 @@ qwt()
A simple line plot of the columns. A simple line plot of the columns.
```julia ```julia
plot(rand(50,5),w=3) plot(fakedata(50,5),w=3)
``` ```
![](../img/qwt/qwt_example_1.png) ![](../img/qwt/qwt_example_1.png)
### Functions ### Functions
Plot multiple functions. You can also put the function first. Plot multiple functions. You can also put the function first, or use the form `plot(f, xmin, xmax)` where f is a Function or AbstractVector{Function}.
```julia ```julia
plot(0:0.01:4π,[sin,cos]) plot(0:0.01:4π,[sin,cos])
@ -36,32 +36,34 @@ plot(0:0.01:4π,[sin,cos])
### ###
You can also call it with plot(f, xmin, xmax). Or make a parametric plot (i.e. plot: (fx(u), fy(u))) with plot(fx, fy, umin, umax).
```julia ```julia
plot([sin,cos],0,4π) plot(sin,(x->begin # /home/tom/.julia/v0.4/Plots/docs/example_generation.jl, line 39:
sin(2x)
end),0,2π,line=4,leg=false,fill=(0,:orange))
``` ```
![](../img/qwt/qwt_example_3.png) ![](../img/qwt/qwt_example_3.png)
### ### Colors
Or make a parametric plot (i.e. plot: (fx(u), fy(u))) with plot(fx, fy, umin, umax). Access predefined palettes (or build your own with the `colorscheme` method). Line/marker colors are auto-generated from the plot's palette, unless overridden. Set the `z` argument to turn on series gradients.
```julia ```julia
plot(sin,(x->begin # /home/tom/.julia/v0.4/Plots/docs/example_generation.jl, line 33: y = rand(100)
sin(2x) plot(0:10:100,rand(11,4),lab="lines",w=3,palette=:grays,fill=(0.5,:auto))
end),0,2π,legend=false,fillto=0) scatter!(y,z=abs(y - 0.5),m=(10,:heat),lab="grad")
``` ```
![](../img/qwt/qwt_example_4.png) ![](../img/qwt/qwt_example_4.png)
### Global ### Global
Change the guides/background/limits/ticks. You can also use shorthand functions: `title!`, `xlabel!`, `ylabel!`, `xlims!`, `ylims!`, `xticks!`, `yticks!` Change the guides/background/limits/ticks. Convenience args `xaxis` and `yaxis` allow you to pass a tuple or value which will be mapped to the relevant args automatically. The `xaxis` below will be replaced with `xlabel` and `xlims` args automatically during the preprocessing step. You can also use shorthand functions: `title!`, `xaxis!`, `yaxis!`, `xlabel!`, `ylabel!`, `xlims!`, `ylims!`, `xticks!`, `yticks!`
```julia ```julia
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) plot(rand(20,3),title="TITLE",xaxis=("XLABEL",(-5,30),0:2:20,:flip),yaxis=("YLABEL",:log10),background_color=RGB(0.2,0.2,0.2),leg=false)
``` ```
![](../img/qwt/qwt_example_5.png) ![](../img/qwt/qwt_example_5.png)
@ -73,17 +75,17 @@ Use the `axis` arguments.
Note: Currently only supported with Qwt and PyPlot Note: Currently only supported with Qwt and PyPlot
```julia ```julia
plot(Vector[randn(100),randn(100) * 100]; axis=[:l,:r],ylabel="LEFT",yrightlabel="RIGHT") plot(Vector[randn(100),randn(100) * 100]; axis=[:l :r],ylabel="LEFT",yrightlabel="RIGHT")
``` ```
![](../img/qwt/qwt_example_6.png) ![](../img/qwt/qwt_example_6.png)
### Vectors w/ pluralized args ### Arguments
Plot multiple series with different numbers of points. Mix arguments that apply to all series (marker/markersize) with arguments unique to each series (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). Special arguments `line`, `marker`, and `fill` will automatically figure out what arguments to set (for example, we are setting the `linestyle`, `linewidth`, and `color` arguments with `line`.) Note that we pass a matrix of colors, and this applies the colors to each series.
```julia ```julia
plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,c=[:red,:blue]) plot(Vector[rand(10),rand(20)]; marker=(:ellipse,8),line=(:dot,3,[:black :orange]))
``` ```
![](../img/qwt/qwt_example_7.png) ![](../img/qwt/qwt_example_7.png)
@ -93,7 +95,7 @@ plot(Vector[rand(10),rand(20)]; marker=:ellipse,markersize=8,c=[:red,:blue])
Start with a base plot... Start with a base plot...
```julia ```julia
plot(rand(100) / 3,reg=true,fillto=0) plot(rand(100) / 3,reg=true,fill=(0,:green))
``` ```
![](../img/qwt/qwt_example_8.png) ![](../img/qwt/qwt_example_8.png)
@ -103,7 +105,7 @@ plot(rand(100) / 3,reg=true,fillto=0)
and add to it later. and add to it later.
```julia ```julia
scatter!(rand(100),markersize=6,c=:blue) scatter!(rand(100),markersize=6,c=:orange)
``` ```
![](../img/qwt/qwt_example_9.png) ![](../img/qwt/qwt_example_9.png)
@ -123,11 +125,11 @@ heatmap(randn(10000),randn(10000),nbins=100)
```julia ```julia
types = intersect(supportedTypes(),[:line,:path,:steppre,:steppost,:sticks,:scatter]) types = intersect(supportedTypes(),[:line,:path,:steppre,:steppost,:sticks,:scatter])'
n = length(types) n = length(types)
x = Vector[sort(rand(20)) for i = 1:n] x = Vector[sort(rand(20)) for i = 1:n]
y = rand(20,n) y = rand(20,n)
plot(x,y,t=types,lab=map(string,types)) plot(x,y,line=(types,3),lab=map(string,types),ms=15)
``` ```
![](../img/qwt/qwt_example_11.png) ![](../img/qwt/qwt_example_11.png)
@ -137,7 +139,7 @@ plot(x,y,t=types,lab=map(string,types))
```julia ```julia
styles = setdiff(supportedStyles(),[:auto]) styles = setdiff(supportedStyles(),[:auto])'
plot(cumsum(randn(20,length(styles)),1); style=:auto,label=map(string,styles),w=5) plot(cumsum(randn(20,length(styles)),1); style=:auto,label=map(string,styles),w=5)
``` ```
@ -148,8 +150,8 @@ plot(cumsum(randn(20,length(styles)),1); style=:auto,label=map(string,styles),w=
```julia ```julia
markers = setdiff(supportedMarkers(),[:none,:auto]) 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) scatter(0.5:9.5,[fill(i - 0.5,10) for i = length(markers):-1:1]; marker=:auto,label=map(string,markers),ms=12)
``` ```
![](../img/qwt/qwt_example_13.png) ![](../img/qwt/qwt_example_13.png)
@ -159,7 +161,7 @@ scatter(0.5:9.5,[fill(i - 0.5,10) for i = length(markers):-1:1]; marker=:auto,la
x is the midpoint of the bar. (todo: allow passing of edges instead of midpoints) x is the midpoint of the bar. (todo: allow passing of edges instead of midpoints)
```julia ```julia
bar(randn(1000)) bar(randn(999))
``` ```
![](../img/qwt/qwt_example_14.png) ![](../img/qwt/qwt_example_14.png)
@ -182,7 +184,7 @@ histogram(randn(1000),nbins=50)
```julia ```julia
subplot(randn(100,5),layout=[1,1,3],t=[:line,:hist,:scatter,:step,:bar],nbins=10,leg=false) subplot(randn(100,5),layout=[1,1,3],t=[:line :hist :scatter :step :bar],nbins=10,leg=false)
``` ```
![](../img/qwt/qwt_example_16.png) ![](../img/qwt/qwt_example_16.png)
@ -192,7 +194,7 @@ subplot(randn(100,5),layout=[1,1,3],t=[:line,:hist,:scatter,:step,:bar],nbins=10
Note here the automatic grid layout, as well as the order in which new series are added to the plots. Note here the automatic grid layout, as well as the order in which new series are added to the plots.
```julia ```julia
subplot(randn(100,5),n=4) subplot(fakedata(100,10),n=4,palette=[:grays :blues :heat :lightrainbow],bg=[:orange :pink :darkblue :black])
``` ```
![](../img/qwt/qwt_example_17.png) ![](../img/qwt/qwt_example_17.png)
@ -202,7 +204,7 @@ subplot(randn(100,5),n=4)
```julia ```julia
subplot!(randn(100,3)) subplot!(fakedata(100,10))
``` ```
![](../img/qwt/qwt_example_18.png) ![](../img/qwt/qwt_example_18.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -13,7 +13,9 @@ supportedArgs(::QwtPackage) = [
:axis, :axis,
:background_color, :background_color,
:color, :color,
:fill, :color_palette,
:fillrange,
:fillcolor,
:foreground_color, :foreground_color,
:group, :group,
:heatmap_c, :heatmap_c,
@ -61,12 +63,24 @@ supportedScales(::QwtPackage) = [:identity, :log10]
const _qwtAliases = Dict( const _qwtAliases = Dict(
:nbins => :heatmap_n, :nbins => :heatmap_n,
:fillrange => :fillto,
:linewidth => :width,
:markershape => :marker,
:hexbin => :heatmap, :hexbin => :heatmap,
:path => :line, :path => :line,
:steppost => :step, :steppost => :step,
:steppre => :stepinverted, :steppre => :stepinverted,
) )
function fixcolors(d::Dict)
for (k,v) in d
if typeof(v) <: ColorScheme
d[k] = getColor(v)
end
end
end
function replaceLinetypeAlias(d) function replaceLinetypeAlias(d)
if haskey(_qwtAliases, d[:linetype]) if haskey(_qwtAliases, d[:linetype])
d[:linetype] = _qwtAliases[d[:linetype]] d[:linetype] = _qwtAliases[d[:linetype]]
@ -110,6 +124,7 @@ end
function plot(pkg::QwtPackage; kw...) function plot(pkg::QwtPackage; kw...)
d = Dict(kw) d = Dict(kw)
fixcolors(d)
o = Qwt.plot(zeros(0,0); d..., show=false) o = Qwt.plot(zeros(0,0); d..., show=false)
plt = Plot(o, pkg, 0, d, Dict[]) plt = Plot(o, pkg, 0, d, Dict[])
plt plt
@ -117,6 +132,7 @@ end
function plot!(::QwtPackage, plt::Plot; kw...) function plot!(::QwtPackage, plt::Plot; kw...)
d = adjustQwtKeywords(plt, false; kw...) d = adjustQwtKeywords(plt, false; kw...)
fixcolors(d)
Qwt.oplot(plt.o; d...) Qwt.oplot(plt.o; d...)
push!(plt.seriesargs, d) push!(plt.seriesargs, d)
plt plt
@ -183,7 +199,7 @@ function addLineMarker(plt::Plot{QwtPackage}, d::Dict)
ishorizontal = (d[:linetype] == :hline) ishorizontal = (d[:linetype] == :hline)
marker[:setLineStyle](ishorizontal ? 1 : 2) marker[:setLineStyle](ishorizontal ? 1 : 2)
marker[ishorizontal ? :setYValue : :setXValue](yi) marker[ishorizontal ? :setYValue : :setXValue](yi)
qcolor = Qwt.convertRGBToQColor(d[:color]) qcolor = Qwt.convertRGBToQColor(getColor(d[:color]))
linestyle = plt.o.widget[:getLineStyle](string(d[:linestyle])) linestyle = plt.o.widget[:getLineStyle](string(d[:linestyle]))
marker[:setLinePen](Qwt.QT.QPen(qcolor, d[:linewidth], linestyle)) marker[:setLinePen](Qwt.QT.QPen(qcolor, d[:linewidth], linestyle))
marker[:attach](plt.o.widget) marker[:attach](plt.o.widget)