在 JavaFX 饼图中显示附加标签

Displaying additional label in JavaFX Pie Chart

我有一个饼图显示 图例(文本)标签(值)。我希望显示一个饼图,饼图外面有值,里面有 %。

这里是pie chart example.

我已按照 更改外部标签以显示值而不是文本,但我想要另一个显示百分比的内部标签。

有什么方法可以添加这些标签吗?如果是这样,我该怎么做?我应该使用什么等式来很好地对齐这些标签?

我找到了解决方案,我几乎只是复制了几乎整个 "layoutChartChildren()" 方法。 link转源码here.

你需要注意的主要是下面两行,告诉你放置标签的坐标。

double sliceCenterEdgeX = calcX(labelAngles[index], pieRadius, centerX);
double sliceCenterEdgeY = calcY(labelAngles[index], pieRadius, centerY);

pieRadius 将是距放置标签的圆心的距离。我将包含一小段我复制的提取代码,其他方法可以直接从提供的源代码中复制。

double[] labelAngles = new double[getData().size()];
double scale = (total != 0) ? 360 / total : 0;
double start = getStartAngle();

int index = 0;
for (Data d : getData()){
  double size = (isClockwise()) ? (-scale * Math.abs(item.getCurrentPieValue())) : (scale * Math.abs(item.getCurrentPieValue()));
  labelAngles[index] = normalizeAngle(start + (size / 2));
  double sliceX = calcX(labelAngles[index], pieRadius * 0.7, centerX);
  double sliceY = calcY(labelAngles[index], pieRadius * 0.7, centerY);
  //Note: to place it in perfect center:
  //sliceX = sliceX - (text.getBoundsInLocal().getWidth() / 2;
  //sliceY = sliceY - (text.getBoundsInLocal().getHeight() / 2;
  text.relocate(sliceX, sliceY);
}