Ich versuche, eine Legende unter der Handlung in verstreutem Diagramm wie unten gezeigt hinzuzufügen. Weiß jemand, ob das möglich ist?Ist es möglich, Legend zum Plot in JFreeChart hinzuzufügen?
Vorher:
Nach:
Ich versuche, eine Legende unter der Handlung in verstreutem Diagramm wie unten gezeigt hinzuzufügen. Weiß jemand, ob das möglich ist?Ist es möglich, Legend zum Plot in JFreeChart hinzuzufügen?
Vorher:
Nach:
Erweiterung StandardXYItemLabelGenerator
ist oft ein nützlicher Ansatz, aber die mitgelieferte constructors ausreichen. Für diesen Generator, ArgumentIndex die MessageFormat
Werte an die Seriennamen entsprechen, Domain und Bereich.
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2); // etc.
XYItemLabelGenerator generator =
new StandardXYItemLabelGenerator("{0} {1} {2}", format, format);
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
Darüber hinaus können Sie einzelne Serie Kennzeichnung steuern mit
renderer.setSeriesItemLabelsVisible(true);
Dies auf dem Renderer gesteuert wird:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
Danke für die Antwort. Ich habe es versucht, aber es zeigte sich immer noch. Gibt es noch etwas, was ich vorher tun muss? Vielleicht Etiketten zu jedem Grundstück zuweisen? – rmartinus
Ich denke, ich habe es jetzt .. Ich habe meinen eigenen Element-Label-Generator namens "LegendXYItemLabelGenerator (..)" erstellt und es zum Laufen gebracht. Zusätzlich zu "renderer.setBaseItemLabelsVisible (true);" habe ich "renderer.setBaseItemLabelGenerator (new LegendXYItemLabelGenerator (plot.getLegendItems()));" – rmartinus
Ist dies auf einem 'XYAreaRenderer' möglich? Ich versuche, es zum Laufen zu bringen, und ich kann für den 'XYLineAndShapeRenderer', aber derselbe Code funktioniert nicht für den' XYAreaRenderer'. ' – skaz
Hier ist der individuelle Label-Generator, die ich erstellt:
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();
}
}
und dann habe ich diesen Code zusätzlich zu @ Guilaume Code:
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems()));
und hier ist das Ergebnis:
+1 für das gute Beispiel. Ich habe einen alternativen Ansatz in einer anderen Antwort vorgeschlagen. – trashgod
Siehe auch dieses [Beispiel] (http://stackoverflow.com/a/8932920/230513) für 'StandardCategoryToolTipGenerator'. – trashgod