JFreeChart - Как улучшить метки на круговой диаграмме - PullRequest
4 голосов
/ 21 марта 2012

В основном у меня очень похожая проблема со следующей статьей: http://www.jfree.org/phpBB2/viewtopic.php?t=24713

За исключением того, что вместо различий в версиях мои результаты для меток очень похожи на 3-ю круговую диаграмму, где я бы предпочел, чтобы они были похожи на 1-ю диаграмму (больше места на строку - более широкие линии), чтобы им не приходилось переходите на следующую строку так быстро. Я перепробовал все, что мог придумать, чтобы увеличить размер надписей, но, похоже, ничего не работает.

Мое основное намерение состоит в том, чтобы откорректировать, где начинается запись метки, и благодаря большой отладке источника я смог увеличить размер поля, но не фактическую строку. Я не мог найти способ сделать это без редактирования источника через какую-то конфигурацию, и даже тогда я не мог правильно настроить текст, только поле. И потребовалось немало усилий, код не одинаков для обоих.

Любые предложения о том, как настроить круговую диаграмму так, чтобы метки, как показано в статье выше, работали больше как 1-й график, чем последний график, были бы оценены. Я сделал то, что было предложено в посте:

plot.setInteriorGap(0.02);
plot.setMaximumLabelWidth(0.20);
plot.setLabelLinkStyle(PieLabelLinkStyle.CUBIC_CURVE);

но это не имело никакого значения. По умолчанию нет CUBIC_CURVE в последней версии. У setInteriorGap было небольшое улучшение, но оно было минимальным. А другая строка ничего не сделала.

Что действительно беспокоит, так это то, сколько пустого пространства есть слева и справа от сгенерированного графика. Было бы здорово, если бы можно было как-то использовать это пространство.

1 Ответ

0 голосов
/ 11 января 2013

Я не уверен насчет первого выпуска. Однако у меня есть представление о том, что делать с оставшимися пробелами.

Если вы конвертируете диаграмму в изображение, вы можете попробовать обрезать пропуски вокруг него следующим образом:

BufferedImage chartImage = chart.createBufferedImage(width, height);
chartImage = chartImage.getSubImage(howMuchToTrimOnLeft, howMuchtoTrimOnTop, width - howMuchToTrimOnLeft - howMuchToTrimOnRight, height - howMuchtoTrimOnTop - howMuchToTrimOnBottom);

Полученный chartImage будет содержать усеченную версию. Убедитесь, что исходные значения ширины и высоты больше, чем размеры области, которую вы хотите занять на диаграмме, а затем обрежьте ее до размера.

...