当前位置: 代码迷 >> Eclipse >> JfreeChart制作饼状图的有关问题
  详细解决方案

JfreeChart制作饼状图的有关问题

热度:19   发布时间:2016-04-23 12:50:11.0
JfreeChart制作饼状图的问题
饼状图我已经做完了,利用ChartFactory.createPieChart3D生成了3d的饼图,现在有问题就是,饼图上的各部分信息都显示正确,每一饼快的显示信息也没有问题,可是就是我把图片显示在页面之中后,每一小块到解释信息之间有根线相连,现在这部分线太长了,使得我的图片的每块的显示信息的文字总是或多或少的少点,
这怎么解决呢?无论我怎么调整图片的width,都显示不完全.这是什么属性决定定的呢?

另附上我的代码(同网上教程并无大区别):
Java code
/**     * 饼状图     *      * @param dataset     *            数据集     * @param chartTitle     *            图标题     * @param charName     *            生成图的名字     * @param pieKeys     *            分饼的名字集     * @param paramName     *            图片传递名     * @return     */    public void createValidityComparePimChar(Map<Integer, Integer> values,            String chartTitle, String charName, String[] pieKeys,            String paramName) {        PieDataset dataset = getPieDataSet(pieKeys, values);        // 利用工厂类来创建3D饼图        JFreeChart chart = ChartFactory.createPieChart3D(chartTitle, dataset,                true, true, false);        // 使下说明标签字体清晰,去锯齿类似于        // chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);的效果        chart.setTextAntiAlias(false);        // 图片背景色        chart.setBackgroundPaint(Color.white);        // 设置图标题的字体重新设置title(否组有些版本Title会出现乱码)        chart.getTitle().setFont((new Font("隶书", Font.CENTER_BASELINE, 20)));        // 设置图例(Legend)上的文字(//底部的字体)        chart.getLegend().setItemFont(new Font("隶书", Font.CENTER_BASELINE, 15));        PiePlot3D plot = (PiePlot3D) chart.getPlot();        // 图片中显示百分比:默认方式        // 指定饼图轮廓线的颜色        plot.setBaseSectionOutlinePaint(Color.BLACK);        plot.setBaseSectionPaint(Color.BLACK);        // 设置无数据时的信息        plot.setNoDataMessage("无对应的数据,请重新查询。");        // 设置无数据时的信息显示颜色        plot.setNoDataMessagePaint(Color.red);        // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位        plot.setLabelGenerator(new StandardPieSectionLabelGenerator(                "{0}={1}({2})", NumberFormat.getNumberInstance(),                new DecimalFormat("0.00%")));        // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例        plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(            "{0}:共{1}条,占总体的{2}"));        plot.setLabelFont(new Font("宋体", Font.TRUETYPE_FONT, 10));        // 指定图片的透明度(0.0-1.0)        plot.setForegroundAlpha(1.0f);        // 指定显示的饼图上圆形(false)还椭圆形(true)        plot.setCircular(false, true);        // 设置第一个 饼块section 的开始位置,默认是12点钟方向        plot.setStartAngle(90);        // 设置分饼颜色(不设置它会自己设置)        // plot.setSectionPaint(pieKeys[0], new Color(244, 194, 144));        // plot.setSectionPaint(pieKeys[1], new Color(144, 233, 144));        try {            HttpServletRequest request = ParameterWrapper.getWrapper()                    .getRequest();            HttpSession session = request.getSession();            String filename = ServletUtilities.saveChartAsPNG(chart, 800, 450,                    null, session);            String graphURL = request.getContextPath()                    + "/servlet/DisplayChart?filename=" + filename;            // 前台JSP根据el表达式读取图片            setParameter(paramName, graphURL);        } catch (Exception e) {            e.printStackTrace();        } finally {            try {            } catch (Exception e) {                e.printStackTrace();            }        }    }


------解决方案--------------------
下面的解释怎样才能让它每一条一换行呢?求解。。。