68 lines
1.5 KiB
Julia
68 lines
1.5 KiB
Julia
|
|
# https://github.com/tbreloff/Qwt.jl
|
|
|
|
immutable QwtPackage <: PlottingPackage end
|
|
|
|
# -------------------------------
|
|
|
|
function adjustQwtKeywords(iscreating::Bool; kw...)
|
|
d = Dict(kw)
|
|
d[:heatmap_n] = d[:nbins]
|
|
|
|
if d[:linetype] == :hexbin
|
|
d[:linetype] = :heatmap
|
|
elseif d[:linetype] == :dots
|
|
d[:linetype] = :none
|
|
d[:marker] = :hexagon
|
|
elseif !iscreating && d[:linetype] == :bar
|
|
return barHack(; kw...)
|
|
elseif !iscreating && d[:linetype] == :hist
|
|
return barHack(; histogramHack(; kw...)...)
|
|
end
|
|
d
|
|
end
|
|
|
|
function plot(pkg::QwtPackage; kw...)
|
|
kw = adjustQwtKeywords(true; kw...)
|
|
plt = Plot(Qwt.plot(zeros(0,0); kw..., show=false), pkg, 0)
|
|
plt
|
|
end
|
|
|
|
function plot!(::QwtPackage, plt::Plot; kw...)
|
|
kw = adjustQwtKeywords(false; kw...)
|
|
Qwt.oplot(plt.o; kw...)
|
|
end
|
|
|
|
function Base.display(::QwtPackage, plt::Plot)
|
|
Qwt.refresh(plt.o)
|
|
Qwt.showwidget(plt.o)
|
|
end
|
|
|
|
# -------------------------------
|
|
|
|
savepng(::QwtPackage, plt::PlottingObject, fn::String, args...) = Qwt.savepng(plt.o, fn)
|
|
|
|
# -------------------------------
|
|
|
|
# # create the underlying object (each backend will do this differently)
|
|
# o = buildSubplotObject(plts, pkg, layout)
|
|
|
|
function buildSubplotObject!(::QwtPackage, subplt::Subplot)
|
|
i = 0
|
|
rows = []
|
|
for rowcnt in subplt.layout.rowcounts
|
|
push!(rows, Qwt.hsplitter([plt.o for plt in subplt.plts[(1:rowcnt) + i]]...))
|
|
i += rowcnt
|
|
end
|
|
subplt.o = Qwt.vsplitter(rows...)
|
|
end
|
|
|
|
|
|
function Base.display(::QwtPackage, subplt::Subplot)
|
|
for plt in subplt.plts
|
|
Qwt.refresh(plt.o)
|
|
end
|
|
Qwt.showwidget(subplt.o)
|
|
end
|
|
|