【发布时间】:2014-08-06 00:20:06
【问题描述】:
我试图弄清楚如何控制 XYLineChart 的 2 个不同 XYSeries 的标签。例如,我有一个线系列显示房屋的实际市场价值,另一个线系列显示最大评估价值。但是,线上的一些标签重叠。我能够通过访问 XYItemRenderer 和 ItemLabelPosition 来控制线条的整体标签,但这作为一个整体起作用。我需要调整每一行的标签。有什么建议么?谢谢。
【问题讨论】:
标签: jfreechart
我试图弄清楚如何控制 XYLineChart 的 2 个不同 XYSeries 的标签。例如,我有一个线系列显示房屋的实际市场价值,另一个线系列显示最大评估价值。但是,线上的一些标签重叠。我能够通过访问 XYItemRenderer 和 ItemLabelPosition 来控制线条的整体标签,但这作为一个整体起作用。我需要调整每一行的标签。有什么建议么?谢谢。
【问题讨论】:
标签: jfreechart
您可以使用渲染器的方法setSeriesItemLabelsVisible() 控制每个系列标签的可见性。使用JCheckBox、看到here 或JComboBox、看到here,以允许用户根据需要调整可见性。使用Preferences 保持用户的选择。
【讨论】:
非常感谢您的帮助。你为我指明了正确的方向。这是我用来控制项目标签位置的过程。
final AbstractXYItemRenderer xyRenderer = (AbstractXYItemRenderer) this.chart.getXYPlot().getRenderer();
最终 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);
最终 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);
【讨论】: