63 lines
1.7 KiB
Lua
Executable File
63 lines
1.7 KiB
Lua
Executable File
require 'iuplua'
|
|
require "iuplua_pplot"
|
|
|
|
iupxpplot = {}
|
|
|
|
function iupxpplot.pplot (tbl)
|
|
|
|
if tbl.AXS_BOUNDS then
|
|
local t = tbl.AXS_BOUNDS
|
|
tbl.AXS_XMIN = t[1]
|
|
tbl.AXS_YMIN = t[2]
|
|
tbl.AXS_XMAX = t[3]
|
|
tbl.AXS_YMAX = t[4]
|
|
end
|
|
|
|
-- the defaults for these values are too small, at least on my system!
|
|
if not tbl.MARGINLEFT then tbl.MARGINLEFT = 30 end
|
|
if not tbl.MARGINBOTTOM then tbl.MARGINBOTTOM = 35 end
|
|
|
|
-- if we explicitly supply ranges, then auto must be switched off for that direction.
|
|
if tbl.AXS_YMIN then tbl.AXS_YAUTOMIN = "NO" end
|
|
if tbl.AXS_YMAX then tbl.AXS_YAUTOMAX = "NO" end
|
|
if tbl.AXS_XMIN then tbl.AXS_XAUTOMIN = "NO" end
|
|
if tbl.AXS_XMAX then tbl.AXS_XAUTOMAX = "NO" end
|
|
|
|
local plot = iup.pplot(tbl)
|
|
plot.End = iup.PPlotEnd
|
|
plot.Add = iup.PPlotAdd
|
|
function plot.Begin ()
|
|
return iup.PPlotBegin(plot,0)
|
|
end
|
|
|
|
function plot:AddSeries(xvalues,yvalues,options)
|
|
plot:Begin()
|
|
if type(xvalues[1]) == "table" then
|
|
options = yvalues
|
|
for i,v in ipairs(xvalues) do
|
|
plot:Add(v[1],v[2])
|
|
end
|
|
else
|
|
for i = 1,#xvalues do
|
|
plot:Add(xvalues[i],yvalues[i])
|
|
end
|
|
end
|
|
plot:End()
|
|
-- set any series-specific plot attributes
|
|
if options then
|
|
-- mode must be set before any other attributes!
|
|
if options.DS_MODE then
|
|
plot.DS_MODE = options.DS_MODE
|
|
options.DS_MODE = nil
|
|
end
|
|
for k,v in pairs(options) do
|
|
plot[k] = v
|
|
end
|
|
end
|
|
end
|
|
function plot:Redraw()
|
|
plot.REDRAW='YES'
|
|
end
|
|
return plot
|
|
end
|