Domanda

In particolare sto cercando di aggiungere annotazioni di testo in posizioni specifiche a un JFreeChart che viene emesso in un file png per uso web. Può / come vengono aggiunte le annotazioni ai grafici a torta. Sono stato in grado di aggiungere correttamente annotazioni a XYPlot, ma non so come sovrapporre o aggiungerne uno a un PiePlot.

Il mio compito completo è usare PiePlot per creare una sorta di orologio. Finora tutto ha funzionato alla grande, ma ora ho bisogno di aggiungere etichette nelle posizioni 12, 3, 6 e 9 e completamente sconcertato.

Adam

È stato utile?

Soluzione 2

Dopo una ricerca abbastanza faticosa non credo che questo sia attualmente possibile (JFreeChart 1.0.13). Le opzioni possibili sono:

Crea un secondo grafico con un XYPlot per generare una seconda immagine con le annotazioni necessarie. Sovrapponi questa immagine alla pagina. Questa opzione è negativa perché raddoppia il numero di immagini del grafico da caricare.

Imposta l'immagine come sfondo della pagina e HTML il testo sopra l'immagine. Cattivo perché non è gestibile e crea mal di testa nel trasferimento dei dati.

Personalmente sto solo cercando un altro modo per comunicare le informazioni nel titolo, ma volevo pubblicare i miei risultati per la persona successiva. Adam

Altri suggerimenti

Un po 'di una vecchia domanda, ma ecco come ho fatto qualcosa di simile (annotazione alle posizioni 1, 2, 3, ... in punto) usando un diagramma polare. Utilizza ChoiceFormatter e 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

finisce come http://img522.imageshack.us/img522/6693/ hapihours.jpg

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top