Я пытаюсь указать setTickUnit с интервалом в 5 лет, а также моя дата на оси X должна отображать 2018, 2023, 2028, 2033, 2038 и так далее.Однако, если я попробовал ниже вариант:
DateTickUnit dateTickUnit = new DateTickUnit(DateTickUnitType.YEAR, 5, new SimpleDateFormat("yyyy"));
dateAxis.setTickUnit(dateTickUnit);
Я получаю следующий вывод:
![enter image description here](https://i.stack.imgur.com/OlBlP.jpg)
Дата начинается с 2020 года,2025 и т. Д. *
Ожидаемый результат: (Дата должна начинаться с 2018 года, а затем должна иметь интервал 5)
![enter image description here](https://i.stack.imgur.com/G0gtH.jpg)
Может кто-нибудь, пожалуйста, помогите здесь.
Код:
import java.awt.BasicStroke;
import java.awt.Color;
import java.io.IOException;
import java.text.SimpleDateFormat;
import javax.swing.WindowConstants;
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.axis.DateTickUnit;
import org.jfree.chart.axis.DateTickUnitType;
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;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class Layer1VariabelPensioenCopy extends ApplicationFrame {
static JFreeChart xylineChart = null;
public Layer1VariabelPensioenCopy( String applicationTitle, String chartTitle ) {
super(applicationTitle);
xylineChart = ChartFactory.createTimeSeriesChart(
chartTitle ,
"Jaar" ,
"Amount in euro's (€)" ,
createDataset() ,
true , true , false);
ChartPanel chartPanel = new ChartPanel( xylineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 550 , 450 ) );
final XYPlot plot = xylineChart.getXYPlot( );
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , new Color(105, 45, 150) );
renderer.setSeriesPaint( 1 , new Color(0, 105, 180) );
renderer.setSeriesPaint( 2 , Color.GRAY );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
plot.setRenderer( renderer );
plot.setBackgroundPaint(Color.WHITE);
plot.setDomainGridlinesVisible(false);
plot.setRangeGridlinePaint(Color.DARK_GRAY);
DateAxis dateAxis = (DateAxis) plot.getDomainAxis();
DateTickUnit dateTickUnit = new DateTickUnit(DateTickUnitType.YEAR, 5, new SimpleDateFormat("yyyy"));
dateAxis.setTickUnit(dateTickUnit);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setRange(0, 25000.00);
rangeAxis.setTickUnit(new NumberTickUnit(5000));
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
TimeSeriesCollection dataset = new TimeSeriesCollection();
final TimeSeries goedWeer = new TimeSeries("Goed weer");
goedWeer.add(new Day(1, 1, 2018), 7000);
goedWeer.add(new Day(1, 1, 2023), 9216.63637661471);
goedWeer.add(new Day(1, 1, 2028), 12510.6772682533);
goedWeer.add(new Day(1, 1, 2033), 17010.970019862);
goedWeer.add(new Day(1, 1, 2038), 24006.1447412814);
dataset.addSeries( goedWeer );
return dataset;
}
public static void main( String[ ] args ) throws IOException {
Layer1VariabelPensioenCopy layer1Layer1VariabelPensioen = new Layer1VariabelPensioenCopy("Variabel Pensioen", "Variabel Pensioen");
layer1Layer1VariabelPensioen.pack( );
layer1Layer1VariabelPensioen.setLocationRelativeTo(null);
RefineryUtilities.centerFrameOnScreen( layer1Layer1VariabelPensioen );
layer1Layer1VariabelPensioen.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
layer1Layer1VariabelPensioen.setVisible( true );
}
}
Версия: jfreechart: 1.5.0 jcommon: 1.0.24