我猜你在犯一个小错误,那就是
with in for loop for each iteration of loop you are creating anew DefaultCategoryDatasetinstance。因此,每次将每个项目添加到一个单独的
DefaultCategoryDataset对象中,并使用
DefaultCategoryDataset具有最后一个值的最终实例来创建图表时,这就是在图表中仅获得最后一个值的唯一原因。
解决方案是仅在一次for循环之前和之后创建DefaultCategoryDataset对象,如下所示:
DefaultCategoryDataset barChartDataset = new DefaultCategoryDataset();for (int l = 0; l < data.length; l++) { // barChartDataset.setValue(new Double(data[l]), "Scores", stu); barChartDataset.addValue(new Double(data[l]), "Scores", stu); System.out.println(data[l]); } JFreeChart barChart = ChartFactory.createBarChart3D("Summary", "Name", "Scores", barChartDataset, PlotOrientation.VERTICAL, false, true, false);这是我的一个应用程序中的代码片段,它工作正常:
DefaultCategoryDataset dataset= new DefaultCategoryDataset(); // Get today as a Calendar.... Calendar today = Calendar.getInstance(); for(int i=0; i<15 ;i++) { //get util.Date class object for today date..... java.util.Date today_date=new java.util.Date(today.getTimeInMillis()); //convert date in string format to display on chart..... String today_string_date = new SimpleDateFormat("dd/MM/yy").format(today_date); // set values to DefaultCategoryDataset to display on chart... dataset.setValue(rs1.getInt("login_count"),"Login Frequency", today_string_date); today.add(Calendar.DATE, -1); }// for closing...JFreeChart chart = ChartFactory.createBarChart3D("ISIS:Overall login history for last 15 days", "Date -->", "No of user(s) login per day -->", dataset, PlotOrientation.VERTICAL, true, true, false); CategoryPlot p = chart.getCategoryPlot(); NumberAxis rangeAxis = (NumberAxis) p.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) p.getRenderer(); DecimalFormat decimalformat1 = new DecimalFormat("##"); renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1)); renderer.setItemLabelsVisible(true);ChartUtilities.saveChartAsPNG(new File(filePath +"/chart1.png"), chart ,1250, 400);希望它能解决您的问题。



