用这段代码可以生成这样的图片-jfreechart

 

package com.shihua.bgdata.chart_sp.imp;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.RenderingHints;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.ListIterator;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.AbstractDataset;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.SortOrder;
import com.shihua.bgdata.chart.IJFreeChartProvider;
import com.shihua.bgdata.chart.JFreeChartUtil;
import com.shihua.bgdata.dto.comp.FinanceIndexDTO;
import com.shihua.bgdata.server.picture.handler.PictureHandle;
public class FinanceIndexChartProImp implements IJFreeChartProvider,Serializable{
private AbstractDataset dataSet;
public JFreeChartUtil createChart() {
  JFreeChartUtil util = new JFreeChartUtil();
  util.setWidth(450);
  util.setHeight(243);
  JFreeChart jfreechart = ChartFactory.createLineChart("", "", "", (CategoryDataset) dataSet, PlotOrientation.VERTICAL,true, true, false);
    jfreechart.getRenderingHints().put(
        RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
  // 绘制渐进色
  GradientPaint gp = new GradientPaint(0, 0,
    PictureHandle.DEFAULT_COLORS[0], 0, util.getHeight(),
    PictureHandle.DEFAULT_COLORS[1]);
  jfreechart.setBackgroundPaint(gp);
  jfreechart.getPlot().setBackgroundPaint(gp);
  CategoryPlot cp = jfreechart.getCategoryPlot();
  cp.setColumnRenderingOrder(SortOrder.ASCENDING);
  CategoryAxis categoryaxis = cp.getDomainAxis();
  categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
  categoryaxis.setAxisLinePaint(Color.WHITE);
  categoryaxis.setLabelPaint(Color.WHITE);
  categoryaxis.setTickMarkPaint(Color.WHITE);
  categoryaxis.setTickLabelPaint(Color.WHITE);
  
  ValueAxis rAxis = cp.getRangeAxis();
  rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
  rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
  rAxis.setAxisLinePaint(Color.WHITE);
  rAxis.setLabelPaint(Color.WHITE);
  rAxis.setTickMarkPaint(Color.WHITE);
  rAxis.setTickLabelPaint(Color.WHITE);
  CategoryItemRenderer render = cp.getRenderer();
  render.setSeriesPaint(0, PictureHandle.KIND_COLORS[3]);
  render.setSeriesPaint(1, PictureHandle.KIND_COLORS[1]);
  render.setSeriesPaint(2, PictureHandle.KIND_COLORS[4]);
  render.setSeriesPaint(3, PictureHandle.KIND_COLORS[2]);
  LegendTitle legend = jfreechart.getLegend();
  legend.setItemPaint(Color.WHITE);
  legend.setHorizontalAlignment(HorizontalAlignment.LEFT);
  legend.setPosition(RectangleEdge.TOP);
  legend.setBackgroundPaint(gp);
  legend.setBorder(BlockBorder.NONE);
  util.setFreeChart(jfreechart);

  return util;
}
public void setDataSet(List list, int type) {
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  if (list != null && !list.isEmpty()) {
   for (ListIterator lt = list.listIterator(); lt.hasNext();) {
    FinanceIndexDTO dto = (FinanceIndexDTO) lt.next();
    switch (type) {
     case 1: dataset.addValue(dto.getEquitycapitalrate(), "净资产收益率", dto .getEnddate());break;
     case 2: dataset.addValue(BigDecimal.ONE.divide(BigDecimal.ONE.subtract((dto.getDebtcapitalrate().divide(new BigDecimal("100")))), 2,BigDecimal.ROUND_HALF_UP), "所有者权益乘数", dto.getEnddate()); break;
     case 3: dataset.addValue(dto.getReturnontotalassets(), "资产收益率", dto.getEnddate());break;
     case 4: dataset.addValue(dto.getSaleprofitrate(), "销售净利率", dto.getEnddate());break;
     case 5: dataset.addValue(dto.getTotalassetcyclerate(), "资产周转率", dto.getEnddate());break;
     case 6: dataset.addValue(dto.getTotaldata(), "沃尔评价法得分", dto.getEnddate());break;
     case 7: dataset.addValue(dto.getTotaldata(), "综合评价法得分", dto.getEnddate());break;
    }
   }
  }
  this.dataSet = dataset;
}
public AbstractDataset getDataSet() {
  return dataSet;
}
public void setDataSet(AbstractDataset dataSet) {
  this.dataSet = dataSet;
}
public JFreeChartUtil createChart(int type) {
  return null;
}
}

猜你喜欢

转载自blog.csdn.net/qq_16116549/article/details/88536092