Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Existe-t-il une astuce pour qu'une carte thermique affiche toutes les lignes même lorsqu'un filtre de données en élimine certaines ?
Considérez ce tracé créé avec "Big Class.jmp" :
Graph Builder(
Size( 673, 714 ),
Variables( X( :sex ), Y( :age ) ),
Elements( Heatmap( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Add Filter( columns( :height ), Where( :height >= 65.137 & :height <= 70 ) )
)
)
Si vous regardez ce graphique, vous voyez que la rangée correspondant à l’âge de 13 ans est complètement absente. Je me rends compte que le filtre de données local a supprimé toutes les entrées pour l'âge de 13 ans, mais existe-t-il un bon moyen de faire en sorte que la ligne pour 13 ans apparaisse toujours, c'est-à-dire sous la forme d'une ligne entièrement blanche.
Exploration et visualisation des donnéesRe : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Changez la colonne Âge d'Ordinal à Continu et vous obtiendrez l'axe Y complet que vous souhaitez

Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Malheureusement, dans notre cas, cette variable est réellement nominale, donc cela ne fonctionnera pas pour notre problème spécifique.
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Vous pouvez créer une carte de forme simple contenant toutes les catégories, puis faire glisser votre colonne de comptage sur la carte, et elle affichera une carte choroplèthe, qui est une carte thermique. Vous devrez créer une nouvelle colonne qui est une combinaison de vos variables X et Y actuelles, qui pointera vers l'élément spécifique de la carte, mais elle fera ce que vous voulez.
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Cela semble pouvoir fonctionner. J'ai lu la documentation sur les cartes Shape, mais je ne suis pas sûr de les comprendre. Comment réaliser la carte que vous décrivez ? Et comment puis-je le charger ?
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Les cartes peuvent être enregistrées dans
C:\Users\\AppData\Roaming\SAS\JMP\Maps
ou, ils peuvent être enregistrés dans $TEMP puis référencés en transmettant l'emplacement à Graph Builder. J'ai pris le temps de développer votre exemple dans un script qui crée le fichier Shape Map, les enregistre dans $TEMP et enfin représente graphiquement les données.

Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// Create the Shape Map tables
dtXY = New Table( "Class-XY",
New Column( "Shape", modeling type( Ordinal ) ),
New Column( "Part", Modeling type( Ordinal ) ),
New Column( "X" ),
New Column( "Y" )
);
dtName = New Table( "Class-Name",
New Column( "Shape", Modeling type( Ordinal ) ),
New Column( "Cell", character )
);
dtName:Cell << set property( "Map Role", Map Role( Shape Name Definition ) );
// Populate the tables
ages = Associative Array( dt:Age << get values ) << get keys;
sexes = Associative Array( dt:Sex << get values ) << get keys;
ID = 0;
For Each( {sex, xi}, sexes,
For Each( {age, yi}, ages,
theName = Char( sex ) || Char( age );show(thename);
ID++;
dtName << add rows( 1 );
dtName:Shape[N Rows( dtName )] = ID;
dtName:Cell[N Rows( dtName )] = theName;
dtXY << add rows( 1 );
dtXY:Shape[N Rows( dtXY )] = ID;
dtXY:Part[N Rows( dtXY )] = ID;
dtXY:X[N Rows( dtXY )] = xi;
dtXY:Y[N Rows( dtXY )] = yi;
dtXY << add rows( 1 );
dtXY:Shape[N Rows( dtXY )] = ID;
dtXY:Part[N Rows( dtXY )] = ID;
dtXY:X[N Rows( dtXY )] = xi;
dtXY:Y[N Rows( dtXY )] = yi + 1;
dtXY << add rows( 1 );
dtXY:Shape[N Rows( dtXY )] = ID;
dtXY:Part[N Rows( dtXY )] = ID;
dtXY:X[N Rows( dtXY )] = xi + 1;
dtXY:Y[N Rows( dtXY )] = yi + 1;
dtXY << add rows( 1 );
dtXY:Shape[N Rows( dtXY )] = ID;
dtXY:Part[N Rows( dtXY )] = ID;
dtXY:X[N Rows( dtXY )] = xi + 1;
dtXY:Y[N Rows( dtXY )] = yi;
)
);
// Save the Map tables to the Temp Directory
close( dtXY, Save( "$temp\mycell-XY.jmp" ));
close( dtName, Save( "$temp\mycell-Name.jmp") );
// Add the concatenated Sex/Age column to the data table
dt << New Column( "Cell", character, set each value( :Sex || Char(:Age)));
// Create the Heat map using the Shape Map
gb = Graph Builder(
Size( 522, 456 ),
Show Control Panel( 0 ),
Variables(
Color( :height ),
Shape(
:Cell,
Set Shape File( "$TEMP/mycell-Name.jmp" )
)
),
Elements(
Map Shapes(
Legend( 3 ),
Summary Statistic( "N" ),
Show Missing Shapes( 1 )
)
),
Local Data Filter(
Add Filter( columns( :height ), Where( :height >= 65.137 ) )
),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( -2.44489795918367 ),
Max( 6.44489795918367 ), Inc( 1 ), Minor Ticks( 0 ),
Label Row(
{Automatic Font Size( 0 ), Automatic Tick Marks( 0 ),
Show Major Labels( 0 ), Show Major Ticks( 0 ), Show Minor Ticks( 0 )
}
)}
),
Dispatch(
{},
"",
ScaleBox( 2 ),
{Min( -0.0843053453846471 ), Max( 7.18430534538465 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row(
{Automatic Font Size( 0 ), Automatic Tick Marks( 0 ),
Show Major Labels( 0 ), Show Major Ticks( 0 ), Show Minor Ticks( 0 )
}
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "Count" )} )
)
);
// Add the cell labelling to the graph
Report( gb )[FrameBox( 1 )] << Add Graphics script(
For Each( {sex, xi}, sexes,
Eval( Eval Expr( Text( Center Justified, {Expr( xi + .5 ), .5}, Expr( sex ) ) ) )
);
For Each( {age, yi}, ages,
Eval( Eval Expr( Text( Center Justified, {.5,Expr( yi + .5 ) }, Expr( char(age) ) ) ) )
);
);
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Parfois, l'activation de l'option Afficher les lignes exclues peut également fonctionner. Pour activer Afficher les lignes exclues, maintenez la touche Maj enfoncée lorsque vous cliquez sur le triangle rouge

mais cela peut finir par afficher certaines lignes que vous ne voudriez peut-être pas voir (vous auriez pu exclure des lignes de la table de données par exemple).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(626, 662),
Show Control Panel(0),
Ignore Platform Preferences(1),
Show Excluded Rows(1),
Variables(X(:sex), Y(:age)),
Elements(Heatmap(X, Y, Legend(2))),
Local Data Filter(Add Filter(columns(:height), Where(:height >= 65.137)))
);
En fonction de vos données, les fichiers Shape peuvent être une bonne idée, comme Jim l'a déjà suggéré.
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Jarmo,
Votre réponse est clairement un meilleur choix, cependant, la sélection interactive de
Afficher les lignes exclues
n'apparaît pas comme option dans ma liste de sélections

L'option apparaît dans mes préférences. Avez-vous une idée du problème ?
Re : Comment forcer la carte thermique à afficher toutes les lignes/colonnes même lorsqu'elles sont vides ?Vous devez maintenir la touche MAJ enfoncée lorsque vous cliquez sur le menu du triangle rouge (JMP possède quelques-unes de ces fonctionnalités "cachées" dans les menus du triangle rouge). J'en ai entendu parler dans un article de Julian tel que celui-ci https://community.jmp.com/t5/Discussions/Exclude-and-Show-Data-in-Fit-Y-by-X-and-Graph-Builder /mp/50457/highlight/true#M28685
Tracer les points de données exclus et non masqués dans Graph Builder