Вопрос

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

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

Адам

Это было полезно?

Решение 2

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

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

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

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

Другие советы

Немного старый вопрос, но вот как я сделал нечто подобное (аннотация в 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top