Question

Plus précisément, je souhaite ajouter des annotations textuelles à des emplacements spécifiques sur un JFreeChart en cours de sortie dans un fichier png pour une utilisation Web. Comment / comment les annotations sont-elles ajoutées aux camemberts? J'ai pu ajouter des annotations à XYPlots, mais je ne sais pas comment superposer ou en ajouter un à un PiePlot.

Mon travail consiste à utiliser le PiePlot pour créer une sorte d’horloge. Jusqu’à présent, tout a bien fonctionné, mais je dois maintenant ajouter des étiquettes aux emplacements situés à 12, 3, 6 et 9 heures, et je suis complètement perplexe.

Adam

Était-ce utile?

La solution 2

Après une recherche assez ardue, je ne pense pas que cela soit actuellement possible (JFreeChart 1.0.13). Les options possibles sont:

Créez un second graphique avec un XYPlot pour générer une seconde image avec les annotations nécessaires. Superposer cette image sur la page. Cette option est incorrecte car elle double le nombre d'images de graphique à télécharger.

Définissez l'image en tant qu'arrière-plan de la page et créez le texte HTML au-dessus de l'image. Mauvais parce qu’il n’est pas maintenable et fait très mal au transfert de données.

Personnellement, je vais simplement trouver un autre moyen de communiquer les informations contenues dans le titre, mais je souhaitais publier mes conclusions pour la personne suivante. Adam

Autres conseils

Un peu d’une vieille question, mais voici comment j’ai fait quelque chose de similaire (annotation aux positions 1, 2, 3, ...) à l’aide d’un graphique polaire. Il utilise ChoiceFormatter et 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

finit par ressembler à http://img522.imageshack.us/img522/6693/ hapihours.jpg

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top