简体   繁体   English

如何在我的JFreeChart上设置工具提示?

[英]How to set tooltip on my JFreeChart?

I am working on a line chart using JFreeChart. 我正在使用JFreeChart在折线图上工作。 I want to set tool tips on my line chart but I am unable to do that on Servlet. 我想在我的折线图上设置工具提示,但我无法在Servlet上执行此操作。 So please help me to set tool tips on Servlet? 那么请帮我在Servlet上设置工具提示?

XYSeriesCollection dataset = new XYSeriesCollection();
for (int i = 0; i < 2; i++) {

  XYSeries series = new XYSeries("Name"+i);
  for (int j = 0; j < 10; j++) {
    series.add(i+j,j+i*j);
  }
  dataset.addSeries(series);
}

JFreeChart chart= ChartFactory.createXYLineChart("Line Chart Demo 2", "X", "Y", dataset, PlotOrientation.VERTICAL, true, true,false);

XYPlot plot = (XYPlot) chart.getPlot();
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
plot.setBackgroundPaint(Color.white);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);

XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true);
renderer.setShapesFilled(true);

Vector<String> ToolTips1 = new Vector<String>();
for (int j = 0; j < 10; j++)
{
  ToolTips1.add("First: "+j);
}

Vector<String> ToolTips2 = new Vector<String>();
for (int j = 0; j < 10; j++)
{
  ToolTips2.add("Second: "+j);
}

CustomXYToolTipGenerator generator1 = new CustomXYToolTipGenerator();
generator1.addToolTipSeries(ToolTips1);
CustomXYToolTipGenerator generator2 = new CustomXYToolTipGenerator();
generator2.addToolTipSeries(ToolTips2);

renderer.setSeriesToolTipGenerator(0, generator1);
renderer.setSeriesToolTipGenerator(1, generator2);

renderer.setBaseShape(new Ellipse2D.Double(-3.0, -3.0, 8.0, 8.0));
plot.setRenderer(renderer);

response.setContentType("image/png");
RenderedImage chartImage=chart.createBufferedImage(500,500);
ImageIO.write(chartImage,"png",out);

You can use ChartFactory constructor 您可以使用ChartFactory构造函数

public static JFreeChart createAreaChart(java.lang.String title,
                     java.lang.String categoryAxisLabel,
                     java.lang.String valueAxisLabel,
                     CategoryDataset dataset,
                     PlotOrientation orientation,
                     boolean legend,
                     boolean tooltips,
                     boolean urls)

Creates an area chart with default settings. 使用默认设置创建面积图。 The chart object returned by this method uses a CategoryPlot instance as the plot, with a CategoryAxis for the domain axis, a NumberAxis as the range axis, and an AreaRenderer as the renderer. 此方法返回的图表对象使用CategoryPlot实例作为绘图,域轴为CategoryAxis,范围轴为NumberAxis,渲染器为AreaRenderer。

Parameters: 参数:

  • title - the chart title (null permitted). title - 图表标题(允许为null)。
  • categoryAxisLabel - the label for the category axis (null permitted). categoryAxisLabel - 类别轴的标签(允许为null)。
  • valueAxisLabel - the label for the value axis (null permitted). valueAxisLabel - 值轴的标签(允许为null)。
  • dataset - the dataset for the chart (null permitted). dataset - 图表的数据集(允许为null)。
  • orientation - the plot orientation (null not permitted). orientation - 绘图方向(不允许为null)。
  • legend - a flag specifying whether or not a legend is required. legend - 一个标志,指定是否需要图例。
  • tooltips - configure chart to generate tool tips? 工具提示 - 配置图表以生成工具提示?
  • urls - configure chart to generate URLs? urls - 配置图表以生成URL?

Returns: 返回:
An area chart. 面积图。

 XYToolTipGenerator xyToolTipGenerator = new XYToolTipGenerator()
 {
     public String generateToolTip(XYDataset dataset, int series, int item)
     {
         Number x1 = dataset.getX(series, item);
         Number y1 = dataset.getY(series, item);
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.append(String.format("<html><p style='color:#0000ff;'>Serie: '%s'</p>", dataset.getSeriesKey(series)));
         stringBuilder.append(String.format("X:'%d'<br/>", x1.intValue()));
         stringBuilder.append(String.format("Y:'%d'", y1.intValue()));
         stringBuilder.append("</html>");
         return stringBuilder.toString();
     }
 };

 XYLineAndShapeRenderer render = (XYLineAndShapeRenderer) plot.getRenderer();
 render.setBaseToolTipGenerator(xyToolTipGenerator);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM