Primary and Second Axis
Possible Usage Scenarios
When the numbers in a chart vary widely from data series to data series, or when you have mixed types of data (price and volume), plot one or more data series on a secondary vertical (value) axis. The scale of the secondary vertical axis shows the values for the associated data series. A secondary axis works well in a chart that shows a combination of column and line charts.
Handle Primary and Second Axis like Microsoft Excel
Please see the following sample code that create a new Excel file and put values of the chart in the first worksheet. Then we add a chart and show the second-axis.
The following sample code generates the output Excel file.
Sample Code
// Create an instance of Workbook | |
Workbook workbook = new Workbook(); | |
// Access the first worksheet. | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Put the sample values used in a chart | |
worksheet.getCells().get("A1").putValue("Region"); | |
worksheet.getCells().get("A2").putValue("Peking"); | |
worksheet.getCells().get("A3").putValue("New York"); | |
worksheet.getCells().get("A4").putValue("Paris"); | |
worksheet.getCells().get("B1").putValue("Sales Volume"); | |
worksheet.getCells().get("C1").putValue("Growth Rate"); | |
worksheet.getCells().get("B2").putValue(100); | |
worksheet.getCells().get("B3").putValue(80); | |
worksheet.getCells().get("B4").putValue(140); | |
worksheet.getCells().get("C2").putValue(0.7); | |
worksheet.getCells().get("C3").putValue(0.8); | |
worksheet.getCells().get("C4").putValue(1.0); | |
// Create a Scatter chart | |
int pieIdx = worksheet.getCharts().add(ChartType.SCATTER, 6, 6, 15, 11); | |
// Retrieve the Chart object | |
Chart chart = worksheet.getCharts().get(pieIdx); | |
// Add Series | |
chart.getNSeries().add("B2:C4", true); | |
// Set the category data | |
chart.getNSeries().setCategoryData("=Sheet1!$A$2:$A$4"); | |
// Set the Second-Axis | |
chart.getNSeries().get(1).setPlotOnSecondAxis(true); | |
// Show the Second-Axis | |
chart.getSecondValueAxis().setVisible(true); | |
// Set the second series ChartType to line | |
chart.getNSeries().get(1).setType(ChartType.LINE); | |
// Set the series name | |
chart.getNSeries().get(0).setName("Sales Volume"); | |
chart.getNSeries().get(1).setName("Growth Rate"); | |
// Set the Legend at the bottom of the chart area | |
chart.getLegend().setPosition(LegendPositionType.BOTTOM); | |
// Fill the PlotArea area with nothing | |
chart.getPlotArea().getArea().getFillFormat().setFillType(FillType.NONE); | |
// Save the file | |
workbook.save("PrimaryandSecondaryAxis.xlsx"); | |