`
Java_大猫
  • 浏览: 173429 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

chart图之jfreechart

    博客分类:
  • J2SE
阅读更多
前不久了解了下有关chart图方面的,首先对于JAVA的来说,比较好的应该是jfreechart了。至于具体介绍,我就不对此做介绍了。这里我做了两个小的例子。分别是柱状图 具体就作为参考吧。网上关于jfreechart的资料很多。
代码如下:


	       HttpSession session = request.getSession();
		response.setContentType("image/jpeg"); 
		request.setCharacterEncoding("UTF-8");
		CreateDate creat = new CreateDate();
		CategoryDataset dateSet= creat.getDataSet();
		JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计", null, null, dateSet, PlotOrientation.VERTICAL,true,true,true);

		CategoryPlot plot = chart.getCategoryPlot();
		BarRenderer3D renderer = new BarRenderer3D();
		//设置图表的纵轴和横轴org.jfree.chart.axis.CategoryAxis
		CategoryAxis domainAxis  = plot.getDomainAxis();
		domainAxis.setLowerMargin(0.1);//设置距离图片左端距离此时为10%
        domainAxis.setUpperMargin(0.1);//设置距离图片右端距离此时为百分之10
        domainAxis.setCategoryLabelPositionOffset(10);//图表横轴与标签的距离(10像素)
        domainAxis.setCategoryMargin(0.2);//横轴标签之间的距离20%
        //设定柱子的属性 
        ValueAxis rangeAxis = plot.getRangeAxis();
        rangeAxis.setUpperMargin(0.1);//设置最高的一个柱与图片顶端的距离(最高柱的10%)
        renderer.setBaseOutlinePaint(Color.red);
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//显示鼠标提示
       
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
         renderer.setBaseItemLabelsVisible(true);
        
        
        
        
        
        
        
        renderer.setSeriesPaint(0, new Color(0, 255, 255));//计划柱子的颜色为青色
        renderer.setSeriesOutlinePaint(0,Color.green);//边框为黑色
        renderer.setSeriesPaint(1, new Color(0, 255, 0));//实报柱子的颜色为绿色
        renderer.setSeriesOutlinePaint(1,Color.red);//边框为红色
        renderer.setItemMargin(0.1);//组内柱子间隔为组宽的10%
      //显示每个柱的数值,并修改该数值的字体属性
      
        domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
        /*------设置X轴的标题文字------------*/
        domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,15));        
        /*------设置Y轴坐标上的文字-----------*/
        rangeAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
        /*------设置Y轴的标题文字------------*/
        rangeAxis.setLabelFont(new Font("黑体",Font.PLAIN,15)); 
        
        
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setItemLabelFont(new Font("黑体",Font.BOLD,12));//12号黑体加粗
        renderer.setItemLabelPaint(Color.black);//字体为黑色
        renderer.setItemLabelsVisible(true);
         
        
        
        plot.setRenderer(renderer);//使用我们设计的效果
        //设置纵横坐标的显示位置
        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);//学校显示在下端(柱子竖直)或左侧(柱子水平)
        plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); //人数显示在下端(柱子水平)或左侧(柱子竖直)
       
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("黑体", Font.PLAIN, 20));  
        chart.setTitle(textTitle);
        chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));   
        //设置热点提示
      
        
        
        Shape shape = new Rectangle(20, 10);
        ChartEntity entity = new ChartEntity(shape);
        StandardEntityCollection coll = new StandardEntityCollection();
        coll.add(entity);
        int width = 500;
        int height = 300;
        
        
        
        ChartRenderingInfo info = new ChartRenderingInfo(coll);
        PrintWriter pw = response.getWriter();
      //写入到输出流生成图像文件,同时把图片的具体信息放入ChartRenderingInfo的一个实例为以后生成Map提供信息
//        ChartUtilities.saveChartAsPNG(pw, chart, width, height, info);
   
        
        String filename =    ServletUtilities.saveChartAsPNG(chart, width , height, info, session); 
        ChartUtilities.writeImageMap(pw, filename, info, false);
        
        
        String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
      
        String strimg= ChartUtilities.getImageMap("map0", info);
        

        request.setAttribute("strimg", strimg);
        System.out.println(request.getAttribute("strimg"));
        request.setAttribute("graphURL", graphURL);

        RequestDispatcher dispatcher = request.getRequestDispatcher("/mobile2.jsp");
        dispatcher .forward(request, response); 

当然这里你需要有个xml配置 也就是上面设计的 graphURL  部分
配置如下
  <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/servlet/DisplayChart</url-pattern>
  </servlet-mapping>

JSP页面需
  <%=request.getAttribute("strimg") %>// 页面必须要有这个才能实现当//你鼠标放到图上显示信息,也就是所谓的热点提示
   	<p><img src="${graphURL }" width="500" height="300" border="0" usemap="#map0"> </p> 
分享到:
评论

相关推荐

    java使用JFreeChart制作柱形图

    Java 使用 JFreeChart 创建柱形图是一种常见的数据可视化方法,尤其在数据分析和Web应用程序中。JFreeChart 是一个强大的开源库,它提供了多种图表类型,包括柱形图、饼图、线图等,使得开发者能够方便地将数据转化...

    JFreeChart画雷达图

    JFreeChart chart = new JFreeChart("雷达图示例", JFreeChart.DEFAULT_TITLE_FONT, plot, true); ``` 最后,你可以将`JFreeChart`渲染到一个`ChartPanel`,或者将其保存为图像文件: ```java ChartPanel ...

    JfreeChart-雷达图与导出

    3. **添加到Chart**:然后,将`RadarPlot`对象添加到`JFreeChart`实例中,通常通过`JFreeChart.createRadarChart()`方法实现。 4. **自定义图表**:JFreeChart提供了丰富的API用于定制图表,例如调整字体、颜色、...

    JFreeChart 折线、柱状组合图

    public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 &lt;!--begin 维优特例 --&gt; ...

    jfreechart雷达图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括柱状图、饼图、线图、散点图以及我们今天关注的雷达图(也称为蜘蛛网图)。在Java应用程序中,JFreeChart提供了丰富的API,使得开发者能够...

    jfreechart and open flash chart整理

    《JFreeChart与Open Flash Chart详解》 在数据可视化领域,JFreeChart和Open Flash Chart是两个备受关注的图表库,它们为Java开发者提供了强大的图形绘制能力,使得复杂的数据能够以直观、美观的方式呈现出来。本文...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...

    JFreeChart混合图表演示

    JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...

    JfreeChart包下载

    1. **多样的图表类型**:JFreeChart支持多种图表类型,如折线图(Line Chart)、柱状图(Bar Chart)、饼图(Pie Chart)、散点图(Scatter Plot)以及面积图(Area Chart)等,满足不同场景的数据可视化需求。...

    Jfreechart

    JFreeChart 是一个流行的 Java 库,用于创建各种类型的图表,包括饼图、折线图、柱状图等。在使用 JFreeChart 进行数据可视化时,可能会遇到乱码的问题,这通常与字体设置不当有关。本文将详细分析 Jfreechart 乱码...

    jfreechart生成图片及导出pdf 、excel

    JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...

    JFreeChart生成图片并显示

    《JFreeChart生成图片并显示》 在Java开发中,我们常常需要生成各种图表来直观地展示数据,比如折线图、柱状图、饼图等。JFreeChart是一个强大的开源Java库,它提供了丰富的图表生成功能,可以满足开发者在各种应用...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    ChartFrame frame = new ChartFrame("JFreeChart 柱状图", chart); frame.pack(); frame.setVisible(true); ``` 其他类型的图表(如饼图、时序图和折线图)的创建方式类似,只需替换`createBarChart()`为相应...

    JFreeChart详解

    它支持多种图形展示方式,包括饼图、折线图、柱状图(水平与垂直)、甘特图、XY散点图、时间序列图、高低开收盘图、蜡烛图、组合图、帕累托图、气泡图、风向图、仪表盘图等。JFreeChart官方网站提供了丰富的示例,...

    jfreechart图形

    JFreeChart的强大之处在于其高度的定制化。开发者可以自由调整图表的颜色、字体、边框、网格线,甚至可以添加自定义的绘图元素,如箭头、形状等。此外,还可以通过调整光照效果和3D渲染,提升图表的视觉吸引力。 7...

    jfreechart根据24小时数据画折线图

    ### jfreechart根据24小时数据画折线图 #### 一、jfreechart简介 jfreechart是一款基于Java的开源图表绘制库,它能够帮助开发者轻松地在应用程序中生成各种图表,包括折线图、饼图、柱状图等。它的主要优势在于...

    jfreechart绘制折线图(平面和3D)

    JFreeChart chart = new JFreeChart("平面折线图", JFreeChart.DEFAULT_TITLE_FONT, plot, true); ``` 4. **绘制图表**: 最后,使用`ChartFactory`或自定义的`ChartPanel`将图表显示出来。 ```java ChartPanel ...

    JFreeChart

    **JFreeChart** 是一个广泛使用的Java库,用于创建高质量的图表,包括折线图、柱状图、饼图、散点图等。它在Java应用程序、Web应用、报告和移动应用中都有广泛应用。JFreeChart支持多种图表类型,允许自定义颜色、...

Global site tag (gtag.js) - Google Analytics