在Lu脚本中绘制分层视图
目 录
1 基础知识 | 绘制分层视图的基础知识。 |
2 基本绘图方式 | 分层视图基本绘图方式。 |
3 设置属性 | 给分层视图设置属性。虽然可以通过右键菜单设置属性,但这里是通过脚本函数设置属性。 |
4 让某一个子图动起来 | 在分层视图的某一个子图中动态显示图形。 |
1 基础知识
绘制分层视图的程序结构如下:
!!!using("win","math"); //使用命名空间win和math。win是必须的,而math是多数情况下要用到的。 init(... ...) = //定义初始化函数init,函数参数根据需要设置。 { cwAttach(typeLayered), //函数cwAttach用于设置图像类型,typeLayered表示分层视图。 cwResizePlots(... ...), //设置视图图层数量,见下面的说明。 ... ... //添加初始化数据或属性。 }; ChartWnd[@init]; //显示窗口并调用函数init进行初始化。
函数 cwResizePlots(...):设置子图数量或图层数量。
用法:cwResizePlots(nLayers)
//设置图层数量,用于分层视图、共享X轴视图,nLayers为大于0的整数。
返回值:逻辑值,true表示成功。
2 基本绘图方式
!!!using("win","math"); init(x) = { cwAttach[typeLayered], cwResizePlots(3), //分层视图为3层 x=linspace[-8.0, 8.0, 0.2], cwAddCurve{x, sin(x), len(x), 0}, x=linspace[-5.0, 5.0, 0.2], cwAddCurve{x, x-sin(x), len(x), 1}, x=linspace[ 1.0, 6.0, 0.2], cwAddCurve{x, x.*sin(x), len(x), 2} }; ChartWnd[@init];
3 设置属性
!!!using("win","math"); init(a,b,c,k1,k2,k3,k4)= { cwAttach[typeLayered], cwResizePlots(3), //分层视图为3层 a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100], k1=cwAddCurve{a, sin[a], 100, 0}, //给0子图添加曲线k1 k2=cwAddCurve{a, a-sin[a], 100, 0}, //给0子图添加曲线k2 k3=cwAddCurve{b, b-sin[b], 100, 1}, //给1子图添加曲线k3 k4=cwAddCurve{c, c.*sin[c], 100,2}, //给2子图添加曲线k4 cwSetAxisTitle("0子图X轴", 1, 0), //给0子图设置坐标轴标题 cwSetAxisTitle("0子图Y轴", 0, 0), //给0子图设置坐标轴标题 cwSetAxisTitle("1子图X轴", 1, 1), //给1子图设置坐标轴标题 cwSetAxisTitle("1子图Y轴", 0, 1), //给1子图设置坐标轴标题 cwSetAxisTitle("2子图X轴", 1, 2), //给2子图设置坐标轴标题 cwSetAxisTitle("2子图Y轴", 0, 2), //给2子图设置坐标轴标题 cwSetTitle["0子图曲线属性",0], //设置主标题 cwSetTitle["1子图曲线属性",1], //设置主标题 cwSetTitle["2子图曲线属性",2], //设置主标题 cwSetUseLegend(true,0), //设置使用图例 cwSetUseLegend(true,1), //设置使用图例 cwSetUseLegend(true,2), //设置使用图例 cwSetDataTitle["曲线1",cwGetIndex(k1),0],//设置k1曲线的图例 cwSetDataTitle["曲线2",cwGetIndex(k2),0],//设置k2曲线的图例 cwSetDataTitle["曲线3",cwGetIndex(k3),1],//设置k3曲线的图例 cwSetDataTitle["曲线4",cwGetIndex(k4),2] //设置k4曲线的图例 }; ChartWnd[@init];
!!!using("win","math"); f(x : max, static, k : nDataID, nPlot)= //关键字static指出后面的k是一个静态变量,静态变量总是初始化为0。模块变量nDataID, nPlot记住所操作的曲线。 { max=500, x=linspace[-9.0, 9.0, max], cwUpdateCurveByID[nDataID, x.*sin(x), x.*cos(x).^2.0, ++k%(max+1), nPlot] //++k%(max+1)中的运算符%表示求模 }; init(b,c :: nDataID, nPlot)= //模块变量nDataID, nPlot记住所操作的曲线。 { cwAttach[typeLayered], cwResizePlots(3), //分层视图为3层 b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100], nPlot=0, //模块变量nPlot赋值为0 nDataID=cwAddCurve(nPlot), //模块变量nDataID赋值为给0子图添加的空曲线 cwAddCurve{b, b-sin[b], 100, 1}, //给1子图添加曲线 cwAddCurve{c, c.*sin[c], 100, 2}, //给2子图添加曲线 cwSetTimer[@f, 100, true] //设置通过计时器触发调用的函数f;每隔100毫秒调用一次;true表示立即启动定时器。 }; ChartWnd[@init];
版权所有? Lu程序设计 2002-2014,保留所有权利
E-mail: forcal@sina.com QQ:630715621
最近更新: 2014年02月10日
原文:http://blog.csdn.net/forcal/article/details/19149577