java - 将 JavaFX 图表保存为 pdf 时不显示 x 和 y 轴值

标签 java pdf javafx pdfbox scatter

所以我有这个散点图:

final NumberAxis xAxis = new NumberAxis(0, 10, 1);
final NumberAxis yAxis = new NumberAxis(-100, 500, 100);
final ScatterChart<Number, Number> sc = new ScatterChart<Number, Number>(xAxis, yAxis);
xAxis.setLabel("Age (years)");
yAxis.setLabel("Returns to date");
sc.setTitle("Investment Overview");

XYChart.Series series1 = new XYChart.Series();
series1.setName("Equities");
series1.getData().add(new XYChart.Data(4.2, 193.2));
series1.getData().add(new XYChart.Data(2.8, 33.6));
series1.getData().add(new XYChart.Data(6.2, 24.8));
series1.getData().add(new XYChart.Data(1, 14));
series1.getData().add(new XYChart.Data(1.2, 26.4));
series1.getData().add(new XYChart.Data(4.4, 114.4));
series1.getData().add(new XYChart.Data(8.5, 323));
series1.getData().add(new XYChart.Data(6.9, 289.8));
series1.getData().add(new XYChart.Data(9.9, 287.1));
series1.getData().add(new XYChart.Data(0.9, -9));
series1.getData().add(new XYChart.Data(3.2, 150.8));
series1.getData().add(new XYChart.Data(4.8, 20.8));
series1.getData().add(new XYChart.Data(7.3, -42.3));
series1.getData().add(new XYChart.Data(1.8, 81.4));
series1.getData().add(new XYChart.Data(7.3, 110.3));
series1.getData().add(new XYChart.Data(2.7, 41.2));

XYChart.Series series2 = new XYChart.Series();
series2.setName("Mutual funds");
series2.getData().add(new XYChart.Data(5.2, 229.2));
series2.getData().add(new XYChart.Data(2.4, 37.6));
series2.getData().add(new XYChart.Data(3.2, 49.8));
series2.getData().add(new XYChart.Data(1.8, 134));
series2.getData().add(new XYChart.Data(3.2, 236.2));
series2.getData().add(new XYChart.Data(7.4, 114.1));
series2.getData().add(new XYChart.Data(3.5, 323));
series2.getData().add(new XYChart.Data(9.3, 29.9));
series2.getData().add(new XYChart.Data(8.1, 287.4));

sc.getData().addAll(series1, series2);
Scene scene = new Scene(sc, 500, 400);
Stage stage = (Stage) this.bttn_LoadCSVFolder.getScene().getWindow();

看起来像这样:

chart

使用此代码,我成功地将图表保存为 PDF:

WritableImage image = sc.snapshot(new SnapshotParameters(), null);
BufferedImage awtImage = SwingFXUtils.fromFXImage(image, null);
PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, awtImage);
PDPageContentStream contentStream = new PDPageContentStream(doc, doc.getPage(0), PDPageContentStream.AppendMode.APPEND, true, true);
contentStream.drawImage(pdImageXObject, 100, 160, awtImage.getWidth() / 2, awtImage.getHeight() / 2);
contentStream.close();

但是当我将图表保存到 PDF(甚至只是作为图像)时,轴的 x 和 y 值将不会显示:

chart

最佳答案

将其添加到您的代码中:

xAxis.setAnimated(false); 
yAxis.setAnimated(false);

原因:“这是因为标签是动画的(淡入),因此它们在第一帧(您捕获的)上不可见。” (Source)

如果您的图像看起来模糊,请参阅 this answer .

关于java - 将 JavaFX 图表保存为 pdf 时不显示 x 和 y 轴值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046751/

相关文章:

perl - Perl 的 CAM::PDF 是否能够聚合 Annotation 对象?

用于插入的 pdftk 字段名称

JavaFX css id 选择器名称中带有点(句号)

java finalize方法的使用

pdf - 从 Controller 渲染PDF以在Grails中查看

java - CCNx Java 代码帮助 (ProcessBuilder)

java - 如何解决JavaFX使用弹出通知的问题

css - javafx - 带切换功能的导航侧边栏

java - Java 中按位运算的调试工具

java - 在 fragment 之间传递数据,调用值而不是引用