J'essaye d'ajouter une légende sous l'intrigue dans le diagramme dispersé comme montré ci-dessous. Quelqu'un sait si c'est possible?Est-il possible d'ajouter Legend à l'intrigue dans JFreeChart?
Avant:
Après:
J'essaye d'ajouter une légende sous l'intrigue dans le diagramme dispersé comme montré ci-dessous. Quelqu'un sait si c'est possible?Est-il possible d'ajouter Legend à l'intrigue dans JFreeChart?
Avant:
Après:
étendons StandardXYItemLabelGenerator
est souvent une approche utile, mais fourni constructors peut suffire. Pour ce générateur, le MessageFormat
ArgumentIndex valeurs correspondent au nom de la série , domaine et gamme.
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2); // etc.
XYItemLabelGenerator generator =
new StandardXYItemLabelGenerator("{0} {1} {2}", format, format);
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
En outre, vous pouvez contrôler l'étiquetage des séries individuelles avec
renderer.setSeriesItemLabelsVisible(true);
Ceci est contrôlé sur le moteur de rendu:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
Merci pour la réponse. J'ai essayé cela mais ça s'est quand même montré maintenant. Y a-t-il autre chose que je devrais probablement faire avant? Peut-être assigner des étiquettes à chaque parcelle? – rmartinus
Je pense que je l'ai eu maintenant .. J'ai créé mon propre générateur d'étiquette d'article appelé "LegendXYItemLabelGenerator (..)" et l'ai mis au travail. En plus de "renderer.setBaseItemLabelsVisible (true);", j'ai ajouté "renderer.setBaseItemLabelGenerator (new LegendXYItemLabelGenerator (plot.getLegendItems()));" – rmartinus
Est-ce possible sur un 'XYAreaRenderer'? J'essaye de le faire fonctionner et je peux pour le 'XYLineAndShapeRenderer' mais le même code ne fonctionne pas pour le' XYAreaRenderer'. – skaz
est ici le générateur d'étiquette personnalisée que j'ai créé:
public class LegendXYItemLabelGenerator extends StandardXYItemLabelGenerator
implements XYItemLabelGenerator, Cloneable, PublicCloneable,
Serializable {
private LegendItemCollection legendItems;
public LegendXYItemLabelGenerator(LegendItemCollection legendItems) {
super();
this.legendItems = legendItems;
}
@Override
public String generateLabel(XYDataset dataset, int series, int item) {
LegendItem legendItem = legendItems.get(series);
return legendItem.getLabel();
}
}
puis-je ajouté ce code, en plus de @ code de Guilaume:
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems()));
et voici le résultat:
+1 pour le bon exemple. J'ai suggéré une approche alternative dans une autre réponse. – trashgod
Voir aussi [exemple] (http://stackoverflow.com/a/8932920/230513) pour 'StandardCategoryToolTipGenerator'. – trashgod