J'ai une donnée avec toutes les valeurs numériques. Comment puis-je tracer un mélange de graphiques à barres mixtes empilés et côte à côte dans le générateur de graphiques. Je veux tracer mes graphiques comme indiqué dans les 2 images ci-jointes.
La première image ne montre que le pourcentage de chaque variable dans un diagramme à barres empilé et côte à côte, mais la deuxième image montre également la valeur de la variable.
Si vous pouvez partager la procédure détaillée ou le script JSL, ce serait d'une grande aide.
Vous trouverez ci-dessous les exemples de données.
| Étudiant |
Total_Math_Physique |
Mathématiques |
La physique |
Total_Badminton_Football |
Badminton |
Football |
| UN |
50 |
30 |
20 |
40 |
dix |
30 |
| B |
40 |
25 |
15 |
20 |
dix |
dix |
| C |
30 |
15 |
15 |
50 |
40 |
dix |
Merci 


Salut @Rajat
Je pense que nous pouvons nous rapprocher de ce que vous voulez avec seulement un peu de travail :
J'ai joint le tableau de données restructuré avec le script enregistré afin que vous puissiez rechercher par vous-même. Voici ce que j'ai fait :
1. Empilez votre tableau d'origine :
Current Data Table() << Stack(
columns( :Maths, :Physics, :Badminton, :Football ),
Source Label Column( "Label" ), Stacked Data Column( "Data" )
);

Cela donne ceci :
2. Nous avons besoin d'une variable qui nous permettra de diviser le regroupement de l'activité (maths/physique vs badminton/football), donc je vais ajouter une nouvelle colonne, Groupe, et itérer AABBAABB, etc. Vous pouvez le faire comme vous le souhaitez comme, vous avez juste besoin d'une variable nominale. Voici une autre façon avec Sequence() :
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3. Générateur de graphiques :
J'ai modifié un certain nombre de paramètres pour que le graphique ressemble à ce que j'ai fait, mais voici les étapes de base et une courte vidéo :
Pas:
- Faites glisser la colonne "Données" vers le rôle Y
- Faites glisser les deux colonnes "Total", en même temps, vers le haut de la zone de dépôt Y
- Désactivez les points et activez l'élément Bar
- Modifiez le style de barre du graphique inférieur, "Données", en "Empilé"
- Faites glisser "Label" vers le rôle de superposition
- Sous les commandes des barres supérieures, désactivez le rôle de superposition sous "Variables"
- Faites glisser "Groupe" vers le rôle de l'axe X
- Désactivez la variable "Groupe" pour le tracé supérieur dans le panneau de configuration
- Faites glisser "Étudiant" vers le rôle du groupe X
- Remplacez "Statistique récapitulative" pour le graphique inférieur par "% du facteur" (j'ai omis de le montrer dans la vidéo)
- Remplacez l'étiquette par "Étiquette par valeur" pour chaque barre
Cela donne:
De là, vous pouvez faire beaucoup. Pour le graphique final que j'ai montré au début, j'ai également fait quelques ajouts comme changer la largeur des barres (clic droit sur un graphique> personnaliser), supprimé les étiquettes de l'axe X (double-cliquer sur l'axe et décocher les étiquettes), et également changé l'espacement du graphique ( Triangle rouge> Espacement des graphiques). Voici un script pour le graphique final :
Graph Builder(
Size( 799, 566 ),
Show Control Panel( 0 ),
Graph Spacing( 2 ),
Variables(
X( :Group ),
Y( :Total_Math_Physics ),
Y( :Total_Badminton_Football, Position( 1 ) ),
Y( :Data ),
Group X( :Student ),
Overlay( :Label )
),
Elements(
Position( 1, 1 ),
Bar( Y( 1 ), Y( 2 ), Overlay( 0 ), Legend( 5 ), Label( "Label by Value" ) )
),
Elements(
Position( 1, 2 ),
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
SendToReport(
Dispatch(
{},
"Group",
ScaleBox,
{Min( -1.167069008972 ), Max( 2.147362067225 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Show Major Labels( 0 ) )}
),
Dispatch(
{},
"Total_Math_Physics",
ScaleBox,
{Min( 0.23109243697479 ), Max( 55 ), Inc( 10 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox,
{Min( 0 ), Max( 1.1209749344709 ), Inc( 0.2 ), Minor Ticks( 0 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Example" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 2 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 3 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 4 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 5 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 6 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
J'espère que ça aide!
@julien
Salut @Rajat
votre question est bonne mais je ne pense pas que JMP puisse le faire à la volée.
s'il vous plaît voir ci-joint mon fichier avec les scripts pour produire la sortie. mon approche est plus une solution low-tech. J'ai ajouté des colonnes pour calculer les parts de chaque sujet et des (fausses) lignes pour permettre l'effet côte à côte. une fois cela fait, j'ai modifié certaines choses dans les propriétés du graphique pour compléter l'illusion.
merci de nous faire savoir si cela va dans le bon sens.
Ron
