I have been using JFreeChart for drawing different charts like bar chart and area chart. Its a great tool. But I need some guidance to achieve plotting the lines on area chart. Till now I am able to achieve as below. But how to achieve drawing lines for some particular dates. Also need to draw a thick out line for area chart. Presently I am not able to add the image to this for the exact requirement.
[img]
[/img]
Code: Select all
package demo;
import java.awt.Color;
import java.awt.Dimension;
import java.io.File;
import java.io.IOException;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryMarker;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
public class StackedAreaChartDemo1 extends ApplicationFrame
{
public StackedAreaChartDemo1(String paramString)
{
super(paramString);
JPanel localJPanel = createDemoPanel();
localJPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(localJPanel);
}
public static CategoryDataset createDataset()
{
DefaultCategoryDataset localDefaultCategoryDataset = new DefaultCategoryDataset();
localDefaultCategoryDataset.addValue(1800.0D, "S1", "Start");
localDefaultCategoryDataset.addValue(3025.0D, "S1", "2015");
localDefaultCategoryDataset.addValue(9325.0D, "S1", "2020");
localDefaultCategoryDataset.addValue(15950.0D, "S1", "2025");
localDefaultCategoryDataset.addValue(22900.0D, "S1", "2030");
localDefaultCategoryDataset.addValue(30250.0D, "S1", "2035");
localDefaultCategoryDataset.addValue(26000.0D, "S1", "2040");
return localDefaultCategoryDataset;
}
public static JFreeChart createChart(CategoryDataset paramCategoryDataset)
{
JFreeChart localJFreeChart = ChartFactory.createStackedAreaChart("", "", "Dollars", paramCategoryDataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot localCategoryPlot = (CategoryPlot)localJFreeChart.getPlot();
localCategoryPlot.setForegroundAlpha(0.85F);
localCategoryPlot.setBackgroundPaint(new Color(255,255,255));
localCategoryPlot.setDomainGridlinesVisible(false);
localCategoryPlot.setRangeGridlinesVisible(true);
localCategoryPlot.setRangeGridlineStroke(Plot.DEFAULT_OUTLINE_STROKE);
localCategoryPlot.setRangeGridlinePaint(new Color(230,230,230));
localCategoryPlot.setOutlineVisible(false);
CategoryAxis localCategoryAxis = localCategoryPlot.getDomainAxis();
localCategoryAxis.setLowerMargin(-0.11D);
localCategoryAxis.setUpperMargin(-0.08D);
localCategoryAxis.setCategoryMargin(0.0D);
//NumberAxis localNumberAxis = (NumberAxis)localCategoryPlot.getRangeAxis();
//localNumberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
localCategoryAxis.setAxisLineVisible(false);
ValueAxis localRangeAxis = localCategoryPlot.getRangeAxis();
localRangeAxis.setAxisLineVisible(false);
CategoryItemRenderer localCategoryItemRenderer = localCategoryPlot.getRenderer();
localCategoryItemRenderer.setBaseItemLabelsVisible(false);
//localCategoryItemRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//localCategoryItemRenderer.setBaseItemLabelPaint(Color.WHITE);
//localCategoryItemRenderer.drawOutline(g2, localCategoryPlot, arg2);
localCategoryItemRenderer.setSeriesPaint(0, new Color(231, 231, 231));
/* CategoryMarker valuemarker = new CategoryMarker("2015");
valuemarker.setPaint(Color.GRAY);
valuemarker.setAlpha(0.8F);
valuemarker.setDrawAsLine(true);
valuemarker.setLabel("Today");
localCategoryPlot.addDomainMarker(valuemarker);*/
return localJFreeChart;
}
public static JPanel createDemoPanel()
{
JFreeChart localJFreeChart = createChart(createDataset());
//localJFreeChart.setBackgroundPaint(new Color(255,255,255));
return new ChartPanel(localJFreeChart);
}
public static void main(String[] paramArrayOfString)
{
JFreeChart localJFreeChart = createChart(createDataset());
localJFreeChart.clearSubtitles();
try{
ChartUtilities.saveChartAsPNG(new File("D:\\StackedAreaChartDemo1.png"), localJFreeChart, 331, 220);
}catch(IOException io){
System.out.println("*******Exception occured*****");
}
}
}