Java POI 4.1.0折线图y系列显示错误图例

Java POI 4.1.0折线图y系列显示错误图例,java,apache-poi,Java,Apache Poi,如何在y系列上创建具有单个图例的折线图,而不是在x系列上显示多个图例 int rows = numberOfRows - 1; int cols = headers.size(); XSSFDrawing drawing = sheet.createDrawingPatriarch(); XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15); XSSFChart chart = drawing.crea

如何在y系列上创建具有单个图例的折线图,而不是在x系列上显示多个图例

int rows = numberOfRows - 1;
int cols = headers.size();

XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
XSSFChart chart = drawing.createChart(anchor);
chart.displayBlanksAs(DisplayBlanks.GAP);

XDDFChartLegend legend = chart.getOrAddLegend();
legend.setPosition(LegendPosition.TOP_RIGHT);

// Use a category axis for the bottom axis.
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setOrientation(AxisOrientation.MAX_MIN);
bottomAxis.setTitle("Date");

XDDFValueAxis rightAxis = chart.createValueAxis(AxisPosition.RIGHT);
rightAxis.setTitle("Rates");
rightAxis.setCrosses(AxisCrosses.AUTO_ZERO);

XDDFChartLegend chartLegend = chart.getOrAddLegend();
chartLegend.setPosition(LegendPosition.TOP_RIGHT);
chartLegend.setOverlay(false);

XDDFLineChartData lineChartData = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, rightAxis);

XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(1, rows, 0, 0));

for (int col = 1; col < cols; col++) {
    XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, rows, col, col));
    XDDFLineChartData.Series series1 = (XDDFLineChartData.Series) lineChartData.addSeries(xs, ys1);
    series1.setTitle(headers.get(col), null);
    series1.setSmooth(false);
    series1.setMarkerStyle(MarkerStyle.NONE);
}

chart.plot(lineChartData);
int rows=numberOfRows-1;
int cols=headers.size();
XSSFDrawing=sheet.createdrawingparhical();
XSSFClientAnchor-anchor=drawing.createAnchor(0,0,0,0,5,10,15);
XSSFChart chart=drawing.createChart(锚定);
chart.displaybanksas(displaybanks.GAP);
XDDFChartLegend legend=chart.getOradLegend();
图例.设置位置(LegendPosition.右上角);
//使用类别轴作为底部轴。
XDDFCategoryAxis bottomAxis=chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setOrientation(AxisOrientation.MAX_-MIN);
下轴。设定标题(“日期”);
XDDFValueAxis rightAxis=chart.createValueAxis(AxisPosition.RIGHT);
rightAxis.setTitle(“费率”);
rightAxis.SetCrosss(AxisCrosss.AUTO_ZERO);
XDDFChartLegend=chart.getOradLegend();
图表图例.设置位置(LegendPosition.右上角);
chartLegend.setOverlay(假);
XDDFLineChartData lineChartData=(XDDFLineChartData)chart.createData(ChartTypes.LINE、bottomAxis、rightAxis);
XDDFDataSource xs=XDDFDataSourcesFactory.fromStringCellRange(工作表,新的CellRangeAddress(1,行,0,0));
for(int col=1;col

上图显示的是我当前的绘图折线图,y系列仅显示一个图例,但显示了多个图例


上图是使用excel绘制的折线图,y系列仅显示1个图例

有一个设置用于改变图表中相同系列数据标记的颜色。请参阅:。在
Excel2007
之前,默认值为
false
。现在,微软决定按照默认设置设置
true
。因此,如果不需要,您需要明确设置
false

就你而言:

...
XDDFLineChartData lineChartData = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, rightAxis);
lineChartData.setVaryColors(false);
...

有一个设置用于改变图表中相同系列数据标记的颜色。请参阅:。在
Excel2007
之前,默认值为
false
。现在,微软决定按照默认设置设置
true
。因此,如果不需要,您需要明确设置
false

就你而言:

...
XDDFLineChartData lineChartData = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, rightAxis);
lineChartData.setVaryColors(false);
...

非常感谢!!!!!!你的答案帮我修复了y系列。。tqvm!!!非常感谢!!!!!!你的答案帮我修复了y系列。。tqvm!!!