本发明涉及一种基于云平台的出版物图形生成方法,特别涉及的是基于saas技术的图形生成技术。
背景技术:
随着信息技术的高速发展以及云计算技术的出现,所有信息数据都将放在云中包括图形数据,但是一般我们的图形生成都是将数据导入excel电子表格,然后使用excel内置的绘图功能手动生成图形。这种做法适用于大多数情况,但是如果基础数据频繁更改,则手动创建图形可能很快就变得枯燥乏味,基于上述原因,本人发明了一种简单又快速的图形生成方法。
技术实现要素:
一种基于云平台的出版物图形生成方法;本方法是利用vs2008中的dynamicdatadisplay类库以及自定义的buginfo类、loadbuginfo方法及构建数组等一些例操作实现此方法,此步骤:
(1).首先声明一个泛型列表对象buginfolist,并使用一个程序定义的帮助器方法(名为loadbuginfo)将文件buginfo.txt中的虚拟数据填充到该列表中;
publicclassbuginfo{
publicdatetimedate;
publicintnumberopen;
publicintnumberclosed;
publicbuginfo(datetimedate,intnumberopen,intnumberclosed){
this.date=date;
this.numberopen=numberopen;
this.numberclosed=numberclosed;
}
}
利用loadbuginfo方法打开文件并遍历该文件,分析每个字段,然后实例化buginfo对象,并将每个buginfo对象存储到结果列表中。
privatestaticlist<buginfo>loadbuginfo(stringfilename)
{
varresult=newlist<buginfo>();
filestreamfs=newfilestream(filename,filemode.open);
streamreadersr=newstreamreader(fs);
stringline="";
while((line=sr.readline())!=null)
{
string[]pieces=line.split(':');
datetimed=datetime.parse(pieces[0]);
intnumopen=int.parse(pieces[1]);
intnumclosed=int.parse(pieces[2]);
buginfobi=newbuginfo(d,numopen,numclosed);
result.add(bi);
}
sr.close();
fs.close();
returnresult;
}
使用file.readalllines方法将数据文件中的所有行读入一个字符串数组,对三个数组进行声明并赋值.
datetime[]dates=newdatetime[buginfolist.count];
int[]numberopen=newint[buginfolist.count];
int[]numberclosed=newint[buginfolist.count];
for(inti=0;i<buginfolist.count;++i)
{
dates[i]=buginfolist[i].date;
numberopen[i]=buginfolist[i].numberopen;
numberclosed[i]=buginfolist[i].numberclosed;
}
将数据数组转换为特殊的enumerabledatasource类型.
vardatesdatasource=newenumerabledatasource<datetime>(dates);
datesdatasource.setxmapping(x=>dateaxis.converttodouble(x));
varnumberopendatasource=newenumerabledatasource<int>(numberopen);
numberopendatasource.setymapping(y=>y);
varnumbercloseddatasource=newenumerabledatasource<int>(numberclosed);
numbercloseddatasource.setymapping(y=>y);
(2)对于dynamicdatadisplay库,要绘制的所有数据都必须为统一格式。只是将三个数据数组传递给泛型enumerabledatasource构造函数。此外,必须告知该库与每个数据源关联的轴(x轴或y轴)。setxmapping和setymapping方法接受将方法委托作为参数。使用了lambda表达式来创建匿名方法,而不是定义显式委托。dynamicdatadisplay库的基本轴数据类型是double。setxmapping和setymapping方法将我的特殊数据类型映射到double类型。
在x轴上,使用converttodouble方法将datetime数据显式转换为double类型。在y轴上,我只是编写y=>y(读作“y转为y”),将输入inty隐式转换为输出doubley。我也可以通过编写setymapping(y=>convert.todouble(y)来显式进行类型映射。可以任意选择x和y作为lambda表达式的参数,即,我可以使用任意参数名称。
addlinegraph方法接受compositedatasource,后者定义要绘制的错误以及有关确切的绘制方式的信息。此处,我指示名为plotter的绘图器对象执行以下操作:使用粗细为2的蓝色线条绘制一个图形,放置具有红色边框和红色填充且大小为10的圆圈标记,并添加系列标题numberbugsopen。作为许多备选方法中的一种(plotter.addlinegraph(compositedatasource1,colors.red,1,"numberopen"))可以使用来绘制不带标记的细红色线条也可以创建虚线而不是实线:
pendashedpen=newpen(brushes.magenta,3);
dashedpen.dashstyle=dashstyles.dashdot;
plotter.addlinegraph(compositedatasource1,dashedpen,
newpendescription("openbugs"));