Affichage d'une chart avec SWT/JfreeChart

ImFaith Messages postés 57 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 17 mars 2015 - 4 juin 2011 à 21:22
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 5 juin 2011 à 09:08
Salut tout le monde;

.J'ai rencontré un problème dans l'affichage. JE veux que l'axe des "X" affiche les numéro pas par pas,çàd. 1,2,3,4,5... .Mais pour mon code si le nombre des numéros est grand il les affiche par virgule.
voici le code :

package Interfaces;

import java.awt.Color;
import java.awt.Font;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;


public class CombinedXYPlotDemo4 extends ApplicationFrame {

    public CombinedXYPlotDemo4(final String title) {
        super(title);
        final JFreeChart chart = createCombinedChart();
        final ChartPanel panel = new ChartPanel(chart, true, true, true, true, true);
        panel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(panel);
    }
    private JFreeChart createCombinedChart() {
        // create subplot 1...
        final XYDataset data1 = createDataset1();
        final XYItemRenderer renderer1 = new StandardXYItemRenderer();
        final NumberAxis rangeAxis1 = new NumberAxis("Efficacité");
        rangeAxis1.setLabelPaint(Color.red);
        rangeAxis1.setTickLabelPaint(Color.red);
        rangeAxis1.setTickLabelFont(new Font("Vijaya", Font.PLAIN, 16));
        rangeAxis1.setLabelFont(new Font("Vijaya", Font.PLAIN, 28));
        final XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1);
        subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
        // add secondary axis
        subplot1.setDataset(1, createDataset2());
        final NumberAxis axis2 = new NumberAxis("Temps de chiffrement");
        axis2.setLabelPaint(Color.blue);
        axis2.setTickLabelPaint(Color.blue);  
        axis2.setLabelFont(new Font("Vijaya", Font.PLAIN, 28));
        axis2.setTickLabelFont(new Font("Vijaya", Font.PLAIN, 16));
        axis2.setAutoRangeIncludesZero(false);
        subplot1.setRangeAxis(1, axis2);
        subplot1.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);
        subplot1.setRenderer(1, new StandardXYItemRenderer());       
        subplot1.mapDatasetToRangeAxis(1, 1);
        final XYTextAnnotation annotation = new XYTextAnnotation("Hello!", 50.0, 10000.0);
        annotation.setFont(new Font("Vijaya", Font.PLAIN, 9));
        annotation.setRotationAngle(Math.PI / 4.0);
        subplot1.addAnnotation(annotation);
        // parent plot...
        final CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Numéro Test"));
        plot.setGap(10.0);
     
        // add the subplots...
        plot.add(subplot1, 1);
        plot.setOrientation(PlotOrientation.VERTICAL);
        return new JFreeChart("Efficacité/Temps chiffrement"+"\n"+" par rapport au nombre de fourmis et de générations",
        		new Font("Vijaya", Font.PLAIN, 28) ,plot, true);
    }
    private XYDataset createDataset1() {
        // valeur d'efficacité
        final XYSeries series1 = new XYSeries("Efficacité");
        series1.add(1,1546);
        series1.add(2,1888.8);
        series1.add(3,1922.4);
        series1.add(4,1989.6);
        series1.add(5,2043.4);
        series1.add(6,2069.6);
        series1.add(7,2087.8);
        series1.add(8,2114.4);
        series1.add(9,2138.2);
        series1.add(10,2150.0);
        series1.add(11,2137.2);
        series1.add(12,2142.4);
        series1.add(13,2144.8);
        series1.add(14,2164.6);
        series1.add(15,2172.0);
        series1.add(16,2109.6);
        series1.add(17,2152.0);
        series1.add(18,2154.2);
        series1.add(19,2168.418);
        series1.add(20,2176.8);
        series1.add(21,2175.2);
        series1.add(22,2179.2);
        series1.add(23,2178.0);
        series1.add(24,2172.2);
        series1.add(25,2176.6);
        series1.add(26,2153.2);	
        series1.add(27,2173.2);
        series1.add(28,2180.0);
        series1.add(29,2178.0);
        series1.add(30,2182.4);
        series1.add(31,2181.4);
        series1.add(32,2181.6);
        series1.add(33,2186.6);
        series1.add(34,2184.8);
        series1.add(35,2187.0);
        series1.add(36,2145.4);
        series1.add(37,2182.4);
        series1.add(38,2182.0);
        series1.add(39,2187.8);
        series1.add(40,2186.8);
        series1.add(41,2189.6);
        series1.add(42,2188.6);
        series1.add(43,2190.4);
        series1.add(44,2189.0);
        series1.add(45,2189.0);
series1.add(46,2173.0);
series1.add(47,2187.2);
series1.add(48,2188.8);
series1.add(49,2189.8);
series1.add(50,2190.0);
series1.add(51,2191.0);
series1.add(52,2190.6);
series1.add(53,2191.0);
series1.add(54,2190.6);
series1.add(55,2190.6);   
        final XYSeriesCollection collection = new XYSeriesCollection();
        collection.addSeries(series1);    
        return collection;
    }  
    private XYDataset createDataset2() {
        //temps de chiffrement
        final XYSeries series1b = new XYSeries("Temps");
        
        series1b.add(1,117.1);
        series1b.add(2,199.7);
        series1b.add(3,276.2);
        series1b.add(4,355.6);
        series1b.add(5,435.4);
        series1b.add(6,267);
        series1b.add(7,504);
        series1b.add(8,2756.6);
        series1b.add(9,982.6);
        series1b.add(10,1245.6);
        series1b.add(11,1499);
        series1b.add(12,1736.2);
        series1b.add(13,1967.0);
        series1b.add(14,2230.7);
        series1b.add(15,2480.4);
        series1b.add(16,495.9);
        series1b.add(17,914.2);
        series1b.add(18,1333.8);
        series1b.add(19,1821.9);
        series1b.add(20,2216.2);
        series1b.add(21,2662.9);
        series1b.add(22,3101.4);
        series1b.add(23,3539.7);
        series1b.add(24,3957.8);
        series1b.add(25,4404.0);
        series1b.add(26,655.2);	
        series1b.add(27,1301.1);
        series1b.add(28,1937.5);
        series1b.add(29,2563.1);
        series1b.add(30,3207.4);
        series1b.add(31,3842.3);
        series1b.add(32,4506.9);
        series1b.add(33,5187.1);
        series1b.add(34,5822.0);
        series1b.add(35,6444.3);
        series1b.add(36,926.1);
        series1b.add(37,1743.3);
        series1b.add(38,2522.5);
        series1b.add(39,3378.9);
        series1b.add(40,4227.6);
        series1b.add(41,5040.4);
        series1b.add(42,5909.4);
        series1b.add(43,6703.4);
        series1b.add(44,7548.8);
        series1b.add(45,8405.3);
        series1b.add(46,1040.5);
series1b.add(47,2093.5);
series1b.add(48,3126.2);
series1b.add(49,4169.9);
series1b.add(50,5202.6);
series1b.add(51,5427.3);
series1b.add(52,7290.0);
series1b.add(53,8327.3);
series1b.add(54,9517.7);
series1b.add(55,10468.0);

final XYSeriesCollection collection = new XYSeriesCollection();
        collection.addSeries(series1b);
        
        return collection;
    }

    public static void main(final String[] args) {

        final CombinedXYPlotDemo4 demo = new CombinedXYPlotDemo4("Efficacité/temps chiffrement");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }
}

j'ai trop essayer de changer l'affichage mais hélas...!merci d'avance.

1 réponse

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 juin 2011 à 09:08
salut,
je ne connai pas par coeur tout les comportement de JFreechart ;o), cependant je me rapelle ;o) que ses classs sont asser complete en terme de model et de rendu... et respectes à priori le model MVC ;o)
donc dans le meilleur des cas, il existe un renderer ... si il ne te convien pas surcharge le pour et refait toi meme la methode de rendu ... ;o) avec les sources d'origine ca doit pas etre bien dur ...

GodConan ;o)
0
Rejoignez-nous