IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[JFreeChart] Personnaliser les axes


Sujet :

2D Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut [JFreeChart] Personnaliser les axes
    Bonjour à tous,

    je souhaite créer un document pdf (avec iText) contenant un graphique de taille fixe dans ma page. Pour générer le graphique, j'utilise jFreeChart.

    Mon problème est que lorsque je donne la taille du graphique à insérer dans le pdf, les labels de l'axe horizontal ne sont pas affichés (police trop grande) et que ceux de l'axe vertical ont également une police trop grande.

    Je souhaiterais donc savoir comment il est possible de définir la police (type et taille) des axes du graphique.

    Egalement, comment est il possible de définir le "pas" de l'axe des ordonnées ?

    Merci de votre aide.

    ScreenShot du rendu Pdf :



    Ci dessous, le code utilisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    public GenerePdf() 
        {
            Document document = new Document(PageSize.A4);
     
            try {
                PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\test.pdf"));
                document.addCreationDate();
                writer.setPageEvent(this);
                document.setMargins(45f,45f,30f,50f);
                document.open();
     
                int iHauteurGraphe = 160;
                int iLargeurGraphe = 260;
     
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
                for(int iCpt = 0; iCpt < 20; iCpt++)
                {
                    dataset.addValue( 10*iCpt, "donnees", ""+iCpt+1 );
                }
     
                JFreeChart graphique = ChartFactory.createStackedBarChart( "", "", 
                    "", dataset, PlotOrientation.VERTICAL, false, false, false );
     
                graphique.getTitle().setMargin(2.0,0.0,0.0,0.0);
                TextTitle t = new TextTitle("Courbe de rentabilité", new java.awt.Font ("Arial", java.awt.Font.PLAIN, 11));
                java.awt.Font fArialGraphe = new java.awt.Font ("Arial", java.awt.Font.PLAIN, 11);
     
                t.setPosition(RectangleEdge.TOP);
                t.setWidth(10);
                t.setHorizontalAlignment(HorizontalAlignment.CENTER);
                t.setMargin(0.0, 0.0, 4.0, 4.0);
                t.setPaint(Color.BLUE);
                graphique.addSubtitle(t);
     
     
                CategoryPlot plot = graphique.getCategoryPlot();
                Color cBleu = new Color(153,153,255);
                plot.getRenderer().setSeriesPaint(0,cBleu);
                graphique.setBorderVisible(false);
                graphique.setBackgroundPaint(null);
     
                PdfContentByte cb = writer.getDirectContent();
                PdfTemplate tp = cb.createTemplate(iLargeurGraphe, iHauteurGraphe);
                Graphics2D g2D = tp.createGraphics(iLargeurGraphe, iHauteurGraphe, new DefaultFontMapper());
                Rectangle2D r2D = new Rectangle2D.Double( 0, 0, iLargeurGraphe, iHauteurGraphe);
                graphique.draw(g2D, r2D);
                g2D.dispose();
                cb.addTemplate(tp, 260, 100);
     
            }
            catch(DocumentException de) 
            {
                System.err.println(de.getMessage());
            }
            catch(IOException ioe) 
            {
                System.err.println(ioe.getMessage());
            }
            document.close();
        }

  2. #2
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    J'ai trouvé ma solution en recoupant divers informations de plusieurs forum. Voici ce qui fonctionne pour redimensionner la police des axes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CategoryPlot plot = graphique.getCategoryPlot();
     
    NumberAxis axe1 = (NumberAxis) plot.getRangeAxis();
    axe1.setTickLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 6));
    ax1.setLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 6));
     
    Axis axe2 = plot.getDomainAxis();
    axe2.setTickLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 6));
    axe2.setLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 6));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JFreeChart] Modifier les axes
    Par TekP@f dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 30/03/2010, 18h26
  2. [JFreeChart] Décaler les axes
    Par Vanatou dans le forum 2D
    Réponses: 0
    Dernier message: 27/08/2009, 12h22
  3. Réponses: 1
    Dernier message: 14/06/2007, 21h37
  4. [CR XI] Graphique radars : peut-on personnaliser les axes ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 01/12/2006, 16h23
  5. [JFreeChart] Personaliser les axes d'un AreaChart
    Par noussa_nouha dans le forum 2D
    Réponses: 2
    Dernier message: 05/09/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo