Pergunta

Especificamente eu estou olhando para adicionar anotações de texto para locais específicos para um JFreeChart que está sendo saída para um arquivo png para o uso da web. Pode / como fazer anotações são adicionados para gráficos de pizza. Eu tenho sido capaz de adicionar com sucesso anotações para XYPlots, mas não sei como a sobreposição ou adição a um PiePlot.

A minha tarefa completa é usar o PiePlot para criar uma espécie de relógio. Até agora tudo tem funcionado muito bem, mas agora eu preciso adicionar etiquetas às 12, 3, 6 e 9 locais o'clock e completamente perplexo.

Adam

Foi útil?

Solução 2

Depois de uma busca bastante extenuante Eu não acredito que este é actualmente possível (JFreeChart 1.0.13). As opções possíveis são:

Crie uma segunda tabela com uma XYPlot para gerar uma segunda imagem com anotações necessárias. Overlay esta imagem na página. Esta opção é ruim porque duplica o número de imagens de gráfico a ser carregado.

Definir a imagem como fundo da página e HTML o texto sobre a imagem. Bad porque não é sustentável e faz uma dor de cabeça de transferência de dados.

Pessoalmente, eu estou indo só para encontrar outra maneira de comunicar as informações no título, mas eu queria postar meus resultados para a próxima pessoa. Adam

Outras dicas

Um pouco de uma questão antiga, mas aqui está como eu fiz algo semelhante (anotação em 1, 2, 3, ... horas posições), utilizando um diagrama polar. Ele usa um ChoiceFormatter eo 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

acaba parecendo http://img522.imageshack.us/img522/6693/ hapihours.jpg

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top