Java 如何否生成 Excel 气泡图?
rt
在 Java 中生成 Excel 气泡图需要使用第三方库,比如 Apache POI 和 JFreeChart。下面是一个简单的示例代码,演示如何使用这些库生成 Excel 气泡图:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.xy.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ExcelBubbleChartGenerator {
public static void main(String[] args) throws IOException {
// 创建 Excel 工作簿和工作表
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Bubble Chart");
// 创建数据集
List<BubbleData> data = new ArrayList<>();
data.add(new BubbleData(1, 2, 3));
data.add(new BubbleData(4, 5, 6));
data.add(new BubbleData(7, 8, 9));
// 设置图表区域
int rowCount = 0;
int columnCount = 0;
for (BubbleData point : data) {
Row row = sheet.createRow(rowCount++);
row.createCell(columnCount++).setCellValue(point.getX());
row.createCell(columnCount++).setCellValue(point.getY());
row.createCell(columnCount++).setCellValue(point.getBubbleSize());
}
// 创建图表对象
XYDataset dataset = new DefaultXYDataset(data);
JFreeChart chart = ChartFactory.createBubbleChart("Bubble Chart", "X", "Y", dataset);
XYPlot plot = chart.getXYPlot();
plot.setSeriesRenderingOrder(SeriesRenderingOrder.REVERSE);
plot.setSeriesPaint(0, Color.BLUE);
plot.setSeriesPaint(1, Color.RED);
plot.setSeriesPaint(2, Color.GREEN);
plot.setSeriesStroke(0, new BasicStroke(2));
plot.setSeriesStroke(1, new BasicStroke(2));
plot.setSeriesStroke(2, new BasicStroke(2));
plot.setBackgroundPaint(Color.WHITE);
plot.setAxisShadowsVisible(true);
plot.setRangeGridlinePaint(Color.BLACK);
plot.setDomainGridlinePaint(Color.BLACK);
plot.setAnnotationsVisible(true);
plot.setAutoScale(true);
plot.setAxisOffset(new SpatialOffset());
plot.setOrientation(PlotOrientation.VERTICAL);
plot.setRangeCrosshairVisible(true);
plot.setDomainCrosshairVisible(true);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
plot.setSeriesFilled(true);
plot.setBubbleRadius(0.08);
plot.setBubbleMaxSize(100);
plot.setBubbleMinSize(10);
plot.setBubbleGradientFactor(0.5);
plot.setPadding(new RectangleInsets(5, 5, 5, 5));
plot.setBackgroundImage(null);
chart.removeLegend(); // remove legend to make room for bubble sizes and labels
// 将图表输出到 Excel 工作表上并保存文件
15 回答8.3k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
可以通过GcExcel来实现气泡图,GcExcel支持各种Excel图表,具体可以参考:
图表类型 - GcExcel 中文文档Java版 | 服务端高性能表格组件 - 葡萄城
生成气泡图的代码如下:
最后结果是:
