JFreeChart com pontos de dados truncados
Eu criei um JFreeChart com o código abaixo, mas as marcas do Eixo Y estão truncadas. Como devo exibir o gráfico mesmo que os pontos de dados estejam sobrepostos no eixo Y? Basicamente, eu quero que os pontos do eixo Y sejam gerados a partir do meu arquivo, um intervalo adequado é preenchido e exibido no gráfico.
private static JFreeChart buildChart(TimeSeriesCollection dataset,
String title, boolean endPoints) throws IOException {
// Create the chart
JFreeChart chart0 = ChartFactory.createTimeSeriesChart(
title, "Hour", "Count", dataset, true, true, false);
// Setup the appearance of the chart
chart0.setBackgroundPaint(Color.white);
XYPlot plot = (XYPlot) chart0.getXYPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
plot.setAxisOffset(new RectangleInsets(10.0, 10.0, 10.0, 10.0));
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
// Display data points or just the lines?
if (endPoints) {
XYItemRenderer renderer = plot.getRenderer();
if (renderer instanceof StandardXYItemRenderer) {
StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
rr.setBaseShapesVisible(true);
rr.setBaseShapesFilled(true);
rr.setDrawSeriesLineAsPath(true);
rr.setSeriesPaint(0, Color.blue.brighter());
rr.setSeriesVisible(0, true); // default
rr.setSeriesVisibleInLegend(0, true); // default
NumberAxis domainAxis = new NumberAxis();
domainAxis.setUpperMargin(0.15);
domainAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis = (NumberAxis) plot.getRangeAxis();
domainAxis.setAutoRangeIncludesZero(false);
}
}
// Tell the chart how we would like dates to read
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setAutoRange(true);
//axis.getDefaultAutoRange();
axis.setDateFormatOverride(new SimpleDateFormat("HH:mm"));
try {
ChartUtilities.saveChartAsJPEG(new File("suc.jpg"), 1.0f, chart0, 990, 700);
} catch (IOException e) {
e.printStackTrace();
}
return chart0;
}
Abaixo está a imagem que é criada, claramente você pode ver que o eixo Y há uma sobreposição mostrando.