关于jfreechart曲线图鼠标放在曲线上可以显示具体数值的问题,希望能够得到您的指点 这个恐怕难度大了。就算你用jfreechart,在html上也是现实生成的是图片,这样也就没法用java了。如果用javascript,hoho, 难度不是一点点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 图片是实现不了的2 但你可以在生成图片后,使用热区来实现,也就是用Map使用圆形热区或者方形,设置图片的一块区域,然后设置 onmouseover方法。剩下的要显示啥,你自己思考吧 你生成png图片是无法实现这个效果的,必须要用swing,这个例子你可以参考一下package demo;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.io.PrintStream;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import javax.swing.JPanel;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.DateAxis;import org.jfree.chart.axis.DateTickMarkPosition;import org.jfree.chart.labels.StandardXYToolTipGenerator;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYBarRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.time.TimeSeries;import org.jfree.data.time.TimeSeriesCollection;import org.jfree.data.time.Year;import org.jfree.data.xy.IntervalXYDataset;import org.jfree.ui.ApplicationFrame;import org.jfree.ui.RefineryUtilities;public class XYBarChartDemo1 extends ApplicationFrame{ public XYBarChartDemo1(String paramString) { super(paramString); JPanel localJPanel = createDemoPanel(); localJPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(localJPanel); } private static JFreeChart createChart(IntervalXYDataset paramIntervalXYDataset) { JFreeChart localJFreeChart = ChartFactory.createXYBarChart("State Executions - USA", "Year", true, "Number of People", paramIntervalXYDataset, PlotOrientation.VERTICAL, true, false, false); localJFreeChart.addSubtitle(new TextTitle("Source: http://www.amnestyusa.org/abolish/listbyyear.do", new Font("Dialog", 2, 10))); localJFreeChart.setBackgroundPaint(Color.white); XYPlot localXYPlot = (XYPlot)localJFreeChart.getPlot(); XYBarRenderer localXYBarRenderer = (XYBarRenderer)localXYPlot.getRenderer(); StandardXYToolTipGenerator localStandardXYToolTipGenerator = new StandardXYToolTipGenerator("{1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0")); localXYBarRenderer.setBaseToolTipGenerator(localStandardXYToolTipGenerator); localXYBarRenderer.setMargin(0.10000000000000001D); localXYPlot.setBackgroundPaint(Color.lightGray); localXYPlot.setRangeGridlinePaint(Color.white); DateAxis localDateAxis = (DateAxis)localXYPlot.getDomainAxis(); localDateAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); localDateAxis.setLowerMargin(0.01D); localDateAxis.setUpperMargin(0.01D); return localJFreeChart; } private static IntervalXYDataset createDataset() { TimeSeries localTimeSeries = new TimeSeries("Executions", "Year", "Count", Year.class); try { localTimeSeries.add(new Year(1976), new Integer(0)); localTimeSeries.add(new Year(1977), new Integer(1)); localTimeSeries.add(new Year(1978), new Integer(0)); localTimeSeries.add(new Year(1979), new Integer(2)); localTimeSeries.add(new Year(1980), new Integer(0)); localTimeSeries.add(new Year(1981), new Integer(1)); localTimeSeries.add(new Year(1982), new Integer(2)); localTimeSeries.add(new Year(1983), new Integer(5)); localTimeSeries.add(new Year(1984), new Integer(21)); localTimeSeries.add(new Year(1985), new Integer(18)); localTimeSeries.add(new Year(1986), new Integer(18)); localTimeSeries.add(new Year(1987), new Integer(25)); localTimeSeries.add(new Year(1988), new Integer(11)); localTimeSeries.add(new Year(1989), new Integer(16)); localTimeSeries.add(new Year(1990), new Integer(23)); localTimeSeries.add(new Year(1991), new Integer(14)); localTimeSeries.add(new Year(1992), new Integer(31)); localTimeSeries.add(new Year(1993), new Integer(38)); localTimeSeries.add(new Year(1994), new Integer(31)); localTimeSeries.add(new Year(1995), new Integer(56)); localTimeSeries.add(new Year(1996), new Integer(45)); localTimeSeries.add(new Year(1997), new Integer(74)); localTimeSeries.add(new Year(1998), new Integer(68)); localTimeSeries.add(new Year(1999), new Integer(98)); localTimeSeries.add(new Year(2000), new Integer(85)); localTimeSeries.add(new Year(2001), new Integer(66)); localTimeSeries.add(new Year(2002), new Integer(71)); localTimeSeries.add(new Year(2003), new Integer(65)); localTimeSeries.add(new Year(2004), new Integer(59)); localTimeSeries.add(new Year(2005), new Integer(60)); } catch (Exception localException) { System.err.println(localException.getMessage()); } TimeSeriesCollection localTimeSeriesCollection = new TimeSeriesCollection(localTimeSeries); return localTimeSeriesCollection; } public static JPanel createDemoPanel() { return new ChartPanel(createChart(createDataset())); } public static void main(String[] paramArrayOfString) { XYBarChartDemo1 localXYBarChartDemo1 = new XYBarChartDemo1("State Executions - USA"); localXYBarChartDemo1.pack(); RefineryUtilities.centerFrameOnScreen(localXYBarChartDemo1); localXYBarChartDemo1.setVisible(true); }} ChartUtilities.writeImageMap(pw, fileName, info,false);这句就是设置图片热点的,把这句加上,在jsp页面中的img标签中再加上usemap="#<%= fileName %>"就可以显示了 6楼能说清楚点吗?官方的demo上有,可是哦看不懂 JasperReport与Ireport生成pdf报表的问题 Java Web 中怎样实现DataGrid功能 EL表达式的自定义函数传参数的问题 新手求助 求助大神,如何实现textarea中嵌套的某段文字灰色不可删除,其他的文字可删 hibernate报错 webservice返回xml怎么写? 这个小程序错在哪里?????????? 在jb中如何把String变量转化为Date型,在线等!! 关于调用Servlet 的问题? 本人有一个JSP的工程导入Eclipse里项目文件夹有一个叉怎么也用不了啊 struts 中关于 ValidatorResources NOT FOUND 问题
2 但你可以在生成图片后,使用热区来实现,也就是用Map使用圆形热区或者方形,设置图片的一块区域,然后设置 onmouseover方法。
剩下的要显示啥,你自己思考吧
package demo;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.io.PrintStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickMarkPosition;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.Year;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;public class XYBarChartDemo1 extends ApplicationFrame
{
public XYBarChartDemo1(String paramString)
{
super(paramString);
JPanel localJPanel = createDemoPanel();
localJPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(localJPanel);
} private static JFreeChart createChart(IntervalXYDataset paramIntervalXYDataset)
{
JFreeChart localJFreeChart = ChartFactory.createXYBarChart("State Executions - USA", "Year", true, "Number of People", paramIntervalXYDataset, PlotOrientation.VERTICAL, true, false, false);
localJFreeChart.addSubtitle(new TextTitle("Source: http://www.amnestyusa.org/abolish/listbyyear.do", new Font("Dialog", 2, 10)));
localJFreeChart.setBackgroundPaint(Color.white);
XYPlot localXYPlot = (XYPlot)localJFreeChart.getPlot();
XYBarRenderer localXYBarRenderer = (XYBarRenderer)localXYPlot.getRenderer();
StandardXYToolTipGenerator localStandardXYToolTipGenerator = new StandardXYToolTipGenerator("{1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0"));
localXYBarRenderer.setBaseToolTipGenerator(localStandardXYToolTipGenerator);
localXYBarRenderer.setMargin(0.10000000000000001D);
localXYPlot.setBackgroundPaint(Color.lightGray);
localXYPlot.setRangeGridlinePaint(Color.white);
DateAxis localDateAxis = (DateAxis)localXYPlot.getDomainAxis();
localDateAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
localDateAxis.setLowerMargin(0.01D);
localDateAxis.setUpperMargin(0.01D);
return localJFreeChart;
} private static IntervalXYDataset createDataset()
{
TimeSeries localTimeSeries = new TimeSeries("Executions", "Year", "Count", Year.class);
try
{
localTimeSeries.add(new Year(1976), new Integer(0));
localTimeSeries.add(new Year(1977), new Integer(1));
localTimeSeries.add(new Year(1978), new Integer(0));
localTimeSeries.add(new Year(1979), new Integer(2));
localTimeSeries.add(new Year(1980), new Integer(0));
localTimeSeries.add(new Year(1981), new Integer(1));
localTimeSeries.add(new Year(1982), new Integer(2));
localTimeSeries.add(new Year(1983), new Integer(5));
localTimeSeries.add(new Year(1984), new Integer(21));
localTimeSeries.add(new Year(1985), new Integer(18));
localTimeSeries.add(new Year(1986), new Integer(18));
localTimeSeries.add(new Year(1987), new Integer(25));
localTimeSeries.add(new Year(1988), new Integer(11));
localTimeSeries.add(new Year(1989), new Integer(16));
localTimeSeries.add(new Year(1990), new Integer(23));
localTimeSeries.add(new Year(1991), new Integer(14));
localTimeSeries.add(new Year(1992), new Integer(31));
localTimeSeries.add(new Year(1993), new Integer(38));
localTimeSeries.add(new Year(1994), new Integer(31));
localTimeSeries.add(new Year(1995), new Integer(56));
localTimeSeries.add(new Year(1996), new Integer(45));
localTimeSeries.add(new Year(1997), new Integer(74));
localTimeSeries.add(new Year(1998), new Integer(68));
localTimeSeries.add(new Year(1999), new Integer(98));
localTimeSeries.add(new Year(2000), new Integer(85));
localTimeSeries.add(new Year(2001), new Integer(66));
localTimeSeries.add(new Year(2002), new Integer(71));
localTimeSeries.add(new Year(2003), new Integer(65));
localTimeSeries.add(new Year(2004), new Integer(59));
localTimeSeries.add(new Year(2005), new Integer(60));
}
catch (Exception localException)
{
System.err.println(localException.getMessage());
}
TimeSeriesCollection localTimeSeriesCollection = new TimeSeriesCollection(localTimeSeries);
return localTimeSeriesCollection;
} public static JPanel createDemoPanel()
{
return new ChartPanel(createChart(createDataset()));
} public static void main(String[] paramArrayOfString)
{
XYBarChartDemo1 localXYBarChartDemo1 = new XYBarChartDemo1("State Executions - USA");
localXYBarChartDemo1.pack();
RefineryUtilities.centerFrameOnScreen(localXYBarChartDemo1);
localXYBarChartDemo1.setVisible(true);
}
}
这句就是设置图片热点的,把这句加上,在jsp页面中的img标签中再加上usemap="#<%= fileName %>"
就可以显示了