public JFreeChart createStackedBarChart(String title, XYDataset dataset) {
DateAxis domainAxis = new DateAxis("Date");
domainAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
domainAxis.setLowerMargin(0.01);
domainAxis.setUpperMargin(0.01);
NumberAxis rangeAxis = new NumberAxis("Hours");
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setUpperMargin(0.10);
StackedXYBarRenderer renderer = new StackedXYBarRenderer(0.15);
renderer.setDrawBarOutline(false);
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
TextAnchor.BOTTOM_CENTER));
renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator("{0} : {1} = {2}",
new SimpleDateFormat("yyyy"), new DecimalFormat("0")));
XYPlot plot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);
JFreeChart chart = new JFreeChart(title, plot);
chart.removeLegend();
chart.setTextAntiAlias(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
LegendTitle legend = new LegendTitle(plot);
legend.setBackgroundPaint(Color.white);
legend.setFrame(new BlockBorder());
legend.setPosition(RectangleEdge.BOTTOM);
chart.addSubtitle(legend);
return chart;
}