提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:王香|2018-09-14 16:49:33.000|阅读 307 次
概述:本文详细介绍了在TeeChart for Java使用函数中的功能期、周期样式和派生自定义功能。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
相关链接:
【下载TeeChart for Java最新版本】
在上一篇文章中,讲到使用函数中功能类型的功能特点、添加功能和定义数据源,在本文中将介绍其余三种,功能期、周期样式和派生自定义功能。
Period是使用函数的重要方法,因为Period定义了循环应用Function的点的范围。
例:我们有6个数据点(例如Bar系列的条形图),其值为:3,8,6,2,9和12。定义一个具有周期0的函数系列(默认),绘制的平均值为:6.667,将Period设置为2,我们得到3个平均值作为函数的输出:5.5,4和10.5。这些值将在其周期范围内集中绘制,即。输入系列的第1和第2栏之间的第1个值,第3和第4栏之间的第2个值等。您可以通过在图表编辑器中选择函数来定义Period,也可以使用FunctionType在运行时修改Period。例如:系列2是功能系列:
line1.getFunction().setPeriod(2);

期间可以定义为范围。这在使用DateTime系列时非常有用,我们希望将函数的“Period”表示为TimeStep。属性“PeriodStyle”控制如何表达“Period”?例如,您现在可以使用日期时间源系列上的常规“Average”功能绘制“monthly average of sales”功能,并将功能期间设置为“one month”:
private void Load() {
//Add in a BarSeries and Average Function at design-time.
java.util.Random rnd = new java.util.Random();
tChart1.getAspect().setView3D(false);
DateTime today = DateTime.getToday();
bar1.getMarks().setVisible(false);
bar1.getXValues().setDateTime(true);
tChart1.getAxes().getBottom().getLabels().setAngle(90);
for(int i = 0; i < 60; ++i)
today = today.addDays(5);
bar1.add(today, rnd.nextInt(100),"",Color.red);
average1.setPeriodAlign(com.steema.teechart.functions.PeriodAligns.FIRST);
average1.setPeriodStyle(com.steema.teechart.functions.PeriodStyles.RANGE);
average1.setPeriod(30);
line1.setDataSource(bar1);
line1.checkDataSource();
}
这将产生几个点,每个点显示BarSeries中每个月数据的“average”。在计算日期时间段的函数时,必须按源日期对源系列中的点进行排序。该范围也可用于非日期时间序列:
for(int i = 0; i < 60; ++i)
bar1.add(new Double(i), rnd.nextInt(100),"",Color.red);
average1.setPeriodAlign(com.steema.teechart.functions.PeriodAligns.FIRST);
average1.setPeriodStyle(com.steema.teechart.functions.PeriodStyles.RANGE);
average1.setPeriod(6);
这将计算每个“6”区间内每组点的平均值。(X > = 6,X < 6 的点将用于计算第一个平均值,X> = 6的点,X < 12将用于计算第二个平均值,依此类推......)。 请注意,这与计算每6个点的平均值不同。使用“Period Alignment”属性可以对齐“Series”范围内的功能点。以下将绘制每月结束时的功能点:
average1.setPeriodAlign(com.steema.teechart.functions.PeriodAligns.FIRST);
average1.setPeriodStyle(com.steema.teechart.functions.PeriodStyles.RANGE);
average1.setPeriod(com.steema.teechart.DateTime.getDaysInMonth(year,month));
Period = Month.TotalDays and PeriodAligns.First

Period = Month.TotalDays and PeriodAligns.Last
在这种情况下,“average”是在月初绘制的。

创建一个新的Function组件只是创建一个派生自Function类的新组件(它也可以从现有函数派生)。 在TTeeFunction中有两个重要的虚拟方法可以被覆盖以创建一个新的Function类型。
如果只有一个系列是数据源,则Calculate方法用于计算函数结果。如果多个系列可以是数据源,则CalculateMany用于计算函数结果。示例:创建新的SquareSum功能。需要一个SquareSum函数来返回“sum of squares平方和”。此函数只能有一个数据源或多个数据源,因此我们将覆盖Calculate和CalculateMany方法。
public class SquareSum extends Function {
public SquareSum() {
super();
}
public SquareSum(com.steema.teechart.Chart c) {
super(c);
}
public double calculate(Series sourceSeries,
int firstIndex,
int lastIndex) {
ValueList v = valueList(sourceSeries);
if (firstIndex == -1) {
return v.getTotal();
} else {
double result = 0;
for (int t = firstIndex; t <= lastIndex; t++) {
result+=Math.sqrt(v.getValue(t));
}
return result;
}
}
public double calculateMany(ArrayList sourceSeriesList,
int valueIndex) {
ValueList v;
double result = 0;
for (int t = 0; t < sourceSeriesList.size(); t++) {
v = valueList((Series) sourceSeriesList.get(t));
if (v.count > valueIndex) {
result+=Math.sqrt(v.getValue(valueIndex));
}
}
return result;
}
FirstIndex和EndIndex变量用于“loop”所有SourceSeries点以计算平方和。“ValueList”方法用于提取必需的Steema.TeeChart.ValueList,以使该类适用于像HorizBarSeries这样的Series类型,其中“XValues”保存点值而不是“YValues”。当Series 只有一个 Series作为DataSource 时,使用“Calculate”方法。当Series有多个Series作为数据源时,将调用“CalculateMany”方法。对于源系列中的每个点,“CalculateMany”将被调用一次,从零开始,以所有数据源的最小点数结束。 理解Calculate和CalculateMany之间的区别非常重要。当只有一个数据源并且只调用一次时调用“Calculate”。当有多个Series作为数据源时,会多次调用“CalculateMany”(每个点一个)。
购买Steema正版授权,请点击“”哟!

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn




Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
Aspose.Slides for Java使用户能够轻松地操作幻灯片、添加注释和转换文件。其易用性和集成能力提高了工作效率,使开发人员能够专注于更关键的任务。
在嵌入式软件测试领域,对交叉编译代码进行单元测试是一大挑战。Parasoft C/C++test作为专业的C/C++测试工具,能够与劳特巴赫Trace32调试器深度集成。下面会详细介绍如何在C++test中配置Trace32调试器,实现对PowerPC架构程序的单元测试,涵盖环境设置、项目导入到测试执行的全过程。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站