Использование библиотеки JFreechart:
У меня есть двумерный двойной массив, и я хочу отобразить все метки времени (время Unix) в формате даты (например, дд / мм / гггг). Я могу сгенерировать график, но он показывает ось X (время) как время Unix. Я попытался сгенерировать X.Axis как DateAxis, но он просто показал его как один день в 1970 году и не смог распознать и преобразовать метки времени Unix в массиве. Как я мог решить эту проблему?
import org.jfree.data.xy.*;
import org.jfree.ui.ApplicationFrame;
import org.xml.sax.SAXException;
import org.apache.commons.lang3.ArrayUtils;
import java.lang.*;
import java.awt.Color;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import javax.swing.JFrame;
import javax.xml.parsers.ParserConfigurationException;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
public class Verbrauchsdiagramm extends JFrame {
private static final long serialVersionUID = -7794334701144090065L;
double[][] A;
double[][] B;
XYLineAndShapeRenderer renderer;
DefaultXYDataset dataset;
NumberAxis xax;
NumberAxis yax;
XYPlot plot;
JFreeChart chart2;
ApplicationFrame punkteframe;
ChartPanel chartPanel2;
double xmin = 1514000000;
double xmax = 1570000000;
public Verbrauchsdiagramm() throws ParseException, SAXException, IOException, ParserConfigurationException {
createDia();
}
public void createDia() throws ParseException, SAXException, IOException, ParserConfigurationException {
convertArray();
renderer = new XYLineAndShapeRenderer(true, false);
dataset = new DefaultXYDataset();
xax = new NumberAxis("Zeit in Unixtime");
yax = new NumberAxis("Verbrauch");
xax.setRange(xmin,xmax);
plot = new XYPlot(dataset,xax,yax, renderer);
chart2 = new JFreeChart(plot);
punkteframe = new ApplicationFrame("Diagramm");
chartPanel2 = new ChartPanel(chart2);
dataset.addSeries("Bezug", A);
dataset.addSeries("Einspeisung", B);
punkteframe.setContentPane(chartPanel2);
punkteframe.pack();
punkteframe.setVisible(true);
}
public void convertArray() throws ParseException, SAXException, IOException, ParserConfigurationException {
SDATReader convert = new SDATReader();
A = convert.vecToArrayMS();
B = convert.vecToArrayMST();
}
public static void main (String[] args) throws ParseException, SAXException, IOException, ParserConfigurationException {
Verbrauchsdiagramm vdiagramm = new Verbrauchsdiagramm();
}
}