2017-07-17 15 views
1

enter image description here私は2組のグラフ(検出とローカリゼーション)を持つ図を持っています。最初のセット(ローカリゼーション)は赤、オレンジ、ピンク、2番目のセット(検出)は青、黒、シアンです。色を設定するために各セットのレンダラーを作成しました。私は本当にツールヒントを設定しているが、私は2番目のセット(検出)にmouseover私はラベルを見ることができません。私はマウスオーバーで最初のセットのラベルのみを見ることができます(写真を参照)が、他のセットのラベルは見ることができません。ここに私のコードは次のとおりです。jfreechart複数のレンダラーのツールチップが機能しない

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例外で提供します。 tooltipstrueとき

答えて

1

ChartFactory.createTimeSeriesChart()はあなたのためにrenderer1からXYToolTipGeneratorを追加します。あなたはおそらくちょうどrenderer2でそれを使用する必要があります。

renderer2.setBaseToolTipGenerator(renderer1.getBaseToolTipGenerator()); 

それとも、renderer2に新しいものを追加することができます

XYToolTipGenerator toolTipGenerator2 = StandardXYToolTipGenerator.getTimeSeriesInstance(); 
renderer2.setBaseToolTipGenerator(toolTipGenerator2); 
関連する問題