Аннотации на круговой диаграмме JFreeChart - PullRequest
0 голосов
/ 29 июля 2009

В частности, я хочу добавить текстовые аннотации в определенные места в JFreeChart, который выводится в файл png для веб-использования. Можно / как добавить аннотации в круговые диаграммы. Мне удалось успешно добавить аннотации к XYPlots, но я не знаю, как наложить или добавить один к PiePlot.

Моя полная задача - использовать PiePlot для создания часов. До сих пор все работало отлично, но теперь мне нужно добавить метки в 12, 3, 6 и 9 часов и полностью в тупике.

Адам

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Немного старого вопроса, но вот как я сделал нечто подобное (аннотация в позициях 1, 2, 3, ...), используя полярный график. Он использует ChoiceFormatter и NumberTickUnit:

    final JFreeChart chart = ChartFactory.createPolarChart(
            "HAPI Hourly Usage (UTC)", ds, true, true, false);
    final PolarPlot plot = (PolarPlot) chart.getPlot();

    // Create a ChoiceFormat to map the degrees to clock positions
    double[] limits = new double[12];
    String[] formats = new String[12];
    limits[0] = 0;
    formats[0] = "12";

    // degrees = 360/12
    for (int i = 1; i < limits.length; i++) {
        limits[i] = degrees * (i);
        formats[i] = Integer.toString(i);
    }
    ChoiceFormat clock = new ChoiceFormat(limits, formats);

    TickUnit tickUnit = new NumberTickUnit(degrees, clock);

    // now configure the plot
    plot.setAngleTickUnit(tickUnit); // sets the ticks
    plot.setAngleLabelsVisible(true); // makes the labels visible
    plot.setAngleLabelPaint(Color.LIGHT_GRAY); // user choice
    plot.setAngleGridlinesVisible(true); // must set this to display the
                                         // labels
    plot.setAngleGridlinePaint(Color.BLACK); // plot's background color
                                             // (makes lines invisible)
    plot.setRadiusGridlinesVisible(false); //turn off the radius value circles
    ValueAxis axis = plot.getAxis();
    axis.setTickLabelsVisible(false); //turn off the radius value labels

выглядит как http://img522.imageshack.us/img522/6693/hapihours.jpg

0 голосов
/ 30 июля 2009

После довольно напряженного поиска я не верю, что это возможно в настоящее время (JFreeChart 1.0.13). Возможные варианты:

Создайте вторую диаграмму с графиком XY, чтобы сгенерировать второе изображение с необходимыми аннотациями. Наложите это изображение на страницу. Эта опция плохая, потому что она удваивает количество загружаемых графических изображений.

Установите изображение в качестве фона на странице и HTML текст поверх изображения. Плохо, потому что это не обслуживаемо и делает головную боль передачи данных.

Лично я просто собираюсь найти другой способ донести информацию в названии, но я хотел опубликовать свои выводы для следующего человека. Адам

...