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

ODS et reporting Discussion :

Colorer Boxplot en fonction de la classe


Sujet :

ODS et reporting

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur d'études / Biostatisticien
    Inscrit en
    Décembre 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études / Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 354
    Par défaut Colorer Boxplot en fonction de la classe
    Bonjour, j'aimerais colorer l'intérieur de mes boxplots en fonction de la classe et aussi rajouter un trait sur les statistiques de base que j'affiche pour chaque boxplot.

    J'ai fouillé sur la page du support SAS mais étrangement quand j'utilise l'ODS j'ai pas la même chose que eux... et puis je n'ai pas trouvé comment faire la coloration qui m'intéresse.

    J'ai mis en fichier joint l'idée et voici la syntaxe que j'entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ODS GRAPHICS ON;
    PROC BOXPLOT DATA = TEST;
    PLOT N1 * Statut = Statut / BOXSTYLE = SCHEMATIC NOHLABEL;
    INSETGROUP min Q2 max mean std;
    RUN;
    ODS GRAPHICS OFF;
    Si quelqu'un sait comment arriver à mes fins, surtout que là aussi ça fait un moment que je cherche la syntaxe.... merci d'avance.
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Par défaut
    As tu essayé l'annotate?

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Salut.
    Un début d'idée (bricolage tout moche mais je ne trouve aucune option qui corresponde à ton besoin) : générer une 2e variable quanti à représenter qui n'est renseignée que pour une des 2 catégories. Et ensuite superposer des boxplots, avec la variable complète et l'incomplète, en changeant la couleur.
    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
    PROC TEMPLATE ;
       DEFINE STATGRAPH boxplot.lapin / STORE=work.modeles ;
          DYNAMIC couleur1 couleur2 ;
          BEGINGRAPH ;
    	    LAYOUT LATTICE / ROWS=2 ROWWEIGHTS=(.8 .2) ;
    		    LAYOUT OVERLAY ;
    	            BOXPLOT X=country Y=actual / FILLATTRS=(COLOR=couleur1) ;
    				BOXPLOT X=country Y=actualBis / FILLATTRS=(COLOR=couleur2) ;
    			ENDLAYOUT ;
    			LAYOUT GRIDDED / ROWS=2 ;
    				BLOCKPLOT X=country BLOCK=moy / VALUEHALIGN=CENTER 
    												DISPLAY=(label values) ;
    				BLOCKPLOT X=country BLOCK=et  / VALUEHALIGN=CENTER 
    												DISPLAY=(label values) ;
    			ENDLAYOUT ;
    		ENDLAYOUT ;
          ENDGRAPH ;
       END ;
    RUN ;
    ODS PATH (PREPEND) work.modeles ;
    PROC SQL ;
      CREATE TABLE work.sales AS
        SELECT *,
    	       CASE WHEN (country EQT "G") THEN actual ELSE . END AS actualBis,
    		   MEAN(actual) AS moy LABEL="Moy=",
    		   STD(actual) AS et LABEL="Std="
    	FROM sashelp.prdsale 
        WHERE FIRST(country) IN ("G","C") 
        GROUP BY country ;
    QUIT ;
    PROC SGRENDER DATA=work.sales TEMPLATE=boxplot.lapin ;
      DYNAMIC couleur1 = "red" couleur2 = "yellow" ;
    RUN ;
    A améliorer pour retrouver l'équivalent de l'INSETGROUP, ça sent l'incrustation d'un BLOCKPLOT avec les stats dedans. J'ai un peu commencé mais ça s'annonce plutôt chiant.

    étrangement quand j'utilise l'ODS j'ai pas la même chose que eux
    En fait, sans ODS GRAPHICS, tu utilises SAS/GRAPH. Le résultat est produit à l'intérieur de SAS, en écoutant les GOPTIONS, les AXIS, les tables ANNOTATE etc. Avec ODS GRAPHICS, la réalisation du résultat est sous-traitée à un moteur Java.
    Pas de convergence évidente des deux résultats donc.

    Bon courage.
    Olivier

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur d'études / Biostatisticien
    Inscrit en
    Décembre 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études / Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 354
    Par défaut
    Euh... du tout, mais c'est une piste que je vais explorer de suite.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    As tu essayé l'annotate?
    pas besoin d'annotate puisqu'une option CBOXFILL=(variable) fonctionne. il faut ajouter une variable à la table qui reprend les noms des couleurs souhaitées. Ca ne marche qu'en sortie SAS/GRAPH (marche pas avec ODS GRAPHICS puisque que, comme l'indique Olivier, ça joue sur les GOPTIONS et qu'elles ne sont pas utilisées par les sorties ODS GRAPHICS).

    ce n'est pas non plus directement possible avec SGPLOT ou SGPANEL... même avec une édition avec statistical graphics editor... on peut éditer le template du SGPANEL et commencer à grenouiller dedans mais est ce que cela vaut le coup pour un graphique...

    (maitenant, un coup d'illustrator et hop.. c'est réglé en 2 minutes... je sais, ce n'est pas très sport...)

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur d'études / Biostatisticien
    Inscrit en
    Décembre 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études / Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 354
    Par défaut
    Salut Olivier et merci pour ton code que je vais m'empresser de tester immédiatement!

    Je m'adressais à Manoutz tout à l'heure, je viens à peine de voir qu'on a posté en même temps lol.

    Merci à vous 3!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/03/2005, 12h37
  2. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  3. [VB6]Valeurs une collection renvoyée par la fonction d'une classe
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 30/03/2004, 11h04
  4. Réponses: 4
    Dernier message: 17/03/2004, 17h24
  5. Réponses: 14
    Dernier message: 15/01/2004, 01h15

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