Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过访问2.csv文件中的数据创建条形图_Java_Csv_Bar Chart - Fatal编程技术网

Java 通过访问2.csv文件中的数据创建条形图

Java 通过访问2.csv文件中的数据创建条形图,java,csv,bar-chart,Java,Csv,Bar Chart,.csv文件1数据: sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line HTTP Request1, 750 ,26339 ,22644 , 40210 HTTP Request2, 750 ,8280 ,4781

.csv
文件1数据:

sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line
HTTP Request1,  750               ,26339           ,22644               , 40210
HTTP Request2,  750               ,8280       ,4781              ,21016      
public JFreeChart createBarChartFromCSV() {     


csv csvReader = new csv();
        List<String[]> csvData1 = null;
                List<String[]> csvData2 = null;
        int indexOfAverage1 = 0;
                int indexOfAverage2 = 0;

        csvData1 = csvReader.getDataFromCSV1(csv.CSVFILENAME1);
                csvData2 = csvReader.getDataFromCSV2(csv.CSVFILENAME2);

        for(String[] columnArray : csvData1)
            for(int i = 0; i< columnArray.length; i++)
                if(columnArray[i].equalsIgnoreCase("average")){


enter code here

        indexOfAverage1 = i;
                    break;
                }

        if(indexOfAverage1 == 0){
            System.err.println("Error retrieving data from CSV File1 !!");
            System.exit(0);
        }


         for(String[] columnArray : csvData2)
            for(int j = 0; j< columnArray.length; j++)
                if(columnArray[j].equalsIgnoreCase("average")){
                    indexOfAverage2 = j;
            break;
                }

        if(indexOfAverage2 == 0){
            System.err.println("Error retrieving data from CSV File2 !!");
            System.exit(0);
}                


                JFreeChart barChart = generateBarChart(csvData1,csvData2, indexOfAverage1,indexOfAverage2);

        return barChart;
    }


    private JFreeChart generateBarChart(List<String[]> csvData1,List<String[]> csvData2, int columnIndex1, int columnIndex2){

        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        final String YAXIS_NAME = csvData1.get(0)[columnIndex1]; //value returned is "average"
        final String XAXIS_NAME = csvData1.get(0)[0]; //value returned is "sampler_label"

        for(int i = 1; i < csvData1.size() - 1; i++){

            long averageValue1 = Long.parseLong(csvData1.get(i)[columnIndex1]);
            String columnKey1 = csvData1.get(i)[0];

            dataSet.setValue(averageValue1, YAXIS_NAME, columnKey1); // plot the graph
                        }


        for(int j = 1; j< csvData2.size() - 1; j++){

            long averageValue2 = Long.parseLong(csvData2.get(j)[columnIndex2]);
            String columnKey2 = csvData2.get(j)[0];

            dataSet.setValue(averageValue2, YAXIS_NAME, columnKey2); // plot the graph

        }

             System.out.println("created");

JFreeChart chart = ChartFactory.createBarChart("Comparison between the average of 2 values", XAXIS_NAME, YAXIS_NAME, dataSet, PlotOrientation.VERTICAL, true, true, false);      
        final CategoryPlot plot = chart.getCategoryPlot();
        chart.setBackgroundPaint(Color.white);       
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        BarRenderer renderer=new BarRenderer();

      System.out.print( "set the range axis to display integers only...");
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

          System.out.print( "disable bar outlines...");
        renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setMaximumBarWidth(0.10);


          System.out.print( "set up gradient paints for series...");
    final GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f, Color.blue, 
            0.0f, 0.0f, Color.lightGray
        );
        final GradientPaint gp1 = new GradientPaint(
            0.0f, 0.0f, Color.green, 
            0.0f, 0.0f, Color.lightGray
        );

        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);



                return chart;
    }    
.csv
文件2数据:

sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line
HTTP Request1,  350               ,2539        ,2224                , 48410
HTTP Request4,  350               ,8736       ,9285              ,38217
public JFreeChart createBarChartFromCSV() {     


csv csvReader = new csv();
        List<String[]> csvData1 = null;
                List<String[]> csvData2 = null;
        int indexOfAverage1 = 0;
                int indexOfAverage2 = 0;

        csvData1 = csvReader.getDataFromCSV1(csv.CSVFILENAME1);
                csvData2 = csvReader.getDataFromCSV2(csv.CSVFILENAME2);

        for(String[] columnArray : csvData1)
            for(int i = 0; i< columnArray.length; i++)
                if(columnArray[i].equalsIgnoreCase("average")){


enter code here

        indexOfAverage1 = i;
                    break;
                }

        if(indexOfAverage1 == 0){
            System.err.println("Error retrieving data from CSV File1 !!");
            System.exit(0);
        }


         for(String[] columnArray : csvData2)
            for(int j = 0; j< columnArray.length; j++)
                if(columnArray[j].equalsIgnoreCase("average")){
                    indexOfAverage2 = j;
            break;
                }

        if(indexOfAverage2 == 0){
            System.err.println("Error retrieving data from CSV File2 !!");
            System.exit(0);
}                


                JFreeChart barChart = generateBarChart(csvData1,csvData2, indexOfAverage1,indexOfAverage2);

        return barChart;
    }


    private JFreeChart generateBarChart(List<String[]> csvData1,List<String[]> csvData2, int columnIndex1, int columnIndex2){

        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        final String YAXIS_NAME = csvData1.get(0)[columnIndex1]; //value returned is "average"
        final String XAXIS_NAME = csvData1.get(0)[0]; //value returned is "sampler_label"

        for(int i = 1; i < csvData1.size() - 1; i++){

            long averageValue1 = Long.parseLong(csvData1.get(i)[columnIndex1]);
            String columnKey1 = csvData1.get(i)[0];

            dataSet.setValue(averageValue1, YAXIS_NAME, columnKey1); // plot the graph
                        }


        for(int j = 1; j< csvData2.size() - 1; j++){

            long averageValue2 = Long.parseLong(csvData2.get(j)[columnIndex2]);
            String columnKey2 = csvData2.get(j)[0];

            dataSet.setValue(averageValue2, YAXIS_NAME, columnKey2); // plot the graph

        }

             System.out.println("created");

JFreeChart chart = ChartFactory.createBarChart("Comparison between the average of 2 values", XAXIS_NAME, YAXIS_NAME, dataSet, PlotOrientation.VERTICAL, true, true, false);      
        final CategoryPlot plot = chart.getCategoryPlot();
        chart.setBackgroundPaint(Color.white);       
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        BarRenderer renderer=new BarRenderer();

      System.out.print( "set the range axis to display integers only...");
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

          System.out.print( "disable bar outlines...");
        renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setMaximumBarWidth(0.10);


          System.out.print( "set up gradient paints for series...");
    final GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f, Color.blue, 
            0.0f, 0.0f, Color.lightGray
        );
        final GradientPaint gp1 = new GradientPaint(
            0.0f, 0.0f, Color.green, 
            0.0f, 0.0f, Color.lightGray
        );

        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);



                return chart;
    }    
我想显示条形图,它应该描述每个采样器标签的两个文件的平均值。 这里每个文件中有2个平均值。可能有n个值。在条形图中,我只想在一个图形中显示文件1和文件2的值。 请帮帮我

public JFreeChart createBarChartFromCSV(){
public JFreeChart createBarChartFromCSV() {     


csv csvReader = new csv();
        List<String[]> csvData1 = null;
                List<String[]> csvData2 = null;
        int indexOfAverage1 = 0;
                int indexOfAverage2 = 0;

        csvData1 = csvReader.getDataFromCSV1(csv.CSVFILENAME1);
                csvData2 = csvReader.getDataFromCSV2(csv.CSVFILENAME2);

        for(String[] columnArray : csvData1)
            for(int i = 0; i< columnArray.length; i++)
                if(columnArray[i].equalsIgnoreCase("average")){


enter code here

        indexOfAverage1 = i;
                    break;
                }

        if(indexOfAverage1 == 0){
            System.err.println("Error retrieving data from CSV File1 !!");
            System.exit(0);
        }


         for(String[] columnArray : csvData2)
            for(int j = 0; j< columnArray.length; j++)
                if(columnArray[j].equalsIgnoreCase("average")){
                    indexOfAverage2 = j;
            break;
                }

        if(indexOfAverage2 == 0){
            System.err.println("Error retrieving data from CSV File2 !!");
            System.exit(0);
}                


                JFreeChart barChart = generateBarChart(csvData1,csvData2, indexOfAverage1,indexOfAverage2);

        return barChart;
    }


    private JFreeChart generateBarChart(List<String[]> csvData1,List<String[]> csvData2, int columnIndex1, int columnIndex2){

        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        final String YAXIS_NAME = csvData1.get(0)[columnIndex1]; //value returned is "average"
        final String XAXIS_NAME = csvData1.get(0)[0]; //value returned is "sampler_label"

        for(int i = 1; i < csvData1.size() - 1; i++){

            long averageValue1 = Long.parseLong(csvData1.get(i)[columnIndex1]);
            String columnKey1 = csvData1.get(i)[0];

            dataSet.setValue(averageValue1, YAXIS_NAME, columnKey1); // plot the graph
                        }


        for(int j = 1; j< csvData2.size() - 1; j++){

            long averageValue2 = Long.parseLong(csvData2.get(j)[columnIndex2]);
            String columnKey2 = csvData2.get(j)[0];

            dataSet.setValue(averageValue2, YAXIS_NAME, columnKey2); // plot the graph

        }

             System.out.println("created");

JFreeChart chart = ChartFactory.createBarChart("Comparison between the average of 2 values", XAXIS_NAME, YAXIS_NAME, dataSet, PlotOrientation.VERTICAL, true, true, false);      
        final CategoryPlot plot = chart.getCategoryPlot();
        chart.setBackgroundPaint(Color.white);       
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        BarRenderer renderer=new BarRenderer();

      System.out.print( "set the range axis to display integers only...");
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

          System.out.print( "disable bar outlines...");
        renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setMaximumBarWidth(0.10);


          System.out.print( "set up gradient paints for series...");
    final GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f, Color.blue, 
            0.0f, 0.0f, Color.lightGray
        );
        final GradientPaint gp1 = new GradientPaint(
            0.0f, 0.0f, Color.green, 
            0.0f, 0.0f, Color.lightGray
        );

        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);



                return chart;
    }    
csv csvReader=新csv(); 列表csvData1=null; 列表csvData2=null; int indexOfAverage1=0; int indexOfAverage2=0; csvData1=csvReader.getDataFromCSV1(csv.CSVFILENAME1); csvData2=csvReader.getDataFromCSV2(csv.CSVFILENAME2); 对于(字符串[]列数组:csvData1) for(int i=0;i
您尝试了什么?在发布问题之前要努力。事实上,我现在已经找到了解决方案。我能画出图表。但希望两个文件的条形图以不同的颜色显示。我并没有把它完成。是的,我在发帖之前做了努力。如果你愿意,我可以发布整个代码。如果你得到了解决方案,那么在这里发布部分代码,并接受你自己的解决方案。这样这篇文章就不会成为未回答问题的一部分。