2016-07-08 5 views
0

В принципе, я могу рассчитать информацию, которую я хочу, только не в том формате, который я бы предпочел. Я хочу, чтобы моя ось x отображала ее значение в инкрементальном порядке, а не в том порядке, в котором они считываются ... так же, как отображается ось y; в порядке возрастания. Возможно, он показывает этот способ по умолчанию, так как это выходное значение, но я хотел бы быть тем же самым для оси x .... Я посмотрел на API AxisOrientation и попытался возиться с ним, но ничего ... никаких советов помог бы. благодаряЯ хочу, чтобы моя ось x отображалась, увеличивая значение

XSSFWorkbook my_workbook = new XSSFWorkbook(); 
XSSFSheet my_worksheet = my_workbook.createSheet("example"); 
XSSFRow row = my_worksheet.createRow(0); 
    row.createCell(0).setCellValue(4); 
    row.createCell(1).setCellValue(6); 
    row = my_worksheet.createRow(1); 
    row.createCell(0).setCellValue(2); 
    row.createCell(1).setCellValue(10); 
    row = my_worksheet.createRow(2); 
    row.createCell(0).setCellValue(8); 
    row.createCell(1).setCellValue(5); 

    XSSFDrawing xlsx_drawing = my_worksheet.createDrawingPatriarch(); 
    XSSFClientAnchor anchor = xlsx_drawing.createAnchor(0, 0, 0, 0, 0, 10, 10, 20); 
    XSSFChart my_line_chart = xlsx_drawing.createChart(anchor); 
    XSSFChartLegend legend = my_line_chart.getOrCreateLegend(); 
    legend.setPosition(LegendPosition.BOTTOM); 
    LineChartData data = my_line_chart.getChartDataFactory().createLineChartData(); 

    ChartAxis bottomAxis = my_line_chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM); 
     // bottomAxis.setOrientation(AxisOrientation.MIN_MAX); 
    ValueAxis leftAxis = my_line_chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT); 
    leftAxis.setCrosses(AxisCrosses.AUTO_ZERO); 

     ChartDataSource<Number> x = DataSources.fromNumericCellRange(my_worksheet, new CellRangeAddress(0, 2, 0, 0)); 
     ChartDataSource<Number> y = DataSources.fromNumericCellRange(my_worksheet, new CellRangeAddress(0, 2, 1, 1)); 
     data.addSeries(x, y);  
     my_line_chart.plot(data, new ChartAxis[] { bottomAxis, leftAxis }); 

// bottomAxis.setOrientation(AxisOrientation.MIN_MAX); 
+1

Если я правильно помню, точки данных соединены последовательно посредством линии, если вы хотите иметь его. Если вы просто нужны точки данных, тогда я бы рекомендовал использовать график рассеяния XY и выключить линию, когда вы закончите. –

+0

Я изменил данные в XSSFScatterChartData, но он работает, но я хочу, чтобы маркеры отображались, а не вся строка, что я предполагаю, что вы подразумеваете под «выключением линии» ... Я смотрю на api, но я не может найти такую ​​особенность ...... – ponderingdev

+0

Я знаю только excel. Моя рекомендация - записать макрос, отключить линию. Затем просмотрите макрос для команды change и посмотрите, не звонит ли он на звонки. –

ответ

0

JFreeChart является лучшим способом пойти с точки зрения создания диаграмм ..

Смежные вопросы