Jfreechart显示数据点图表(线上可以显示点数据)

Jfreechart显示数据点图表


journal_insert_pic_70539052

 

package com.ccxe.layer.code;

import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.Axis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;


public class HealthLineTao {

 public static void main(String[] args)
  { 
  HealthLineTao healthline=new HealthLineTao("xiaotao","小淘");
  healthline.CreatePicture(); 
  }
 
 String stockId;
  String stockName;
 private XYLineAndShapeRenderer localObject;
 
  /**构造函数,初始化**/
  public HealthLineTao(String stockId, String stockName)
  {
   super();
   this.stockId = stockId;
   this.stockName = stockName;
  }

  

  private static XYDataset getDataSetHeight()
  {
 
     TimeSeries timeSeries1 = new TimeSeries("身高(cm)");
     //时间曲线数据集合
     TimeSeriesCollection lineDataset = new TimeSeriesCollection();
    
     timeSeries1.add(new Day(22, 7, 2010), 46.0D);
     timeSeries1.add(new Day(22, 8, 2010), 58.0D);
     timeSeries1.add(new Day(22, 9, 2010), 60.0D);
     timeSeries1.add(new Day(22, 10, 2010), 61.0D);
     timeSeries1.add(new Day(22, 11, 2010), 63.0D);
     timeSeries1.add(new Day(22, 12, 2010), 64.0D);
     timeSeries1.add(new Day(22, 1, 2011), 66.0D);
     timeSeries1.add(new Day(22, 2, 2011), 68.0D);
     timeSeries1.add(new Day(22, 3, 2011), 70.0D);
     timeSeries1.add(new Day(22, 4, 2011), 71.0D);
     timeSeries1.add(new Day(22, 5, 2011), 72.0D);
     timeSeries1.add(new Day(22, 6, 2011), 73.0D);
     timeSeries1.add(new Day(22, 7, 2011), 74.8D);
     timeSeries1.add(new Day(22, 8, 2011), 75.0D);
     timeSeries1.add(new Day(22, 9, 2011), 76.0D);
     timeSeries1.add(new Day(22, 10, 2011), 80.0D);
    
     lineDataset.addSeries(timeSeries1);
      
     return lineDataset;
  }
 
 
  private static XYDataset getDataSetWeight()
  {
     //时间曲线数据集合
     TimeSeriesCollection lineDataset = new TimeSeriesCollection();
   
     TimeSeries timeSeries2 = new TimeSeries("体重(kg)"); 

      timeSeries2.add(new Day(22, 7, 2010), 3.1D);
    timeSeries2.add(new Day(22, 8, 2010), 4.3D);
    timeSeries2.add(new Day(22, 9, 2010), 5.3D);
    timeSeries2.add(new Day(22, 10, 2010), 6.8D);
    timeSeries2.add(new Day(22, 11, 2010), 7.0D);
    timeSeries2.add(new Day(22, 12, 2010), 7.2D);
    timeSeries2.add(new Day(22, 1, 2011), 7.4D);
    timeSeries2.add(new Day(22, 2, 2011), 7.6D);
    timeSeries2.add(new Day(22, 3, 2011), 7.8D);
    timeSeries2.add(new Day(22, 4, 2011), 8.0D);
    timeSeries2.add(new Day(22, 5, 2011), 8.4D);
    timeSeries2.add(new Day(22, 6, 2011), 8.6D);
    timeSeries2.add(new Day(22, 7, 2011), 8.7D);
    timeSeries2.add(new Day(22, 8, 2011), 9.0D);
    timeSeries2.add(new Day(22, 9, 2011), 9.2D);
    timeSeries2.add(new Day(22, 10, 2011), 10.0D);
    
     lineDataset.addSeries(timeSeries2);
        
     return lineDataset;
  }
 
 
  @SuppressWarnings("deprecation")
 public void CreatePicture()
  {
   XYDataset dataset=getDataSetHeight();
   JFreeChart chart = ChartFactory.createTimeSeriesChart("分时图", "时间","身高(cm)", dataset, true, true, false);
   XYPlot plot = (XYPlot) chart.getPlot();
   //设置网格背景颜色
   plot.setBackgroundPaint(Color.white);
   plot.setOutlineVisible(true);
   plot.setOutlinePaint(Color.magenta);
   //设置网格竖线颜色
   plot.setDomainGridlinePaint(Color.pink);
//   plot.setDomainGridlinesVisible(false);
   //设置网格横线颜色
   plot.setRangeGridlinePaint(Color.pink);
   //设置曲线图与xy轴的距离
   plot.setAxisOffset(new RectangleInsets(10D, 10D, 10D, 10D));
  
  
 //对X轴做操作
   ValueAxis domainAxis = plot.getDomainAxis();
   domainAxis.setTickLabelsVisible(true);//X轴的标题文字是否显示
   domainAxis.setTickMarksVisible(true);
   domainAxis.setAutoRange(true);
  
// //对Y轴做操作
   ValueAxis rAxisL = plot.getRangeAxis();
   ((Axis) rAxisL).setTickLabelsVisible(true);//Y轴的标题文字是否显示
   ((NumberAxis) rAxisL).setAutoRangeStickyZero(true);
  
 //身高
   XYLineAndShapeRenderer localXYItemRenderer = (XYLineAndShapeRenderer)plot.getRenderer();
  localXYItemRenderer.setBaseShapesVisible(true);
  localXYItemRenderer
    .setBaseToolTipGenerator(new StandardXYToolTipGenerator(
      "{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"),
      new DecimalFormat("0.00")));
   
  //体重
  NumberAxis localNumberAxis2 = new NumberAxis("体重(kg)");
  localNumberAxis2.setUpperMargin(1.0D);
  plot.setRangeAxis(1, localNumberAxis2);
  plot.setDataset(1, getDataSetWeight());
  plot.setRangeAxis(1, localNumberAxis2);
  plot.mapDatasetToRangeAxis(1, 1);
  
  StandardXYItemRenderer xYItemRenderer = new StandardXYItemRenderer();
  xYItemRenderer.setBaseShapesVisible(true);
  xYItemRenderer
  .setBaseToolTipGenerator(new StandardXYToolTipGenerator(
    "{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"),
    new DecimalFormat("0.00")));
  plot.setRenderer(1, xYItemRenderer);
  ChartUtilities.applyCurrentTheme(chart);
  

  /*--柱状图start
  XYBarRenderer localXYBarRenderer = new XYBarRenderer(0.2D);
  
  localXYBarRenderer
    .setBaseToolTipGenerator(new StandardXYToolTipGenerator(
      "{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"),
      new DecimalFormat("0,000.00")));
  plot.setRenderer(1, localXYBarRenderer);
  ChartUtilities.applyCurrentTheme(chart);
  localXYBarRenderer.setBarPainter(new StandardXYBarPainter());
  localXYBarRenderer.setShadowVisible(false);
    柱状图end--*/
  
//  //对Y轴做操作
    ValueAxis rAxisR = plot.getRangeAxis(1);
    ((Axis) rAxisR).setTickLabelsVisible(true);//Y轴的标题文字是否显示
    ((NumberAxis) rAxisR).setAutoRangeStickyZero(true);
     
//    XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
   
    //设置曲线是否显示数据点
//    xylineandshaperenderer.setBaseShapesVisible(true);
//    xylineandshaperenderer.setSeriesShapesVisible(0, true);
//    xylineandshaperenderer.setSeriesShapesVisible(1, true);
   
     //设置曲线显示各数据点的值
//     XYItemRenderer xyitem = plot.getRenderer();  
//     xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
//     xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
//     xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 140));
//     xyitem.setBaseItemLabelsVisible(false);
//     plot.setRenderer(xyitem);//将修改后的属性值保存到图中
    
  
   /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
     chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
    
     //设置X轴坐标上的文字
  domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
  //设置X轴的标题文字
  domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
  //设置Y轴坐标上的文字
  rAxisL.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
  //设置Y轴的标题文字
  rAxisL.setLabelFont(new Font("黑体", Font.PLAIN, 12));     
  //设置Y轴坐标上的文字
  rAxisR.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
  //设置Y轴的标题文字
  rAxisR.setLabelFont(new Font("黑体", Font.PLAIN, 12));     
  //底部汉字乱码的问题 
  chart.getLegend().setItemFont(new Font("宋体",Font.PLAIN,12));

  
   //设置子标题
   String subtitletext=stockName+" "+"英文拼音("+stockId+")";
   TextTitle subtitle = new TextTitle(subtitletext, new Font("隶书", Font.ITALIC, 15));
   chart.addSubtitle(subtitle);
  
   //设置主标题
//   String title=stockName+" "+"英文拼音("+stockId+")";
   String title="2010年7月——2011年11月成长指标";
   String filename="HealthLine_"+stockName;
   chart.setTitle(new TextTitle(title, new Font("黑体", Font.BOLD, 16)));
   chart.setAntiAlias(true);//字体模糊边界
  
   FileOutputStream fos_jpg = null; 
   /* 导出分时图的jpg格式的图片*/
   try
   {
    fos_jpg = new FileOutputStream("D:"+filename+".jpg");
    ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 1024, 480, null);
    fos_jpg.close();
   }
   catch (Exception e)
   {
   }
  }
}


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值