Я использую 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
JFreeChart скрывает последний элемент ⇐ JAVA
Программисты JAVA общаются здесь
1737460883
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;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79373778/jfreechart-hiding-last-element[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия