jfreechart实现曲线图,怎么显示曲线上数据点的数据值?

解决方案 »

  1.   

    to:imA(男的不会,会的不男) 
    这两个都行,怎么实现啊?
      

  2.   

    如果是当鼠标移动到的时候再显示,只要设置一下提示就可以了,大部分默认都是带的,像下面代码:import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Dimension;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;public class LineChartDemo1 extends ApplicationFrame
    {
    public LineChartDemo1(final String title)
    {
    super(title);
    final CategoryDataset dataset = createDataset();
    final JFreeChart chart = createChart(dataset);
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new Dimension(500, 270));
    setContentPane(chartPanel);
    }
    public static CategoryDataset createDataset()
    {
    final String series1 = "First";
    final String series2 = "Second";
    final String series3 = "Third";
    final String type1 = "Type 1";
    final String type2 = "Type 2";
    final String type3 = "Type 3";
    final String type4 = "Type 4";
    final String type5 = "Type 5";
    final String type6 = "Type 6";
    final String type7 = "Type 7";
    final String type8 = "Type 8";
    final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    dataset.addValue(1.0, series1, type1);
    dataset.addValue(4.0, series1, type2);
    dataset.addValue(3.0, series1, type3);
    dataset.addValue(5.0, series1, type4);
    dataset.addValue(5.0, series1, type5);
    dataset.addValue(7.0, series1, type6);
    dataset.addValue(7.0, series1, type7);
    dataset.addValue(8.0, series1, type8);
    dataset.addValue(5.0, series2, type1);
    dataset.addValue(7.0, series2, type2);
    dataset.addValue(6.0, series2, type3);
    dataset.addValue(8.0, series2, type4);
    dataset.addValue(4.0, series2, type5);
    dataset.addValue(4.0, series2, type6);
    dataset.addValue(2.0, series2, type7);
    dataset.addValue(1.0, series2, type8);
    dataset.addValue(4.0, series3, type1);
    dataset.addValue(3.0, series3, type2);
    dataset.addValue(2.0, series3, type3);
    dataset.addValue(3.0, series3, type4);
    dataset.addValue(6.0, series3, type5);
    dataset.addValue(3.0, series3, type6);
    dataset.addValue(4.0, series3, type7);
    dataset.addValue(3.0, series3, type8);
    return dataset;
    }
    private JFreeChart createChart(final CategoryDataset dataset)
    {
    final JFreeChart chart = ChartFactory.createLineChart(
    "Line Chart Demo 1", // chart title
    "Type", // domain axis label
    "Value", // range axis label
    dataset, // data
    PlotOrientation.VERTICAL, // orientation
    true, // include legend
    true, // tooltips
    false // urls
    );
    chart.setBackgroundPaint(Color.white);
    final CategoryPlot plot = (CategoryPlot) chart.getPlot();
    plot.setBackgroundPaint(Color.lightGray);
    plot.setRangeGridlinePaint(Color.white);
    final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    rangeAxis.setAutoRangeIncludesZero(true);
    final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot
    .getRenderer();
    renderer.setShapesFilled(false);
    renderer.setUseFillPaint(false);
    renderer.setSeriesStroke(0, new BasicStroke(2.0f,
    BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f,
    new float[] { 10.0f, 6.0f }, 0.0f));
    renderer.setSeriesStroke(1, new BasicStroke(2.0f,
    BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f,
    new float[] { 6.0f, 6.0f }, 0.0f));
    renderer.setSeriesStroke(2, new BasicStroke(2.0f,
    BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f,
    new float[] { 2.0f, 6.0f }, 0.0f));
    return chart;
    }
    public static void main(final String[] args)
    {
    final LineChartDemo1 demo = new LineChartDemo1("Line Chart Demo");
    demo.pack();
    RefineryUtilities.centerFrameOnScreen(demo);
    demo.setVisible(true);
    }
    }
      

  3.   

    那些代码是设置提示的;
    另外我是先把生成.jpg文件,再在页面上显示出来,鼠标移上去不会显示数据啊下面是代码,这个怎么改能实现上面的功能<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
    <%@ page import="org.jfree.chart.*" %>
    <%@ page import="org.jfree.chart.axis.*" %>
    <%@ page import="org.jfree.chart.plot.*" %>
    <%@ page import="org.jfree.data.*" %>
    <%@ page import="org.jfree.data.time.*" %>
    <%@ page import="org.jfree.chart.title.*" %>
    <%@ page import="java.awt.Font" %>
    <%@ page import="java.awt.GradientPaint" %>
    <%@ page import="java.io.File" %>
    <%@ page import="java.awt.Color" %>
    <%@ page import="org.jfree.chart.renderer.xy.XYLineAndShapeRenderer" %>
    <%@ page import="org.jfree.ui.RectangleAnchor" %>
    <%@ page import="org.jfree.ui.RectangleInsets" %>
    <%@ page import="org.jfree.chart.renderer.xy.XYItemRenderer" %>
    <%
    //曲线图标题
    String title = "趋势分析";
    //曲线图X轴提示
    String domain = "月份走势";
    //曲线图Y轴提示
    String range = "应收余额";
    //曲线图自标题
    String subtitleStr = "2003财年分析";//每一个TimeSeries在图上是一条曲线TimeSeries ca = new TimeSeries("单位");
    for (int i = 1999; i < 2005; i++) {
      for (int mon = 0; mon < 12; mon++) {
    //ca.add(new Month(mon + 1, i), new Double(500 + Math.random() * 100));
    //TimeSeriesDataPair是一个时间点的数值体现
        ca.add(new TimeSeriesDataItem(new Day(1, mon + 1, i),new Double(500 + Math.random() * 100)));
      }
    }//时间曲线数据集合
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(ca);
    //时间曲线元素
    JFreeChart chart = ChartFactory.createTimeSeriesChart(title,domain,range,dataset,true,true,false);TextTitle subtitle = new TextTitle(subtitleStr, new Font("黑体", Font.BOLD, 12));
    chart.addSubtitle(subtitle);
    chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
    //pie.setSeriesLabelFont(new Font("黑体", Font.BOLD, 15));
    chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));XYPlot plot = (XYPlot) chart.getPlot();
    plot.setBackgroundPaint(Color.white);//设置网格背景颜色
    plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
    plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
    plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));//设置曲线图与xy轴的距离
    XYItemRenderer xyitem = plot.getRenderer();
    xyitem.setItemLabelsVisible(true);
    String rfname =  "kk.jpeg";
    String fileName = "d:/" + rfname;try {
      ChartUtilities.saveChartAsJPEG(new File(fileName), 1f, chart, 600, 600);
      
    } catch (Exception e) {
      System.out.print("....Cant't Create image File" + e.toString());
    }%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      
      <body>
        This is my JSP page. <br>
        <IMG src="d:/kk.jpeg">
      </body>
    </html>
      

  4.   

    搞JFreeChart确实搞的头昏,又没有帮助文档,只能看源代码
      

  5.   

    各位要怎么实现上面的功能啊?to:imA(男的不会,会的不男)  你那个代码是java生成一个窗口可以显示数据,
    但是我是要在网页上显示图片,怎么实现这个功能,知道吗?
      

  6.   

    http://amozon.javaeye.com/blog/35167 JFreeChart中文API