JfreeChart 虚线的画法

JfreeChart 虚线的画法_第1张图片

 

代码

 

import java.awt.BasicStroke;
import java.awt.Dimension;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class MyLineChartDemo extends ApplicationFrame
{

  public MyLineChartDemo(String s)
  {
  super(s);
  JFreeChart jfreechart = createChart();
  ChartPanel chartpanel = new ChartPanel(jfreechart);
  chartpanel.setPreferredSize(new Dimension(600, 350));
  setContentPane(chartpanel);
  }

  private static JFreeChart createChart()
  {
 
  String s = "家具产量";
  String s1 = "居民收入"; 
  String s3 = "2007年1月";
  String s4 = "2007年2月";
  String s5 = "2007年3月";
  String s6 = "2007年4月";
  String s7 = "2007年5月";
  String s8 = "2007年6月";
  String s9 = "2007年7月";
  String s10 = "2007年8月";
  String s11 = "2007年9月";
  String s12 = "2007年10月";
  String s13 = "2007年11月";
  String s14 = "2007年12月";
  
  CategoryPlot categoryplot = new CategoryPlot();
  /**开始构造第一条折线*/
  DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
  
  defaultcategorydataset.addValue(200, s, s3);
  defaultcategorydataset.addValue(210, s, s4);
  defaultcategorydataset.addValue(220, s, s5);
  defaultcategorydataset.addValue(230, s, s6);
  defaultcategorydataset.addValue(240, s, s7);
  defaultcategorydataset.addValue(250, s, s8);
  defaultcategorydataset.addValue(260, s, s9);
  defaultcategorydataset.addValue(270, s, s10);
  defaultcategorydataset.addValue(320, s, s11);
  
  LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
  categoryplot.setDataset(0, defaultcategorydataset);
  categoryplot.setRenderer(0, lineandshaperenderer);/**到此为止,一条折线的设置完成*/
  
  categoryplot.setRangeGridlinesVisible(true);
  categoryplot.setDomainAxis(new CategoryAxis("Category"));
  categoryplot.setRangeAxis(new NumberAxis("Value"));
  categoryplot.setOrientation(PlotOrientation.VERTICAL);
  
  
  
  /**构造第一条虚线*/
  DefaultCategoryDataset defaultcategorydataset1 = new DefaultCategoryDataset();
  
  defaultcategorydataset1.addValue(360, s, s12);
  defaultcategorydataset1.addValue(400, s, s13);
  defaultcategorydataset1.addValue(550, s, s14);
  
  categoryplot.setDataset(1, defaultcategorydataset1);
  
  LineAndShapeRenderer lineandshaperenderer1 = new LineAndShapeRenderer(); 
  lineandshaperenderer1.setBaseShapesVisible(true);/**设置折线中的端点图形是否可见*/
  
  lineandshaperenderer1.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {30F, 12F}, 0.0F)); //虚线生效处
  lineandshaperenderer1.setBaseItemLabelsVisible(true);
  
  lineandshaperenderer1.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
  
  categoryplot.setRenderer(1, lineandshaperenderer1); 
  
  return new JFreeChart(categoryplot);
  }

  public static void main(String args[])
  {
  MyLineChartDemo linechartdemo5 = new MyLineChartDemo("Line Chart Demo 5");
  linechartdemo5.pack();
  RefineryUtilities.centerFrameOnScreen(linechartdemo5);
  linechartdemo5.setVisible(true);
  }
}

 

=========================================================================

JfreeChart 虚线的画法_第2张图片

 

 

代码

 


import java.awt.BasicStroke;
import java.awt.Dimension;
import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Month;
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 MyLineChartDemo7 extends ApplicationFrame {

    public MyLineChartDemo7(String s) {
        super(s);
        JFreeChart jfreechart = createChart();
        ChartPanel chartpanel = new ChartPanel(jfreechart);
        chartpanel.setPreferredSize(new Dimension(600, 350));
        setContentPane(chartpanel);
    }

    private static XYDataset createDataset() {
        TimeSeries s1 = new TimeSeries("家具产量增量", Month.class);

        s1.add(new Month(1, 2001), 200);
        s1.add(new Month(2, 2001), 210);
        s1.add(new Month(3, 2001), 220);
        s1.add(new Month(4, 2001), 230);
        s1.add(new Month(5, 2001), 240);
        s1.add(new Month(6, 2001), 250);
        s1.add(new Month(7, 2001), 260);
        s1.add(new Month(8, 2001), 270);
        s1.add(new Month(9, 2001), 280);
        s1.add(new Month(10, 2001), 290);

        TimeSeries s2 = new TimeSeries("家具产量增量预测", Month.class);
        s2.add(new Month(10, 2001), 290);
        s2.add(new Month(11, 2001), 320);
        s2.add(new Month(12, 2001), 340);

        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(s1);
        dataset.addSeries(s2);

        return dataset;
    }

    private static JFreeChart createChart() {
        XYDataset defaultcategorydataset1 = createDataset();

        JFreeChart chart = ChartFactory.createTimeSeriesChart("预测图", "", "", // y-axis
                                                                                // label
                defaultcategorydataset1, // data
                true, true, false);
        XYPlot categoryplot = chart.getXYPlot();
        categoryplot.setRangeGridlinesVisible(true);
        categoryplot.setOrientation(PlotOrientation.VERTICAL);
        categoryplot.getRenderer().setSeriesStroke(0,
                new BasicStroke(2.0F, 1, 1, 1.0F, null, 0.0F));
        categoryplot.getRenderer()
                .setSeriesStroke(
                        1,
                        new BasicStroke(2.0F, 1, 1, 1.0F,
                                new float[] { 6F, 6F }, 0.0F));

        XYLineAndShapeRenderer lineandshaperenderer = (XYLineAndShapeRenderer) categoryplot
                .getRenderer();
        lineandshaperenderer.setBaseShapesVisible(true);

        /** 纵轴设置 */
        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
        numberaxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        numberaxis.setAutoRangeIncludesZero(true);
        numberaxis.setUpperMargin(0.12D);

        return new JFreeChart(categoryplot);
    }

    public static void main(String args[]) {
        MyLineChartDemo7 linechartdemo5 = new MyLineChartDemo7(
                "Line Chart Demo 5");
        linechartdemo5.pack();
        RefineryUtilities.centerFrameOnScreen(linechartdemo5);
        linechartdemo5.setVisible(true);
    }
}

 

摘抄于http://topic.csdn.net/u/20080416/10/43f21519-f21a-4796-ad5b-fb7d56c784fa.html

你可能感兴趣的:(JfreeChart 虚线的画法)