more shape fun... completed gadfly's set
This commit is contained in:
parent
168b77326b
commit
c4596dda75
@ -11,7 +11,7 @@ supportedArgs(::GadflyPackage) = setdiff(ARGS, [:heatmap_c, :fillto, :pos])
|
|||||||
supportedAxes(::GadflyPackage) = setdiff(ALL_AXES, [:right])
|
supportedAxes(::GadflyPackage) = setdiff(ALL_AXES, [:right])
|
||||||
supportedTypes(::GadflyPackage) = [:none, :line, :step, :sticks, :scatter, :heatmap, :hexbin, :hist, :bar, :hline, :vline, :ohlc]
|
supportedTypes(::GadflyPackage) = [:none, :line, :step, :sticks, :scatter, :heatmap, :hexbin, :hist, :bar, :hline, :vline, :ohlc]
|
||||||
supportedStyles(::GadflyPackage) = [:auto, :solid]
|
supportedStyles(::GadflyPackage) = [:auto, :solid]
|
||||||
supportedMarkers(::GadflyPackage) = [:none, :auto, :rect, :ellipse, :diamond, :utriangle, :dtriangle, :cross, :xcross]
|
supportedMarkers(::GadflyPackage) = [:none, :auto, :rect, :ellipse, :diamond, :utriangle, :dtriangle, :cross, :xcross, :star1, :star2, :hexagon]
|
||||||
|
|
||||||
|
|
||||||
include("gadfly_shapes.jl")
|
include("gadfly_shapes.jl")
|
||||||
|
|||||||
@ -34,6 +34,15 @@ function createGadflyAnnotation(d::Dict)
|
|||||||
elseif marker == :xcross
|
elseif marker == :xcross
|
||||||
shape = xcross(x, y, sz)
|
shape = xcross(x, y, sz)
|
||||||
|
|
||||||
|
elseif marker == :star1
|
||||||
|
shape = star1(x, y, sz)
|
||||||
|
|
||||||
|
elseif marker == :star2
|
||||||
|
shape = star2(x, y, sz)
|
||||||
|
|
||||||
|
elseif marker == :hexagon
|
||||||
|
shape = hexagon(x, y, sz)
|
||||||
|
|
||||||
else
|
else
|
||||||
# make circles
|
# make circles
|
||||||
sz = 0.8 * d[:markersize] * Gadfly.px
|
sz = 0.8 * d[:markersize] * Gadfly.px
|
||||||
@ -48,7 +57,6 @@ end
|
|||||||
|
|
||||||
function square(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
function square(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
||||||
n = max(length(xs), length(ys), length(rs))
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
rect_xs = Vector{Compose.Measure}(n)
|
rect_xs = Vector{Compose.Measure}(n)
|
||||||
rect_ys = Vector{Compose.Measure}(n)
|
rect_ys = Vector{Compose.Measure}(n)
|
||||||
rect_ws = Vector{Compose.Measure}(n)
|
rect_ws = Vector{Compose.Measure}(n)
|
||||||
@ -69,7 +77,6 @@ end
|
|||||||
|
|
||||||
function diamond(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
function diamond(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
||||||
n = max(length(xs), length(ys), length(rs))
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
for i in 1:n
|
for i in 1:n
|
||||||
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
||||||
@ -85,7 +92,6 @@ end
|
|||||||
|
|
||||||
function cross(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
function cross(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
||||||
n = max(length(xs), length(ys), length(rs))
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
for i in 1:n
|
for i in 1:n
|
||||||
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
||||||
@ -111,7 +117,6 @@ end
|
|||||||
|
|
||||||
function xcross(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
function xcross(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
||||||
n = max(length(xs), length(ys), length(rs))
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
s = 1/sqrt(5)
|
s = 1/sqrt(5)
|
||||||
for i in 1:n
|
for i in 1:n
|
||||||
@ -133,7 +138,6 @@ end
|
|||||||
|
|
||||||
function utriangle(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray, scalar = 1)
|
function utriangle(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray, scalar = 1)
|
||||||
n = max(length(xs), length(ys), length(rs))
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
s = 0.8
|
s = 0.8
|
||||||
for i in 1:n
|
for i in 1:n
|
||||||
@ -142,9 +146,9 @@ function utriangle(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray, scal
|
|||||||
r = rs[mod1(i, length(rs))]
|
r = rs[mod1(i, length(rs))]
|
||||||
u = 0.8 * scalar * r
|
u = 0.8 * scalar * r
|
||||||
polys[i] = Tuple{Compose.Measure, Compose.Measure}[
|
polys[i] = Tuple{Compose.Measure, Compose.Measure}[
|
||||||
(x - r, y + u),
|
(x - r, y + u),
|
||||||
(x + r, y + u),
|
(x + r, y + u),
|
||||||
(x, y - u)
|
(x, y - u)
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -153,6 +157,78 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function star1(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray, scalar = 1)
|
||||||
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
|
|
||||||
|
# some magic scalars
|
||||||
|
sx = 0.7
|
||||||
|
sy1, sy2 = 1.2, 0.4
|
||||||
|
|
||||||
|
for i in 1:n
|
||||||
|
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
||||||
|
y = Compose.y_measure(ys[mod1(i, length(ys))])
|
||||||
|
r = rs[mod1(i, length(rs))]
|
||||||
|
polys[i] = Tuple{Compose.Measure, Compose.Measure}[
|
||||||
|
(x-sx*r, y+r), # BL
|
||||||
|
(x, y-sy1*r), # T
|
||||||
|
(x+sx*r, y+r), # BR
|
||||||
|
(x-r, y-sy2*r), # L
|
||||||
|
(x+r, y-sy2*r) # R
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
return Gadfly.polygon(polys)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function star2(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray, scalar = 1)
|
||||||
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
|
for i in 1:n
|
||||||
|
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
||||||
|
y = Compose.y_measure(ys[mod1(i, length(ys))])
|
||||||
|
r = rs[mod1(i, length(rs))]
|
||||||
|
u = 0.4r
|
||||||
|
polys[i] = Tuple{Compose.Measure, Compose.Measure}[
|
||||||
|
(x-u, y), (x-r, y-r), # TL
|
||||||
|
(x, y-u), (x+r, y-r), # TR
|
||||||
|
(x+u, y), (x+r, y+r), # BR
|
||||||
|
(x, y+u), (x-r, y+r) # BL
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
return Gadfly.polygon(polys)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function hexagon(xs::AbstractArray, ys::AbstractArray, rs::AbstractArray)
|
||||||
|
n = max(length(xs), length(ys), length(rs))
|
||||||
|
|
||||||
|
polys = Vector{Vector{Tuple{Compose.Measure, Compose.Measure}}}(n)
|
||||||
|
for i in 1:n
|
||||||
|
x = Compose.x_measure(xs[mod1(i, length(xs))])
|
||||||
|
y = Compose.y_measure(ys[mod1(i, length(ys))])
|
||||||
|
r = rs[mod1(i, length(rs))]
|
||||||
|
u = 0.4r
|
||||||
|
|
||||||
|
# make a "plus sign"
|
||||||
|
polys[i] = Tuple{Compose.Measure, Compose.Measure}[
|
||||||
|
(x-r, y-u), (x-r, y+u), # L edge
|
||||||
|
# (x-u, y+u), # BL inside
|
||||||
|
(x-u, y+r), (x+u, y+r), # B edge
|
||||||
|
# (x+u, y+u), # BR inside
|
||||||
|
(x+r, y+u), (x+r, y-u), # R edge
|
||||||
|
# (x+u, y-u), # TR inside
|
||||||
|
(x+u, y-r), (x-u, y-r), # T edge
|
||||||
|
# (x-u, y-u) # TL inside
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
return Gadfly.polygon(polys)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,9 @@ function adjustQwtKeywords(iscreating::Bool; kw...)
|
|||||||
d[:linetype] = :heatmap
|
d[:linetype] = :heatmap
|
||||||
elseif d[:linetype] == :scatter
|
elseif d[:linetype] == :scatter
|
||||||
d[:linetype] = :none
|
d[:linetype] = :none
|
||||||
d[:marker] = :ellipse
|
if d[:marker] == :none
|
||||||
|
d[:marker] = :ellipse
|
||||||
|
end
|
||||||
elseif !iscreating && d[:linetype] == :bar
|
elseif !iscreating && d[:linetype] == :bar
|
||||||
return barHack(; kw...)
|
return barHack(; kw...)
|
||||||
elseif !iscreating && d[:linetype] == :hist
|
elseif !iscreating && d[:linetype] == :hist
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user