java 散点图_java-Apache POI散点图创建
當前使用POI生成散點圖,但是該圖表很奇怪:
左上角的一個是使用我的代碼生成的,另一個是在Excel中手動生成的.
它們都是“帶有直線和標記的散點圖”類型,但是由于某種原因,生成的圖表顯示了曲線.另一個問題是,每個數據點在圖例中分別列出,并指定了另一種顏色.
public void GenerateChart(XSSFSheet sheet) {
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
XSSFChart chart = drawing.createChart(anchor);
XSSFChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.TOP_RIGHT);
XSSFValueAxis bottomAxis = chart.createValueAxis(AxisPosition.BOTTOM);
XSSFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
CellRangeAddress crXData = new CellRangeAddress(1, sheet.getLastRowNum(), 0, 0);
CellRangeAddress crYData = new CellRangeAddress(1, sheet.getLastRowNum(), 1, 1);
CellReference crTitle = new CellReference(0,1);
Cell cell = sheet.getRow(crTitle.getRow()).getCell(crTitle.getCol());
ChartDataSource dsXData = DataSources.fromNumericCellRange(sheet, crXData);
ChartDataSource dsYData = DataSources.fromNumericCellRange(sheet, crYData);
XSSFScatterChartData data = chart.getChartDataFactory().createScatterChartData();
ScatterChartSeries seriesTitler = data.addSerie(dsXData, dsYData);
seriesTitler.setTitle(cell.getStringCellValue());
chart.plot(data, bottomAxis, leftAxis);
}
使用Apache POI 3.17
文檔here顯示XSSFScatterChartData和其他對象已被棄用,我應該改用XDDFScatterChartData.但是我不知道在哪里可以獲取.jar來使用它.我以為它是Beta版?
我想要做的是生成圖像右側的圖表(手動創建的圖表).由于POI允許創建圖表似乎是一個相對較新的東西,因此我一直找不到任何線索.有人知道訣竅嗎?
解決方法:
在較新的Excel版本中,問題已更改為Excel圖表的默認值.
有一個設置可以使散點圖中的線條平滑. Apache poi對此沒有設置.但是現在在較新的Excelversions中,如果未設置此選項,則默認為true.
還有一個用于更改每個數據點顏色的設置.另外apache poi沒有設置這個.但是現在在較新的Excelversions中,如果未設置,則此選項默認為true.
因此,我們需要根據需要將這兩個選項都設置為false:
...
chart.plot(data, bottomAxis, leftAxis);
//set properties of first scatter chart data series to not smooth the line:
((XSSFChart)chart).getCTChart().getPlotArea().getScatterChartArray(0).getSerArray(0)
.addNewSmooth().setVal(false);
//set properties of first scatter chart to not vary the colors:
((XSSFChart)chart).getCTChart().getPlotArea().getScatterChartArray(0)
.addNewVaryColors().setVal(false);
...
不幸的是,https://poi.apache.org/apidocs/不是最新穩定版本的POI API文檔,而是當前“ Nightly Build”的POI API文檔.因此,對于使用XDDF而不是XSSF,需要使用夜間構建,而夜間構建當然不是穩定版本,應該在生產代碼中使用.
標簽:java,charts,excel,graph,apache-poi
來源: https://codeday.me/bug/20191012/1900568.html
總結
以上是生活随笔為你收集整理的java 散点图_java-Apache POI散点图创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 09花冠钥匙计算机电路图,丰田花冠轿车发
- 下一篇: 电商扣减库存_电商平台仓库管理系统究竟有