使用XChart,我可以制作出漂亮的图形。当我制作图形时,我可以右键单击它,出现一个“另存为”的选项。然后,我可以将图像以指定的格式保存到指定的目录中。
我如何编写Java代码来为我自动执行此操作?也就是说,我有一个应用程序可以创建大约50个图表,我不想每次运行该应用程序时都必须手动保存每个图表。
下面是我制作图表的方法:
private void makeLineChart(int[][] data, String title) {
MyLineChart c = new MyLineChart(data, title);
XYChart chart = c.getChart();
new SwingWrapper<XYChart>(chart).displayChart();
// save as pdf...?
}
发布于 2017-05-21 23:22:59
xchart的示例代码提供了解决方案。每次你启动你的应用程序时,BitmapEncoder都可以做到这一点。BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
public class Example1 {
public static void main(String[] args) throws Exception {
double[] yData = new double[] { 2.0, 1.0, 0.0 };
// Create Chart
XYChart chart = new XYChart(500, 400);
chart.setTitle("Sample Chart");
chart.setXAxisTitle("X");
chart.setXAxisTitle("Y");
XYSeries series = chart.addSeries("y(x)", null, yData);
series.setMarker(SeriesMarkers.CIRCLE);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.JPG);
BitmapEncoder.saveJPGWithQuality(chart, "./Sample_Chart_With_Quality.jpg", 0.95f);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.BMP);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.GIF);
BitmapEncoder.saveBitmapWithDPI(chart, "./Sample_Chart_300_DPI", BitmapFormat.PNG, 300);
BitmapEncoder.saveBitmapWithDPI(chart, "./Sample_Chart_300_DPI", BitmapFormat.JPG, 300);
BitmapEncoder.saveBitmapWithDPI(chart, "./Sample_Chart_300_DPI", BitmapFormat.GIF, 300);
VectorGraphicsEncoder.saveVectorGraphic(chart, "./Sample_Chart", VectorGraphicsFormat.EPS);
VectorGraphicsEncoder.saveVectorGraphic(chart, "./Sample_Chart", VectorGraphicsFormat.PDF);
VectorGraphicsEncoder.saveVectorGraphic(chart, "./Sample_Chart", VectorGraphicsFormat.SVG);
}}
发布于 2021-04-23 03:20:32
类似于dawnfyly's answer,但是更具体地针对OP的问题,并且只将输出写入PDF。
可以使用标题为"Save Chart as Bitmap"的示例中所示的VectorGraphicsEncoder
编写PDF。
在这里,我将示例精简为仅包含相关信息:
package com.example;
import java.io.IOException;
import org.knowm.xchart.VectorGraphicsEncoder;
import org.knowm.xchart.VectorGraphicsEncoder.VectorGraphicsFormat;
import org.knowm.xchart.XYChart;
import org.knowm.xchart.XYSeries;
import org.knowm.xchart.style.markers.SeriesMarkers;
public class TryXchartToPdf extends XchartBase {
/**
* Creates a simple Chart and saves it as a PDF file.
* @throws IOException
*/
public static void main(String[] args) throws IOException {
double[] yData = new double[] { 2.0, 1.0, 0.0 };
// Create Chart
XYChart chart = new XYChart(500, 400);
chart.setTitle("Sample Chart");
chart.setXAxisTitle("X");
chart.setXAxisTitle("Y");
XYSeries series = chart.addSeries("y(x)", null, yData);
series.setMarker(SeriesMarkers.CIRCLE);
VectorGraphicsEncoder.saveVectorGraphic(chart, "./Sample_Chart", VectorGraphicsFormat.PDF);
}
}
https://stackoverflow.com/questions/44098450
复制相似问题