Java 创建Excel散点图
程序员文章站
2022-06-01 23:37:18
...
散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,表示因变量随自变量而变化的大致趋势,常用于比较跨类别的聚合数据。在excel中,支持创建散点图来实现数据分析,本文将通过java程序代码示例来介绍具体实现方法。
工具:Free Spire.XLS for Java (免费版)
注:可通过官网下载,解压并将lib文件夹下的jar文件导入java程序。也可通过maven仓库下载导入。这里可支持的图标类型多达70多种,如柱形图、饼状图、折线图、散点图、混合图、雷达图、气泡图等等。本文以创建散点图为例。
Java 代码示例
import com.spire.xls.*; import com.spire.xls.core.IChartTrendLine; public class ScatterChart { public static void main(String[] args) { //实例化Workbook类的对象,并获取第一个工作表 Workbook workbook = new Workbook(); Worksheet sheet = workbook.getWorksheets().get(0); //设置列宽,工作表名 sheet.getCellRange("A1:B1").setColumnWidth(15f);; sheet.setName("散点图"); //添加图表数据源 sheet.getCellRange("A1").setValue("城市化水平"); sheet.getCellRange("A2").setValue("10"); sheet.getCellRange("A3").setValue("15"); sheet.getCellRange("A4").setValue("17"); sheet.getCellRange("A5").setValue("25"); sheet.getCellRange("A6").setValue("35"); sheet.getCellRange("A7").setValue("40"); sheet.getCellRange("A8").setValue("38"); sheet.getCellRange("A10").setValue ("17"); sheet.getCellRange("A9").setValue ("24"); sheet.getCellRange("B1").setValue("耕地面积"); sheet.getCellRange("B2").setValue ("26780"); sheet.getCellRange("B3").setValue("24086"); sheet.getCellRange("B4").setValue ("20546"); sheet.getCellRange("B5").setValue ("15057"); sheet.getCellRange("B6").setValue ("11036"); sheet.getCellRange("B7").setValue ("12546"); sheet.getCellRange("B8").setValue("9854"); sheet.getCellRange("B9").setValue ("13506"); sheet.getCellRange("B10").setValue ("18756"); //创建散点图 Chart chart = sheet.getCharts().add(ExcelChartType.ScatterMarkers); chart.setDataRange(sheet.getCellRange("B2:B10")); chart.setSeriesDataFromRange(false); //指定散点图在sheet中的位置 chart.setLeftColumn(4); chart.setTopRow(1); chart.setRightColumn(15); chart.setBottomRow(25); //添加图表标题、系列标签 chart.setChartTitle("城市化与耕地面积变化散点图"); chart.getChartTitleArea().isBold(true);; chart.getChartTitleArea().setSize(12); chart.getSeries().get(0).setCategoryLabels(sheet.getCellRange("B2:B10")); chart.getSeries().get(0).setValues(sheet.getCellRange("A2:A10")); sheet.getCellRange("A1:B10").getStyle().setHorizontalAlignment(HorizontalAlignType.Center); sheet.getCellRange("A1:B1").getStyle().getFont().isBold(true); //添加趋势线 IChartTrendLine trendLine = chart.getSeries().get(0).getTrendLines().add(TrendLineType.Exponential); trendLine.setName("趋势线"); //添加坐标轴名称 chart.getPrimaryValueAxis().setTitle("城市化水平(%)"); chart.getPrimaryCategoryAxis().setTitle("耕地面积(万hm^2)"); //保存文档 workbook.saveToFile("ScatterChart.xlsx",ExcelVersion.Version2010); workbook.dispose(); } }