XYLineChart上的多个XYSeries的ItemLabelPosition - JFreeChart

时间:2014-08-06 00:20:06

标签: jfreechart

我试图找出如何控制XYLineChart的2个不同XYSeries的标签。例如,我有一个系列显示房屋的真实市场价值,另一个系列显示最大评估值。但是,线条上的一些标签重叠。我可以通过访问XYItemRenderer和ItemLabelPosition来控制线条的整体标注,但这可以作为一个整体。我需要调整每条线上的标签。有什么建议?感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用渲染器方法setSeriesItemLabelsVisible()控制每个系列的标签的可见性。使用JCheckBox,看到hereJComboBox,看到here,允许用户根据需要调整可见性。使用Preferences保留用户的选择。

答案 1 :(得分:0)

非常感谢您的帮助。你指出我正确的方向。这是我用来控制项目标签位置的过程。

  1. 获取AbstractXYItemRenderer
  2. 获取ItemLabelPosition并自定义
  3. 使用AbstractXYItemRenderer的setSeriesPositionItemLabelPosition方法设置位置
  4. final AbstractXYItemRenderer xyRenderer =(AbstractXYItemRenderer)this.chart.getXYPlot()。getRenderer();

    final ItemLabelPosition p1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.TOP_CENTER,TextAnchor.TOP_CENTER, - Math.PI / 4);     xyRenderer.setItemLabelAnchorOffset(6.5);     xyRenderer.setSeriesItemLabelPaint(1,Color.BLUE);     xyRenderer.setSeriesPositiveItemLabelPosition(1,p1);

    final ItemLabelPosition p2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6,TextAnchor.BOTTOM_CENTER,TextAnchor.BOTTOM_CENTER, - Math.PI / 4);     xyRenderer.setItemLabelAnchorOffset(-8.5);     xyRenderer.setSeriesItemLabelPaint(0,Color.RED);     xyRenderer.setSeriesPositiveItemLabelPosition(0,p2);