Thank you very much for all the help you always give.
I have to save the following image
but when I use the Jfreechart utility (ChartUtils.saveChartAsPNG
) to save I can only save each graph separately and not the complete one.
And when I use the (BufferedImage
) utility, it stores in very bad quality, many blurry pixels, poor resolution.
What other alternative can I use?
This is my code:
String direccionTXTlinea = "\\\\172.16.40.10\\Geodesia\\volcanes\\lineas\\Maule_PUEL-MAU2.txt";
LectorTXT lectorTXT = new LectorTXT();
lectorTXT.leerTXTlinea(direccionTXTlinea);
TransformarTXT transformarTXT = new TransformarTXT();
transformarTXT.transformarDatosLinea(lectorTXT.getListaLinea());
GeneradorTimeSerie timeSerieTXT = new GeneradorTimeSerie();
timeSerieTXT.setTransformarTXT(transformarTXT);
timeSerieTXT.crearTimeSerieTXT();
TimeSeriesCollection UNO = new TimeSeriesCollection();
TimeSeriesCollection DOS = new TimeSeriesCollection();
TimeSeriesCollection TRES = new TimeSeriesCollection();
UNO.addSeries(timeSerieTXT.getSerieUNOmasERROR());
UNO.addSeries(timeSerieTXT.getSerieUNO());
UNO.addSeries(timeSerieTXT.getSerieUNOmenosERROR());
DOS.addSeries(timeSerieTXT.getSerieDOSmasERROR());
DOS.addSeries(timeSerieTXT.getSerieDOS());
DOS.addSeries(timeSerieTXT.getSerieDOSmenosERROR());
TRES.addSeries(timeSerieTXT.getSerieTRESmasERROR());
TRES.addSeries(timeSerieTXT.getSerieTRES());
TRES.addSeries(timeSerieTXT.getSerieTRESmenosERROR());
XYDataset datasetUNO = UNO;
XYDataset datasetDOS = DOS;
NumberAxis rangeAxis1 = new NumberAxis("L.Linea cm");
rangeAxis1.setAutoRangeIncludesZero(false);
XYItemRenderer renderer1 = new StandardXYItemRenderer();
renderer1.setSeriesPaint(0, Color.decode("#C1ECFF"));
renderer1.setSeriesPaint(2, Color.decode("#C1ECFF"));
renderer1.setSeriesPaint(1, Color.decode("#00067F"));
XYPlot subplot1 = new XYPlot(datasetUNO, null, rangeAxis1, renderer1);
NumberAxis rangeAxis2 = new NumberAxis("D.Vertical cm 2");
rangeAxis2.setAutoRangeIncludesZero(false);
XYItemRenderer renderer2 = new StandardXYItemRenderer();
renderer2.setSeriesPaint(0, Color.decode("#FF8B8A"));
renderer2.setSeriesPaint(2, Color.decode("#FF8B8A"));
renderer2.setSeriesPaint(1, Color.decode("#FF0800"));
XYPlot subplot2 = new XYPlot(datasetDOS, null, rangeAxis2, renderer2);
ValueAxis domainAxis = new DateAxis();
CombinedDomainXYPlot plot = new CombinedDomainXYPlot();
plot.setDomainAxis(domainAxis);
plot.add(subplot1, 1);
plot.add(subplot2, 1);
plot.setOrientation(PlotOrientation.VERTICAL);
String Estacion1 = "\\\\172.16.40.10\\Geodesia\\volcanes\\zona2\\Maule\\Maule_mau2.txt";
String Estacion2 = "\\\\172.16.40.10\\Geodesia\\volcanes\\zona2\\Maule\\Maule_nieb.txt";
LectorTXT lectorTXTEstacion1 = new LectorTXT();
LectorTXT lectorTXTEstacion2 = new LectorTXT();
lectorTXTEstacion1.leerTXTlinea(Estacion1);
lectorTXTEstacion2.leerTXTlinea(Estacion2);
TransformarTXT transformarTXTestacion1 = new TransformarTXT();
transformarTXTestacion1.transformarDatosEstacion(lectorTXTEstacion1.getListaLinea());
TransformarTXT transformarTXTestacion2 = new TransformarTXT();
transformarTXTestacion2.transformarDatosEstacion(lectorTXTEstacion2.getListaLinea());
GeneradorTimeSerie timeSerieTXT1 = new GeneradorTimeSerie();
timeSerieTXT1.setTransformarTXT(transformarTXTestacion1);
GeneradorTimeSerie timeSerieTXT2 = new GeneradorTimeSerie();
timeSerieTXT2.setTransformarTXT(transformarTXTestacion2);
timeSerieTXT1.crearTimeSerieTXT();
timeSerieTXT2.crearTimeSerieTXT();
TimeSeriesCollection UNO1 = new TimeSeriesCollection();
TimeSeriesCollection DOS1 = new TimeSeriesCollection();
TimeSeriesCollection TRES1 = new TimeSeriesCollection();
TimeSeriesCollection UNO2 = new TimeSeriesCollection();
TimeSeriesCollection DOS2 = new TimeSeriesCollection();
TimeSeriesCollection TRES2 = new TimeSeriesCollection();
UNO1.addSeries(timeSerieTXT1.getSerieDOSmasERROR());
UNO1.addSeries(timeSerieTXT1.getSerieDOS());
UNO1.addSeries(timeSerieTXT1.getSerieDOSmenosERROR());
DOS1.addSeries(timeSerieTXT1.getSerieDOSmasERROR());
DOS1.addSeries(timeSerieTXT1.getSerieDOS());
DOS1.addSeries(timeSerieTXT1.getSerieDOSmenosERROR());
TRES1.addSeries(timeSerieTXT1.getSerieTRESmasERROR());
TRES1.addSeries(timeSerieTXT1.getSerieTRES());
TRES1.addSeries(timeSerieTXT1.getSerieTRESmenosERROR());
UNO2.addSeries(timeSerieTXT2.getSerieDOSmasERROR());
UNO2.addSeries(timeSerieTXT2.getSerieDOS());
UNO2.addSeries(timeSerieTXT2.getSerieDOSmenosERROR());
DOS2.addSeries(timeSerieTXT2.getSerieDOSmasERROR());
DOS2.addSeries(timeSerieTXT2.getSerieDOS());
DOS2.addSeries(timeSerieTXT2.getSerieDOSmenosERROR());
TRES2.addSeries(timeSerieTXT2.getSerieTRESmasERROR());
TRES2.addSeries(timeSerieTXT2.getSerieTRES());
TRES2.addSeries(timeSerieTXT2.getSerieTRESmenosERROR());
XYDataset datasetUNO1 = UNO1;
XYDataset datasetDOS1 = DOS1;
XYDataset datasetTRES1 = TRES1;
XYDataset datasetUNO2 = UNO2;
XYDataset datasetDOS2 = DOS2;
XYDataset datasetTRES2 = TRES2;
NumberAxis rangeAxis11 = new NumberAxis("Norte cm");
rangeAxis11.setAutoRangeIncludesZero(false);
XYItemRenderer renderer11 = new StandardXYItemRenderer();
renderer11.setSeriesPaint(0, Color.decode("#C1ECFF"));
renderer11.setSeriesPaint(2, Color.decode("#C1ECFF"));
renderer11.setSeriesPaint(1, Color.decode("#00067F"));
XYPlot subplot11 = new XYPlot(datasetUNO1, null, rangeAxis11, renderer11);
NumberAxis rangeAxis21 = new NumberAxis("Este cm");
rangeAxis21.setAutoRangeIncludesZero(false);
XYItemRenderer renderer21 = new StandardXYItemRenderer();
renderer21.setSeriesPaint(0, Color.decode("#A8FFA4"));
renderer21.setSeriesPaint(2, Color.decode("#A8FFA4"));
renderer21.setSeriesPaint(1, Color.decode("#15FF1B"));
XYPlot subplot21 = new XYPlot(datasetDOS1, null, rangeAxis21, renderer21);
NumberAxis rangeAxis31 = new NumberAxis("Vertical cm");
rangeAxis31.setAutoRangeIncludesZero(false);
XYItemRenderer renderer31 = new StandardXYItemRenderer();
renderer31.setSeriesPaint(0, Color.decode("#FF8B8A"));
renderer31.setSeriesPaint(2, Color.decode("#FF8B8A"));
renderer31.setSeriesPaint(1, Color.decode("#FF0800"));
XYPlot subplot31 = new XYPlot(datasetTRES1, null, rangeAxis31, renderer31);
ValueAxis domainAxis1 = new DateAxis();
CombinedDomainXYPlot plot1 = new CombinedDomainXYPlot();
plot1.setDomainAxis(domainAxis1);
plot1.add(subplot11, 1);
plot1.add(subplot21, 1);
plot1.add(subplot31, 1);
plot1.setOrientation(PlotOrientation.VERTICAL);
NumberAxis rangeAxis12 = new NumberAxis("Norte cm");
rangeAxis12.setAutoRangeIncludesZero(false);
XYItemRenderer renderer12 = new StandardXYItemRenderer();
renderer12.setSeriesPaint(0, Color.decode("#C1ECFF"));
renderer12.setSeriesPaint(2, Color.decode("#C1ECFF"));
renderer12.setSeriesPaint(1, Color.decode("#00067F"));
XYPlot subplot12 = new XYPlot(datasetUNO2, null, rangeAxis12, renderer12);
NumberAxis rangeAxis22 = new NumberAxis("Este cm");
rangeAxis22.setAutoRangeIncludesZero(false);
XYItemRenderer renderer22 = new StandardXYItemRenderer();
renderer22.setSeriesPaint(0, Color.decode("#A8FFA4"));
renderer22.setSeriesPaint(2, Color.decode("#A8FFA4"));
renderer22.setSeriesPaint(1, Color.decode("#15FF1B"));
XYPlot subplot22 = new XYPlot(datasetDOS2, null, rangeAxis22, renderer22);
NumberAxis rangeAxis32 = new NumberAxis("Vertical cm");
rangeAxis32.setAutoRangeIncludesZero(false);
XYItemRenderer renderer32 = new StandardXYItemRenderer();
renderer32.setSeriesPaint(0, Color.decode("#FF8B8A"));
renderer32.setSeriesPaint(2, Color.decode("#FF8B8A"));
renderer32.setSeriesPaint(1, Color.decode("#FF0800"));
XYPlot subplot32 = new XYPlot(datasetTRES2, null, rangeAxis32, renderer32);
ValueAxis domainAxis2 = new DateAxis();
CombinedDomainXYPlot plot2 = new CombinedDomainXYPlot();
plot2.setDomainAxis(domainAxis2);
plot2.add(subplot12, 1);
plot2.add(subplot22, 1);
plot2.add(subplot32, 1);
plot2.setOrientation(PlotOrientation.VERTICAL);
JFreeChart a = new JFreeChart("Linea: ",JFreeChart.DEFAULT_TITLE_FONT, plot, false);
JFreeChart b = new JFreeChart("Estacion GPS: ",JFreeChart.DEFAULT_TITLE_FONT, plot1, false);
JFreeChart c = new JFreeChart("Estacion GPS: ",JFreeChart.DEFAULT_TITLE_FONT, plot2, false);
ChartPanel panel = new ChartPanel(a, true, true, true, true, true);
ChartPanel panel2 = new ChartPanel(b, true, true, true, true, true);
ChartPanel panel3 = new ChartPanel(c, true, true, true, true, true);
Dimension dmnsn = new Dimension(950, 500);
Dimension dmnsn2 = new Dimension(1900, 500);
panel.setMaximumDrawHeight(500);
panel.setMinimumDrawHeight(450);
panel.setMaximumDrawWidth(1900);
panel.setMinimumDrawWidth(950);
panel.setMinimumSize(dmnsn2);
panel2.setMinimumSize(dmnsn);
panel3.setMinimumSize(dmnsn);
JFrame frame = new JFrame("VOLCAN");
JPanel asd = new JPanel();
asd.setLayout(new GridBagLayout());
GridBagConstraints csd = new GridBagConstraints();
JLabel volcan = new JLabel("el volcan");
csd.gridx = 0;
csd.gridy = 0;
csd.gridwidth = 2;
asd.add(volcan, csd);
frame.add(asd);
csd.gridx = 0;
csd.gridy = 1;
csd.gridwidth = 1;
asd.add(panel3, csd);
frame.add(asd);
csd.gridx = 1;
csd.gridy = 1;
csd.gridwidth = 1;
asd.add(panel2, csd);
frame.add(asd);
csd.gridx = 0;
csd.gridy = 2;
csd.gridwidth =2;
asd.add(panel, csd);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);