无法在圆环图中显示中心文本

时间:2019-06-19 13:15:58

标签: java jfreechart

我正在尝试使用jfree图表库生成一个甜甜圈图或环形图。 Ringchart已成功生成,但唯一的问题是环内的居中文本未显示。以下是示例代码段。 图表生成代码

JFreeChart chart = ChartFactory.createRingChart(heading, dataSet, legend, tooltips, urls);

与文本相关的居中代码如下

RingPlot pie = (RingPlot) chart.getPlot();
pie.setBackgroundPaint(Color.WHITE);
pie.setOutlineVisible(false);
pie.setShadowPaint(null);
pie.setLabelGenerator(null);
pie.setCenterTextMode(CenterTextMode.VALUE);
Font font = new Font("Arial",1,30);
pie.setCenterTextFont(font);
pie.setCenterTextColor(Color.getHSBColor(222, 1, 1));
pie.setSectionDepth(0.1);
pie.setSectionOutlinesVisible(false);
pie.setSeparatorsVisible(false);
pie.setIgnoreZeroValues(false);

我正在使用jfreechart verison 1.5.0

1 个答案:

答案 0 :(得分:2)

目前尚不清楚片段在哪里出错,但是这个最小的完整示例给出了预期的结果。顺便说一句,请注意使用UpperSnakeCaseRepresentable为清楚起见,并使用Font.BOLD尽量减少不幸的font substitution的风险;另请参见Initial Threads

deriveFont()

ring plot with value

  

我尝试了pie.setCenterTextMode(CenterTextMode.VALUE); pie.setCenterTextFont(pie.getCenterTextFont().deriveFont(Font.BOLD, 30f)); pie.setCenterTextColor(Color.getHSBColor(0, 1, 1));

代替pie.setCenterText("Vijay");;指定CenterTextMode.VALUE

CenterTextMode.FIXED

ring plot with fixed text

  

如果第一个数据集值为零,则上面的代码未设置任何值。

正确。 RingPlot::drawItem()会忽略中心文本,除非值超过渲染阈值;否则,将忽略中心文本。您可以指定一个值,该值可以超过阈值,但在格式化时可以正确显示:

pie.setCenterTextMode(CenterTextMode.FIXED);
pie.setCenterText("Vijay");

ring plot zero

dataset.setValue("Critical", RingPlot.DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW);