gpt4 book ai didi

java - 在 TimeSeries JFreeChart 上显示总时间(以秒为单位)

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:03 24 4
gpt4 key购买 nike

我正在使用 TimeSeries jfreechart 来显示网络性能。我想显示以秒为单位的总时间,但它只显示从 0 到 59 的秒数,然后再次将秒数重置为 0。我必须显示最后 120 秒的数据。

这是代码:该函数用于创建图表:

private JFreeChart createChart(XYDataset xydataset) {

result = ChartFactory.createTimeSeriesChart("admin0", "", "MBytes/S", xydataset, true, true, true);
TextTitle objTitle = new TextTitle("admin0", new Font("Verdana", Font.BOLD, 12));
result.setTitle(objTitle);

final XYPlot plot = result.getXYPlot();
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinesVisible(true);
plot.setBackgroundPaint(Color.WHITE);
plot.setRangeGridlinePaint(Color.GRAY);
plot.setDomainGridlinePaint(Color.GRAY);


DateAxis xaxis = (DateAxis)plot.getDomainAxis();
xaxis.setAutoRange(true); ////set true to move graph with time.
xaxis.setFixedAutoRange(120000.0);
xaxis.setTickUnit(new DateTickUnit(DateTickUnit.SECOND, 15, new SimpleDateFormat("ss")));


NumberAxis range = (NumberAxis) plot.getRangeAxis();///y-Axis
range.setRange(0.0, 1.0);
range.setTickUnit(new NumberTickUnit(0.2));

XYItemRenderer renderer = plot.getRenderer();
renderer.setSeriesPaint(0, Color.RED);
renderer.setSeriesPaint(1, Color.GREEN);

return result;

}

这是创建数据集的代码:

  private XYDataset createAdmin0DatasetTest() {

TimeSeriesCollection dataset = new TimeSeriesCollection();

try
{

if(performanceData != null)
{
long speed = 0;
double recieveRate = 0;
double sendRate = 0;
long timeinMilli = 0;
long devider = 4294967296l;
long snapTime = 0;

Vector admin0Vec = (Vector)this.performanceData.get("admin0");
if(admin0Vec != null && admin0Vec.size() > 0)
{
Vector innerVec = (Vector)admin0Vec.get(0);
recieveRate = Long.parseLong(innerVec.get(2).toString());
sendRate = Long.parseLong(innerVec.get(1).toString());

timeinMilli = Long.parseLong(innerVec.get(0).toString());

}catch(Exception ex)
{
System.out.println("Exception in adding same values");
}


for(int i = 1 ; i < admin0Vec.size() ; i++)
{
innerVec = (Vector)admin0Vec.get(i);
recieveRate = Long.parseLong(innerVec.get(2).toString());
sendRate = Long.parseLong(innerVec.get(1).toString());
timeinMilli = Long.parseLong(innerVec.get(0).toString());
try
{
this.adminRecieve.addOrUpdate(new Second(new Date(timeinMilli)), recieveRate);
this.adminSend.addOrUpdate(new Second(new Date(timeinMilli)), sendRate);

}catch(Exception ex)
{
System.out.println("Exception in adding same values");
//ex.printStackTrace();
}


}
dataset = new TimeSeriesCollection(this.adminRecieve);
dataset.addSeries(adminSend);

}
}
}catch(Exception ex)
{
ex.printStackTrace();
}

return dataset;
}

请帮帮我

最佳答案

提示:

您正在使用 DateAxis 作为域轴并将其呈现为秒,因此它肯定只会显示数据的秒部分而不计算任何总计。此外,它不必从零开始,并且只会显示 120 秒的数据。

你想要的不是时间序列,即数字与时间,而是数字与数字(经过的秒数)的数据序列。因此,以这种方式构建它并使用 NumberAxis 作为域。

注意:以上内容是为了真实显示总耗时,例如对于秒 480 和 600 之间的数据,标签将是例如 480、500、520、540、560、580、600(即从某个时刻开始,如标题中所要求的总数)。如果问题是有静态标签,例如-120, -100, -80, -60, -40, -20, 0,移动数据然后在轴上设置刻度和标签需要以不同的方式完成。

关于java - 在 TimeSeries JFreeChart 上显示总时间(以秒为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com