我的条形图有一个数据集,可以说:{1,2,3,4,5,6,7,8,9}。然后,我得到了折线图,该折线图应该是三点平均值,即该索引处的条形图的值,以及该点之前的两个值,然后除以三。
对于相应的条形图值1和2,折线图应该不存在,然后从位置3开始。它仍然在位置1开始折线图,只是将其拉伸以适合该图。
我该如何做才能使折线图从第3列开始,然后从第3列继续?
这是我现在拥有的:
公共类mockTest扩展了JFrame {
public mockTest()
{
//Mock data
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
int[] times = new int[]{1,2,3,4,5,6,7,8,9};
for ( int i = 0; i < times.length; i++ ){
dataset.addValue(times[i], "Time", "Hour" + String.valueOf(i+1));;
if(i>2)
{
dataset2.addValue((times[i] + times[i-1] + times[i-2])/3, "Time", "Hour" + String.valueOf(i+1));
}
}
CategoryPlot plot = new CategoryPlot();
//create the plot
//add the first dataset, and render as bar values
CategoryItemRenderer renderer = new BarRenderer();
plot.setDataset(0,dataset);
plot.setRenderer(0,renderer);
//add the second dataset, render as lines
CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
plot.setDataset(1, dataset2);
plot.setRenderer(1, renderer2);
//set axis
CategoryAxis domainAxis = new CategoryAxis("Time");
NumberAxis rangeAxis = new NumberAxis("Value");
plot.setDomainAxis(0,domainAxis);
plot.setRangeAxis(rangeAxis);
JFreeChart chart = new JFreeChart(plot);
ChartPanel chartPanel = new ChartPanel( chart );
this.setContentPane(chartPanel);
}
**弄清楚了,就在我放置if(i <2)语句的地方,添加了else语句,并以null作为值。
我最终使用了try and catch块,但是if和else也可以工作。在您不希望任何值的地方,只需将null作为值。
for(int i=0;i<ints1.size();i++)
{
dataset.addValue(ints1.get(i), "Good Product", "Hour" + String.valueOf(i+1));
dataset.addValue(ints2.get(i), "Bad Product", "Hour" + String.valueOf(i+1));
try{
dataset2.addValue((ints1.get(i) + ints1.get(i-1) + ints1.get(i-2))/3, "Time", "Hour" + String.valueOf(i+1));
}
catch(ArrayIndexOutOfBoundsException e)
{
dataset2.addValue(null, "Time", "Hour" + String.valueOf(i+1));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句