jfreechart 多个渲染器工具提示不起作用

标签 jfreechart label renderer

enter image description here我有一个包含 2 组图表(检测和定位)的图形。第一组(定位)是红色、橙色、粉色,第二组(检测)是蓝色、黑色、青色。我为每组创建了一个渲染器以设置颜色。我已将工具提示设置为 true,但是当我将鼠标悬停在第二组(检测)上时,我看不到标签。我只能在鼠标悬停时看到第一组的标签(见图),但看不到另一组的标签。这是我的代码:

    JFreeChart avg_chart = ChartFactory.createTimeSeriesChart(
            "Average detections and localizations" ,
            "" ,
            "" ,
            null ,
            true , true , false);
    avg_chart.setBackgroundPaint(Color.WHITE);

    final XYPlot plot = avg_chart.getXYPlot( );
    plot.setDataset(0,this.dataset_local);
    plot.setDataset(1,this.dataset_detect);
    plot.setRangeAxis(0,new NumberAxis("Localizations"));
    plot.setRangeAxis(1,new NumberAxis("Detections"));

    plot.mapDatasetToRangeAxis(0, 0);
    plot.mapDatasetToRangeAxis(1, 1);

    plot.setDomainCrosshairVisible(true);
    plot.setRangeCrosshairVisible(true);

    XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) plot.getRenderer(0);//localization
    renderer1.setSeriesPaint( 0 , Color.RED );
    renderer1.setSeriesPaint( 1 , Color.MAGENTA );
    renderer1.setSeriesPaint( 2 , Color.orange );
    renderer1.setBaseItemLabelsVisible(true);

    XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer(true, false); //detection ****************
    renderer2.setSeriesPaint( 0 , Color.BLUE);
    renderer2.setSeriesPaint( 1 , Color.BLACK );
    renderer2.setSeriesPaint( 2 , Color.CYAN );
    renderer2.setBaseItemLabelsVisible(true);

    plot.setRenderer(0,renderer1);
    plot.setRenderer(1,renderer2);

    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setDateFormatOverride(new SimpleDateFormat("dd/MM/yyyy"));
    return avg_chart;

}

我尝试过 XYLineAndShapeRenderer renderer2 = (XYLineAndShapeRenderer)plot.getRenderer(1) 但它给出了一个 nulll 异常。

最佳答案

ChartFactory.createTimeSeriesChart()tooltipstrue 时,为您将 XYToolTipGenerator 添加到 renderer1。您可能只需要将它与 renderer2 一起使用:

renderer2.setBaseToolTipGenerator(renderer1.getBaseToolTipGenerator());

或者您可以向 renderer2 添加一个新的:

XYToolTipGenerator toolTipGenerator2 = StandardXYToolTipGenerator.getTimeSeriesInstance();
renderer2.setBaseToolTipGenerator(toolTipGenerator2);

关于jfreechart 多个渲染器工具提示不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45137892/

相关文章:

r - 如果矩阵而不是数据框,则 R 绘图中的标记点不打印

java - JButton 操作不在 JTable 内部执行

jfreechart - 将静态网格线添加到 JFreeChart 时间序列图表

java - 使用 JFreeChart 动态构建和更新直方图

r - 如何在barplot中获取条形的x坐标

java - 具有按钮和文本的 GWT 小部件?

c++ - SDL2 渲染器给我带来了问题

java - 列出 codenameone 中的渲染器问题

java - 对 XYSplineRenderer 的绘图进行动画处理

java - 在同一帧上重新计算直方图并使用 JFreechart 重新绘制