jFreeChart折线图

ava代码   收藏代码
  1.    
  2.   
  3.        String sql = "select count(id) num, DATE_FORMAT(calltime, '%Y年%m月') ym,modulename mn from  tongji t group by DATE_FORMAT(calltime, '%Y年%m月'),mn";  
  4.         List list = getList(sql);  
  5.         // 绘图数据集  
  6.         DefaultCategoryDataset dataSet = new DefaultCategoryDataset();  
  7.         for (Object obj : list) {  
  8.             Map<String, Object> map = (Map) obj;  
  9.             dataSet.setValue((Long) map.get("num"), (String) map.get("mn"), map.get("ym").toString());  
  10.         }  
  11.         //如果把createLineChart改为createLineChart3D就变为了3D效果的折线图       
  12.         JFreeChart  chart = ChartFactory.createLineChart("图表标题""X轴标题""Y轴标题", dataSet,  
  13.                 PlotOrientation.VERTICAL, // 绘制方向  
  14.                 true// 显示图例  
  15.                 true// 采用标准生成器  
  16.                 false // 是否生成超链接  
  17.                 );  
  18.         chart.getTitle().setFont(titleFont); // 设置标题字体  
  19.         chart.getLegend().setItemFont(font);// 设置图例类别字体  
  20.         chart.setBackgroundPaint(bgColor);// 设置背景色   
  21.         //获取绘图区对象  
  22.         CategoryPlot plot = chart.getCategoryPlot();  
  23.         plot.setBackgroundPaint(Color.LIGHT_GRAY); // 设置绘图区背景色  
  24.         plot.setRangeGridlinePaint(Color.WHITE); // 设置水平方向背景线颜色  
  25.         plot.setRangeGridlinesVisible(true);// 设置是否显示水平方向背景线,默认值为true  
  26.         plot.setDomainGridlinePaint(Color.WHITE); // 设置垂直方向背景线颜色  
  27.         plot.setDomainGridlinesVisible(true); // 设置是否显示垂直方向背景线,默认值为false  
  28.           
  29.           
  30.         CategoryAxis domainAxis = plot.getDomainAxis();     
  31.         domainAxis.setLabelFont(font); // 设置横轴字体  
  32.         domainAxis.setTickLabelFont(font);// 设置坐标轴标尺值字体  
  33.         domainAxis.setLowerMargin(0.01);// 左边距 边框距离  
  34.         domainAxis.setUpperMargin(0.06);// 右边距 边框距离,防止最后边的一个数据靠近了坐标轴。  
  35.         domainAxis.setMaximumCategoryLabelLines(2);  
  36.           
  37.         ValueAxis rangeAxis = plot.getRangeAxis();  
  38.         rangeAxis.setLabelFont(font);   
  39.         rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//Y轴显示整数  
  40.         rangeAxis.setAutoRangeMinimumSize(1);   //最小跨度  
  41.         rangeAxis.setUpperMargin(0.18);//上边距,防止最大的一个数据靠近了坐标轴。     
  42.         rangeAxis.setLowerBound(0);   //最小值显示0  
  43.         rangeAxis.setAutoRange(false);   //不自动分配Y轴数据  
  44.         rangeAxis.setTickMarkStroke(new BasicStroke(1.6f));     // 设置坐标标记大小  
  45.         rangeAxis.setTickMarkPaint(Color.BLACK);     // 设置坐标标记颜色  
  46.   
  47.           
  48.           
  49.      // 获取折线对象  
  50.         LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();  
  51.         BasicStroke realLine = new BasicStroke(1.8f); // 设置实线  
  52.         // 设置虚线  
  53.         float dashes[] = { 5.0f };   
  54.         BasicStroke brokenLine = new BasicStroke(2.2f, // 线条粗细  
  55.                 BasicStroke.CAP_ROUND, // 端点风格  
  56.                 BasicStroke.JOIN_ROUND, // 折点风格  
  57.                 8f, dashes, 0.6f);   
  58.         for (int i = 0; i < dataSet.getRowCount(); i++) {  
  59.             if (i % 2 == 0)  
  60.                 renderer.setSeriesStroke(i, realLine); // 利用实线绘制  
  61.             else  
  62.                 renderer.setSeriesStroke(i, brokenLine); // 利用虚线绘制  
  63.         }  
  64.           
  65.         plot.setNoDataMessage("无对应的数据,请重新查询。");  
  66.         plot.setNoDataMessageFont(titleFont);//字体的大小  
  67.         plot.setNoDataMessagePaint(Color.RED);//字体颜色  

 平面折线图效果


 

 

3D折线图效果:

jFreeChart折线图_第1张图片

你可能感兴趣的:(jFreeChart折线图)