我正在尝试使用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
答案 0 :(得分:2)
目前尚不清楚片段在哪里出错,但是这个最小的完整示例给出了预期的结果。顺便说一句,请注意使用UpperSnakeCaseRepresentable
为清楚起见,并使用Font.BOLD
尽量减少不幸的font substitution的风险;另请参见Initial Threads。
deriveFont()
我尝试了
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
如果第一个数据集值为零,则上面的代码未设置任何值。
正确。 RingPlot::drawItem()
会忽略中心文本,除非值超过渲染阈值;否则,将忽略中心文本。您可以指定一个值,该值可以超过阈值,但在格式化时可以正确显示:
pie.setCenterTextMode(CenterTextMode.FIXED);
pie.setCenterText("Vijay");
dataset.setValue("Critical", RingPlot.DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW);