В принципе, я могу рассчитать информацию, которую я хочу, только не в том формате, который я бы предпочел. Я хочу, чтобы моя ось 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);
Если я правильно помню, точки данных соединены последовательно посредством линии, если вы хотите иметь его. Если вы просто нужны точки данных, тогда я бы рекомендовал использовать график рассеяния XY и выключить линию, когда вы закончите. –
Я изменил данные в XSSFScatterChartData, но он работает, но я хочу, чтобы маркеры отображались, а не вся строка, что я предполагаю, что вы подразумеваете под «выключением линии» ... Я смотрю на api, но я не может найти такую особенность ...... – ponderingdev
Я знаю только excel. Моя рекомендация - записать макрос, отключить линию. Затем просмотрите макрос для команды change и посмотрите, не звонит ли он на звонки. –