I have the following modified example for creating a XY Bar chart:
Code: Select all
package testing;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import generateProfiles.Reader_ExternalSignals;
public class LoadProfileChart extends JFrame {
ChartPanel chartPanel;
public LoadProfileChart(double [] timeSeries) {
createChart(timeSeries);
}
public ChartPanel getChartPanel () {
return this.chartPanel;
}
private void createChart(double [] timeSeries) {
XYDataset dataset = createDataset( timeSeries);
JFreeChart chart = createChart(dataset);
chartPanel = new ChartPanel(chart);
chartPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
chartPanel.setBackground(Color.white);
}
private XYDataset createDataset(double [] timeSeries) {
XYSeries series = new XYSeries("");
for (int i=0; i<timeSeries.length; i++) {
series.add(i,timeSeries[i]);
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
private JFreeChart createChart(XYDataset dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
"Load Profile",
"Minute of the day",
"Power in J/minute",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesPaint(0, Color.BLUE);
renderer.setSeriesStroke(0, new BasicStroke(2.0f));
renderer.setBaseShapesFilled(false);
renderer.setDrawOutlines(false);
plot.setRenderer(renderer);
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.BLACK);
plot.setDomainGridlinesVisible(true);
plot.setDomainGridlinePaint(Color.BLACK);
chart.getLegend().setFrame(BlockBorder.NONE);
chart.getLegend().setVisible(false);
chart.setTitle(new TextTitle("Electrical Load Profile",
new Font("Serif", java.awt.Font.BOLD, 14)
)
);
return chart;
}
}
Unfortunaley there are no real bars in the diagramm but a line. I want the bars to be filled like in this example (http://www.jfree.org/jfreechart/images/ ... tDemo1.png).
Would anyone mind telling me how I can do that? Thanks in advance
EDIT: I tried to modify the example by inserting:
renderer.setBaseShapesFilled(true);
renderer.setDrawOutlines(true);
But still the plot does not look like a real bar plot.