JfreeChart 虚线的画法

    技术2022-05-19  37

     

    代码

      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);   } }

     

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

     

     

    代码

     

    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


    最新回复(0)