欢迎访问 Lu程序设计

在Lu脚本中绘制分裂视图

目  录

1 基础知识 绘制分裂视图的基础知识。
2 分裂模式 例举多种分裂模式。
3 设置属性 给分裂视图设置属性。虽然可以通过右键菜单设置属性,但这里是通过脚本函数设置属性。
4 让某一个子图动起来 在分裂视图的某一个子图中动态显示图形。

1 基础知识

    绘制分裂视图的程序结构如下:

!!!using("win","math");   //使用命名空间win和math。win是必须的,而math是多数情况下要用到的。
init(... ...) =          
//定义初始化函数init,函数参数根据需要设置。
{
  cwAttach(typeSplit),    
//函数cwAttach用于设置图像类型,typeSplit表示分裂视图。
  cwResizePlots(... ...), //设置视图分裂模式,见下面的说明。
  ... ...                
//添加初始化数据或属性。
};
ChartWnd[@init];         
//显示窗口并调用函数init进行初始化。

    函数 cwResizePlots(...):设置子图数量或图层数量。

    用法1:cwResizePlots(nLayers) //设置图层数量,用于分层视图、共享X轴视图,nLayers为大于0的整数。
    用法2:cwResizePlots(mode, nRows, nCols) //设置子图数量,用于分裂视图,其中mode(0~5)表示分裂模式;nRows(大于0)表示行数,nCols(大于0)表示列数,这两个参数只有mode为1时起作用。

    分裂视图的分裂模式:0表示不分裂;1表示行列分裂;2表示左一右二的三分裂;3表示左二右一的三分裂;4表示上一下二的三分裂;5表示上二下一的三分裂。

    返回值:逻辑值,true表示成功。

2 分裂模式

    例子1:分裂为多行

!!!using("win","math");
init(a,b,c)=
{
  cwAttach[typeSplit], cwResizePlots(1,3,1),
   //分裂为3行
  a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100],
  cwAddCurve{a, sin[a], 100, 0},
     //给0子图添加曲线
  cwAddCurve{b, b-sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{c, c.*sin[c], 100, 2}
  //给2子图添加曲线
};
ChartWnd[@init];

    例子2:分裂为多列

!!!using("win","math");
init(a,b,c)=
{
  cwAttach[typeSplit], cwResizePlots(1,1,3),
   //分裂为3列
  a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100],
  cwAddCurve{a, sin[a], 100, 0},
     //给0子图添加曲线
  cwAddCurve{b, b-sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{b, b+sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{c, c.*sin[c], 100, 2}
  //给2子图添加曲线
};
ChartWnd[@init];

    例子3:分裂为多行多列

!!!using("win","math");
init(a,b,c)=
{
  cwAttach[typeSplit], cwResizePlots(1,2,3),
   //分裂为2行3列
  a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100],
  cwAddCurve{a, sin[a], 100, 0},
     //给0子图添加曲线
  cwAddCurve{b, b-sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{c, c+sin[c], 100, 2},
  //给2子图添加曲线
  cwAddCurve{a, a+tan[a], 100, 3},
  //给3子图添加曲线
  cwAddCurve{b, b+cos[b], 100, 4},
  //给4子图添加曲线
  cwAddCurve{c, c.*sin[c], 100,5}
   //给5子图添加曲线
};
ChartWnd[@init];

    例子4:左一右二分裂

!!!using("win","math");
init(a,b,c)=
{
  cwAttach[typeSplit], cwResizePlots(2,2,2),
   //左一右二分裂
  a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100],
  cwAddCurve{a, sin[a], 100, 0},
     //给0子图添加曲线
  cwAddCurve{b, b-sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{c, c.*sin[c], 100, 2}
  //给2子图添加曲线
};
ChartWnd[@init];

    例子5:上二下一分裂

!!!using("win","math");
init(a,b,c)=
{
  cwAttach[typeSplit], cwResizePlots(5,5,5),
   //上二下一分裂
  a=linspace[-8.0, 8.0, 100], b=linspace[-2.0, 5.0, 100], c=linspace[-10.0, -2.0, 100],
  cwAddCurve{a, sin[a], 100, 0},
     //给0子图添加曲线
  cwAddCurve{b, b-sin[b], 100, 1},
  //给1子图添加曲线
  cwAddCurve{c, c.*sin[c], 100, 2}
  //给2子图添加曲线
};
ChartWnd[@init];

 

3 设置属性

!!!using("win","math");
init(a,b,c,k1,k2)=
{
  cwAttach[typeSplit], cwResizePlots(2,2,2),
   //左一右二分裂
  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
  cwSetTitle["两条曲线", 0],             //设置0子图的主标题。
  cwSetUseLegend(true, 0),
              //设置0子图使用图例
  cwSetDataTitle["曲线1",cwGetIndex(k1), 0],
//设置0子图k1曲线的图例
  cwSetDataTitle["曲线2",cwGetIndex(k2), 0],
//设置0子图k2曲线的图例
  cwAddCurve{b, b-sin[b], 100, 1},      //给1子图添加曲线
 
cwSetAxisTitle("X轴", 1, 1), cwSetAxisTitle("Y轴", 0, 1), //给1子图设置坐标轴标题
  cwAddCurve{c, c.*sin[c], 100, 2},
     //给2子图添加曲线
 
cwSetGridLine[true,true,true,true,2]  //显示2子图的网格
};
ChartWnd[@init];

4 让某一个子图动起来

!!!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[typeSplit], cwResizePlots(2,2,2),
   //左一右二分裂
  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-2013,保留所有权利
E-mail: forcal@sina.com
  QQ:630715621
最近更新: 2014年02月15日