JFreeChart скрывает последний элементJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JFreeChart скрывает последний элемент

Сообщение Anonymous »

Я использую JFreeChart для создания диаграммы с двумя осями Y и значениями дат на оси X. Проблема, с которой я столкнулся, заключается в том, что дата 01.01.2025 отображается неправильно на диаграмме, хотя она является частью данных. В частности, когда я пытаюсь отобразить точки данных за 1 января 2025 г., кажется, что диаграмма скрывает или опускает это значение. Несмотря на установку диапазона для осей Y, дата не отображается в выводе.
package jfree.test;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class t3 {

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Diagramm mit zwei Y-Achsen und Datumswerten");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JFreeChart chart = createChart();
frame.add(new ChartPanel(chart), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
});
}

private static JFreeChart createChart() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

XYSeries series1 = new XYSeries("Serie 1");
series1.add(convertToDate("2025-01-01"), convertToDate("2025-01-01"));
series1.add(convertToDate("2025-01-02"), convertToDate("2025-01-03"));
series1.add(convertToDate("2025-01-03"), convertToDate("2025-01-05"));
series1.add(convertToDate("2025-01-04"), convertToDate("2025-01-07"));
XYSeriesCollection dataset1 = new XYSeriesCollection(series1);

XYSeries series2 = new XYSeries("Serie 2");
series2.add(convertToDate("2025-01-01"), convertToDate("2025-01-02"));
series2.add(convertToDate("2025-01-02"), convertToDate("2025-01-04"));
series2.add(convertToDate("2025-01-03"), convertToDate("2025-01-06"));
series2.add(convertToDate("2025-01-04"), convertToDate("2025-01-08"));
XYSeriesCollection dataset2 = new XYSeriesCollection(series2);

JFreeChart chart = ChartFactory.createXYLineChart(
null, null, null, null, PlotOrientation.VERTICAL, true, true, false
);

XYPlot plot = chart.getXYPlot();

DateAxis leftSide = new DateAxis("left");
leftSide.setDateFormatOverride(dateFormat);
plot.setRangeAxis(0, leftSide);
plot.setDataset(0, dataset1);
plot.mapDatasetToRangeAxis(0, 0);
plot.getRangeAxis(0).setUpperBound(convertToDate("2025-01-01"));

DateAxis rightSide = new DateAxis("right");
rightSide.setDateFormatOverride(dateFormat);
plot.setRangeAxis(1, rightSide);
plot.setDataset(1, dataset2);
plot.mapDatasetToRangeAxis(1, 1);

DateAxis xAxis = new DateAxis("X-Achse (Datum)");
xAxis.setDateFormatOverride(dateFormat);
plot.setDomainAxis(xAxis);

return chart;
}

private static long convertToDate(String dateString) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(dateString);
return date.getTime();
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}



Подробнее здесь: https://stackoverflow.com/questions/793 ... st-element
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»