当前位置: 代码迷 >> J2EE >> 请问一个jfreechart显示折现数据点的有关问题
  详细解决方案

请问一个jfreechart显示折现数据点的有关问题

热度:95   发布时间:2016-04-22 00:50:33.0
请教一个jfreechart显示折现数据点的问题。
我用jfreechart做了一个折线图:可以显示出来了。但是还有bug。我希望能够在折点附件显示坐标值,而不是把鼠标放上去才显示!该怎么做?我找了不少方法,都没有效果,不知道为什么。
我用的图表生成方式和数据集好像有点特殊,大家看看吧。
还有,我的横纵坐标都是整数,我能不能都让它们精确到两位小数啊。谢谢。
以下我的是关键代码:
多谢了。

Java code
String cardId=request.getParameter("cardId");                            //  Create tooltip and URL generators        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);        DecimalFormat s=new DecimalFormat("#0.0#");            StandardXYToolTipGenerator ttg = new StandardXYToolTipGenerator(                            "({1},{2})",                            NumberFormat.getInstance(), NumberFormat.getInstance());        //  Create the chart object        ValueAxis timeAxis = new NumberAxis("纵坐标名称");        NumberAxis valueAxis = new NumberAxis("横坐标名称")        valueAxis.setAutoRangeIncludesZero(true);  // override default                StandardXYItemRenderer renderer = new StandardXYItemRenderer(StandardXYItemRenderer.LINES   +   StandardXYItemRenderer.SHAPES, ttg,   null);        ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE12,TextAnchor.TOP_LEFT,TextAnchor.CENTER_RIGHT,0D);          renderer.setPositiveItemLabelPosition(itemlabelposition);        //renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator("{0}: ({1}, {2})", new DecimalFormat("0.00"),new DecimalFormat("0.00")));        //StandardXYItemLabelGenerator s =    new StandardXYItemLabelGenerator();        //不可用        //renderer.setItemLabelGenerator(new StandardXYItemLabelGenerator());//设置数据点显示         renderer.setItemLabelsVisible(true);        renderer.setShapesFilled(true);                XYPlot plot=null;        try {            plot = new XYPlot(getDataSet(cardId), timeAxis, valueAxis, renderer);        } catch (GeneralException e) {            // TODO 自动生成 catch 块            e.printStackTrace();        }                        //取得该类图形的范围数字轴,指纵坐标        NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();        ///设置纵坐标以标准整形为单位        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());            //设置范围坐标的最小值        //numberaxis.setRange(,rangeMaxAxis);        //将纵坐标间距设置为50         numberaxis.setTickUnit(new NumberTickUnit(100));            numberaxis.setAutoRangeStickyZero(false);        getDomainAndRangeMaxValue();        numberaxis.setRange(minRange,maxRange);        NumberAxis dateaxiss=(NumberAxis)plot.getDomainAxis();        dateaxiss.setStandardTickUnits(NumberAxis.createIntegerTickUnits());            //DecimalFormat t=new DecimalFormat("#0.0#");        //dateaxiss.setNumberFormatOverride(t);        dateaxiss.setTickUnit(new NumberTickUnit(6));            dateaxiss.setRange(0d,maxDomain);                JFreeChart chart = new JFreeChart("图形名称", JFreeChart.DEFAULT_TITLE_FONT, plot, false);        chart.setBackgroundPaint(java.awt.Color.white);                        //renderer.setDrawShapes(true);        renderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] { 10F, 6F }, 0.0F));        renderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] { 6F, 6F }, 0.0F));        renderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] { 2.0F, 6F }, 0.0F));                            plot.setBackgroundPaint(java.awt.Color.white);//设置网格背景色        //plot.setDomainGridlinePaint(Color.green);//设置网格竖线(Domain轴)颜色        plot.setDomainGridlinePaint(java.awt.Color.lightGray);        plot.setRangeGridlinePaint(java.awt.Color.lightGray);        chart.setBackgroundPaint(new Color(0xCC, 0xCC, 0xFF));                    session.setAttribute(ReportConstant.REPORT_DATA,chart);            session.setAttribute(ReportConstant.REPORT_TITLE,"");


------解决方案--------------------