在Lu脚本中绘制分层视图

本文档介绍了如何在Lu脚本中绘制分层视图,涵盖设置子图数量、基本绘图方法、调整图形属性以及实现动态显示某个子图的功能。通过cwResizePlots函数可以设定图层数量,适用于构建分层视图和共享X轴的场景。
摘要由CSDN通过智能技术生成

欢迎访问Lu程序设计

在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];


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[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日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值