使用JFreeChar的一点心得

本文介绍了一种使用Java和JFreeChart库生成时序图的方法。该方法通过处理合成数据集来创建XYSeries实例,并将其组合成XYSeriesCollection。随后定义了日期轴和数值轴的格式,并设置了渲染器以确定图表的视觉效果。最后,文章详细说明了如何将图表保存为图片文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

/** *//**
 * 生成时序图
 
*/

public String generateXYChar(JFreeCharPOJO argJfreeCharPojo,
        HttpSession argSession, PrintWriter argPrintWriter) ...
{
    
/** *//**
     * 保存图片的路径
     
*/

    String fileName 
= null;
    SynthesisDataJFreeCharPOJO syData 
= (SynthesisDataJFreeCharPOJO) argJfreeCharPojo;  
    List synthesisData 
= syData.getData();  //生成图片所需的数据
    
    
/** *//**
     * 创建一组XYSeries数据
     
*/

    Map seriesMap 
= new HashMap();
    
for(Iterator ite = synthesisData.iterator(); ite.hasNext();) ...{
        SynthesisJFreeCharPOJO synVlaue 
= (SynthesisJFreeCharPOJO) ite.next();
        String type_name 
= synVlaue.getType_name();
        
if(seriesMap.containsKey(type_name)) ...{
            XYSeries xySeries 
= (XYSeries) seriesMap.get(type_name);
            xySeries.add(synVlaue.getTime().getTime(), synVlaue.getBalance());
        }
 else ...{
            XYSeries xySeries 
= new XYSeries(type_name);
            seriesMap.put(type_name, xySeries);
            xySeries.add(synVlaue.getTime().getTime(), synVlaue.getBalance());
        }

    }

    
    
/** *//**
     * 将一组XYSeries添加到XYSeriesCollection集中
     
*/

    XYSeriesCollection xyCollection 
= new XYSeriesCollection();
    
for(Iterator ite = seriesMap.keySet().iterator(); ite.hasNext();) ...{
        xyCollection.addSeries((XYSeries) seriesMap.get(ite.next()));
    }

    
    
/** *//**
     * 设置数据图片的格式,以及URL
     
*/

    SimpleDateFormat sdf 
= new SimpleDateFormat("yyyy-MM-dd",Locale.CHINA);
    StandardXYToolTipGenerator ttg 
= new StandardXYToolTipGenerator(
            StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                      sdf, NumberFormat.getInstance());
    
    
/** *//**
     * 创建图片对象
     
*/

    DateAxis timeAxis 
= new DateAxis("时间增长幅度");
    timeAxis.setDateFormatOverride(
new java.text.SimpleDateFormat("YYYY-MM-DD"));      //设置日期显示的格式
    NumberAxis valueAxis = new NumberAxis("数据增长幅度");
    valueAxis.setNumberFormatOverride(
new DecimalFormat("0.00"));                                   //设置数据显示的格式
    valueAxis.setAutoRangeIncludesZero(false);
    StandardXYItemRenderer renderer 
= new StandardXYItemRenderer(
                     org.jfree.chart.renderer.xy.StandardXYItemRenderer.LINES 
+ StandardXYItemRenderer.SHAPES,
                                  ttg, 
null);             //null,表示图片上面不需要URL地址
                     renderer.setShapesFilled(true);
     XYPlot plot 
= new XYPlot(xyCollection, timeAxis, valueAxis, renderer);   //创建一个曲线图形的对象
         xyCollection //所有数据
         timeAxis      //日期显示的格式
         valueAxis   //数据显示的格式
         renderer     //设置图片上一些点的显示样式
    JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);  
                                                                                                          
//true,  为true,将显示每种数据在图片上的颜色
    chart.setBackgroundPaint(java.awt.Color.white);
    
    
/** *//**
     * 将图片写到文件中
     
*/

    ChartRenderingInfo info 
= new ChartRenderingInfo(new StandardEntityCollection());
    
try ...{
        fileName 
= ServletUtilities.saveChartAsPNG(chart, 600400, info, argSession);
                            chart   
//
        ChartUtilities.writeImageMap(argPrintWriter, fileName, info, false);
        argPrintWriter.flush();
    }
 catch (IOException e) ...{
        e.printStackTrace();
    }

    
    
return fileName;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值