首页 > 其他分享 >jfreechar 柱图

jfreechar 柱图

时间:2023-09-21 14:02:13浏览次数:30  
标签:600 width height jfreechar usemap 柱图

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.awt.Color,
                org.jfree.chart.ChartFactory,
                org.jfree.chart.JFreeChart,
                org.jfree.chart.plot.PlotOrientation,
                org.jfree.chart.servlet.ServletUtilities,
                org.jfree.data.category.CategoryDataset,
                org.jfree.data.general.*,
                org.jfree.chart.plot.CategoryPlot,
                org.jfree.chart.axis.CategoryAxis,
                org.jfree.chart.axis.ValueAxis,
                org.jfree.chart.renderer.category.BarRenderer3D,
                org.jfree.chart.urls.StandardCategoryURLGenerator,
                org.jfree.chart.*,
                org.jfree.chart.entity.*,
                org.jfree.chart.labels.*,
                org.jfree.chart.axis.CategoryLabelPositions,
                java.awt.Font,
                java.awt.GradientPaint,
                org.jfree.ui.TextAnchor,
                org.jfree.chart.axis.NumberAxis,
                org.jfree.chart.axis.NumberTickUnit                
                "%>
<%
java.io.PrintWriter pw=new java.io.PrintWriter(out);
double[][] data = new double[][] {{500}, {200}, {100}, {400}, {600}, {300}};
String[] rowKeys = {"苹果", "梨子", "葡萄", "桔子", "西瓜", "香蕉"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
        rowKeys,
        columnKeys,
        data);JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",
                  "水果", //横坐标名称
                  "销量", //纵坐标名称
                  dataset,//数据集合
                  PlotOrientation.VERTICAL,//图形位置,水平还是垂直
                  true,
                  false,
                  false);       chart.setBackgroundPaint(Color.WHITE);   
       //设定背景色为白色
       
       CategoryPlot categoryPlot = chart.getCategoryPlot(); 
       //获得 plot:3dBar为CategoryPlot
       
       categoryPlot.setBackgroundPaint(Color.lightGray); 
       //设定图表数据显示部分背景色
       
       categoryPlot.setDomainGridlinePaint(Color.white); 
       //横坐标网格线白色
       categoryPlot.setDomainGridlinesVisible(true); 
       //设置网格线可见
       
       categoryPlot.setRangeGridlinePaint(Color.white); 
       //纵坐标网格线白色
     
       //获取横坐标
       CategoryAxis domainAxis = categoryPlot.getDomainAxis();
       
       //设置 横坐标 垂直显示
       //domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));
       
       //获取纵坐标
       NumberAxis numberaxis = (NumberAxis)categoryPlot.getRangeAxis(); 
       //将纵坐标间距设置为50 
       numberaxis.setTickUnit(new NumberTickUnit(50));
       //设置横坐标的标题字体和大小,此处是“宋体13号”
       domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,13));
       
       //设置距离图片左端距离,参数为图片的百分比
       domainAxis.setLowerMargin(0.05);
       
       //设置距离图片右端距离
       domainAxis.setUpperMargin(0.05);
           
       //设置横坐标的坐标值的字体
       domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,12));
       //使横坐标设置生效
       categoryPlot.setDomainAxis(domainAxis); 
            
       ValueAxis rangeAxis = categoryPlot.getRangeAxis();
       //设置最高的一个柱与图片顶端的距离
       rangeAxis.setUpperMargin(0.05);
       
       //设置最低的一个柱与图片底端的距离
       rangeAxis.setLowerMargin(0.05);
       categoryPlot.setRangeAxis(rangeAxis); 
       
       //设置竖坐标标签的旋转角度
       rangeAxis.setLabelAngle(0.05);
              //重要的类,负责生成各种效果
       BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();
              //设置 Wall 的颜色
       renderer.setWallPaint(Color.PINK);
       
       //设置每个柱的颜色     
       GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,
                0.0F, 0.0F, new Color(0, 0, 64)); //设定特定颜色
       GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green,
           0.0F, 0.0F, new Color(0, 64, 0));

       renderer.setSeriesPaint(0, gradientpaint);
       renderer.setSeriesPaint(1, gradientpaint1);
       
       //设置柱的 Outline 颜色
       renderer.setSeriesOutlinePaint(0, Color.BLACK);
       renderer.setSeriesOutlinePaint(1, Color.BLACK);
       //设置每个category所包含的平行柱的之间距离
       renderer.setItemMargin(0.1);
    
       //显示每个柱的数值,并修改该数值的字体属性
       renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());        //以下设置,将按照指定格式,制定内容显示每个柱的数值。可以显示柱名称,所占百分比
       //renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",new DecimalFormat("0.0%")));           //设置柱子上数值的字体
       renderer.setItemLabelFont(new Font("宋体",Font.PLAIN,13)); 
       renderer.setItemLabelsVisible(true);
     
       //设置柱子上数据的颜色
       renderer.setItemLabelPaint(Color.RED);
       
       //设置bar的最小宽度,以保证能显示数值
       renderer.setMinimumBarLength(0.02);
       
       //最大宽度
       //renderer.setMaximumBarWidth(0.07);
       
       //设置柱子上比例数值的显示,如果按照默认方式显示,数值为方向正常显示
       //设置柱子上显示的数据旋转90度,最后一个参数为旋转的角度值/3.14
         ItemLabelPosition itemLabelPosition= new ItemLabelPosition(
         ItemLabelAnchor.INSIDE12,TextAnchor.CENTER_RIGHT,
         TextAnchor.CENTER_RIGHT,-1.57D);
       
       //下面的设置是为了解决,当柱子的比例过小,而导致表示该柱子比例的数值无法显示的问题
       //设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
         ItemLabelPosition itemLabelPositionFallback=new ItemLabelPosition(
         ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT,
         TextAnchor.HALF_ASCENT_LEFT,-1.57D);
       
       //设置正常显示的柱子label的position
       renderer.setPositiveItemLabelPosition(itemLabelPosition);
       renderer.setNegativeItemLabelPosition(itemLabelPosition);
       
       //设置不能正常显示的柱子label的position
       renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
       renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
       
       categoryPlot.setRenderer(renderer);
       //设置柱子的透明度
       categoryPlot.setForegroundAlpha(0.8f);
                //为柱图设置“数据挖陷”
         //第一个参数是跳转的连接地址
         renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator(
        "detail.jsp", "fruit", ""));        //使设置生效
         renderer.setBaseItemLabelsVisible(true);
        //设置柱的透明度
         categoryPlot.setForegroundAlpha(0.5f);
        //设置地区、销量的显示位置
         //plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
         ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());         //生成图形的名称
         //可以改变ServletUtilities源代码,设置图形统一前缀名称和默认存放路径
         //注意:图形的大小往往都是通过配置文件设置的,不可能所有图形一个大小
         String filename = ServletUtilities.saveChartAsPNG(chart, 800, 600, info, session);
         //调用DisplayChart(配置在webxml中),生成图形
         String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
         //将MAP信息,写入图形
         ChartUtilities.writeImageMap(pw, filename, info, true);
         pw.flush();
%><table width="100%">
    <tr>
        <td align="center">
            <!-- 生成图形 -->
            <img src="<%= graphURL %>" width=800 height=600 border=0 usemap="#<%= filename %>" alt="">
        </td>
    </tr>
</table>

标签:600,width,height,jfreechar,usemap,柱图
From: https://blog.51cto.com/u_16255870/7553486

相关文章

  • jfreechart常用设置demo(不断更新)
       今天要用到jfreechart的时候到网上看自己的demo才发现,我原来的demo不知什么时候不小心删掉了!我郁闷!不过还好,在我的备份盘中又找到了一份备份资料。现在再重新更新上来!    背景图片为2006110821482378503.jpg放入d盘。72729572一、柱图demoimportjava.awt.Color;impo......
  • jfreechart中文无法显示的问题
    jfreechart是一个开源免费的Java图表工具。一个简单的入门例子:packageplot;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartFrame;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.data.category.Def......
  • JFreeChart教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,applets,servlets以及JSP等使用所设计。JFreeChart可生成饼图(piecharts)、柱状图(barcharts)、散点图(scatterplots)、时序图(timeseries)、甘特图(Ganttcharts)等等多种图表,并......
  • 使用 JFreeChart来创建基于web的图表
    级别:初级刘冬 软件工程师,珠海市创我科技发展有限公司2003年9月08日WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别,虽然对于数据获取......
  • jfreechart 1.0.19如何设置两个数据标签,一个在折线下方,一个在折线上方
    在JFreeChart1.0.19中,您可以使用CategoryPlot类的setItemLabelVisible(intseries,booleanvisible)方法来设置特定系列的数据标签是否可见。要设置两个数据标签,一个在折线下方,一个在折线上方,您可以按照以下步骤进行操作:1.获取CategoryPlot对象。2.使用CategoryPlo......
  • 用JFreeChart增强JSP报表的用户体验(2)
     三. 饼图在WebRoot目录下建立名为pie的子目录,用来存放本教程中饼图的实例jsp页面。下面让我们来看一个简单的三维饼图。首先在pie目录下建立一个名为sample1.jsp的页面。在JFreeChart中,与饼图绘制密切相关的类如下:1) PiePlot饼图绘制类,可以用来设置饼图的相关属性。例......
  • JFreeChart构建柱状图
    JFreeChart构建柱状图前言Java开发中,可以采用许多库和框架来实现图表统计功能。以下是一些常见的Java图表统计库和框架:JFreeChart:JFreeChart是一个流行的Java图表库,可用于生成各种类型的图表,包括线图、柱状图、饼图等。Chart.js:Chart.js是一个基于HTML5Canvas的JavaScript图......
  • 柱图参考
      如上所示的柱图,良品入库是渐变的颜色,划过的阴影也是渐变,参数没啥可说的,仅仅参考就行。options(){letths=thisreturn{backgroundColor:'',......
  • 数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、
    系列文章目录​​燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)​​​​漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例​​​​漏......
  • jfreechart火速应用
    JAVA中的图表方面,Jfreechart是十分不错的老大了,网上有个具体的英文手册类库下载可以参考的,下面以一个投票的例子来个火速应用,简单介绍一下首先,可以将投票结果以servlet的形......