Salut,
J'essaie de trouver un moyen de prendre un instantané de seulement les cellules remplies d'un tableau de données (c'est-à-dire sans aucun panneau latéral, aucune ligne vide en bas ni aucune colonne vide à droite).
J'ai récemment découvert la zone d'affichage Data Grid Box, ce qui me permet presque de faire ce que je veux, mais j'ai besoin d'un moyen de la dimensionner de sorte que la grille de cellules remplie la remplisse complètement. Je peux le faire manuellement par essais et erreurs, mais j'aimerais le faire automatiquement.
Est-ce possible? Je joins ci-dessous un exemple de script qui illustre ce que je tente de faire.
Merci beaucoup
// début du programme;
Noms par défaut ici (1);
dt = Open ("$ SAMPLE_DATA / Popcorn.jmp");
dt << fermer le panneau latéral; // je veux seulement voir la grille de données;
// Je vais d'abord colorier des cellules pour illustrer quelque chose.
// Tout rendement inférieur à 9 sera peint en rouge;
CellsToPaint = dt << récupère les lignes où (sous forme de colonne (: rendement) <9);
: rendement << cellules de couleur (Couleur RVB (1, 0, 0), CellsToPaint);
// Tout rendement supérieur à 15 sera peint en vert;
CellsToPaint = dt << récupère les lignes où (sous forme de colonne (: rendement)> 15);
: rendement << cellules de couleur (couleur RVB (0, 1, 0), CellsToPaint);
// Placez-le dans une boîte de données afin que je puisse le copier sous forme d'image.
dgb = Boîte de données (); dgb << Set Data Table (dt);
// Si je ne le redimensionne pas, des lignes et des colonnes vierges supplémentaires seront visibles.
// Je peux le réduire manuellement - mais je veux automatiser ce bit si je peux;
dgb << set width (325);
dgb << set height (340);
// Voyons ce que j'ai maintenant;
nouvelle fenêtre ("My Data Grid Box", dgb);
Path = "$ DESKTOP / snapshot.png";
dgb << sauvegarde image (Path, "png");
// Rouvrez-le dans un bloc d'image.
pb = boîte à images (open (Path, png));
// Et affiche l'image finale;
nouvelle fenêtre ("Mon instantané", panneau ("Mon instantané", pb));
// fin du programme;
Oui, je pensais que ces références aux couleurs existaient pour une raison
. . .
Bien que 'NumberColBox ()' et StringColBox () 'comprennent' << textColor () ”et“ << backgroundColor () ”, ils fonctionnent sur toute la colonne, comme on pourrait s'y attendre.
En ce qui concerne la manipulation des panneaux latéraux, veuillez utiliser support@jmp.com si vous constatez un comportement inattendu.
Bonjour Ian - Oui, c'est vrai, je pourrais le faire de cette façon. Cependant, la motivation sous-jacente à la question était que je souhaitais conserver la couleur de cellule que j'avais intégrée dans le tableau de données d'origine. Je ne pense pas pouvoir colorer les cellules individuellement dans une zone de tableau de la même manière que je peux colorer les cellules dans un tableau de données, n'est-ce pas?
Une autre chose qui me dérange, c’est que lorsque j’ai assemblé l’exemple au début de ce fil, les panneaux latéraux de la table de données étaient toujours supposés être masqués avant que je ne prenne la capture d’écran (d’où le "panneau latéral fermé" ligne). Cependant, je viens de remarquer que j'ai commis une erreur: cette ligne devrait être "dt << fermer les panneaux latéraux (1)". Cela semble fonctionner correctement, mais lorsque la table de données est ensuite copiée dans la boîte de données, le panneau latéral réapparaît parfois (mais pas toujours). Je vois que la boîte de données a également une propriété "
Merci beaucoup,
David
Étant donné la manière dont vous avez décrit ce qui est nécessaire, vous pouvez également essayer:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Popcorn.jmp" );
tb = TableBox();
for(c=1, c<=NCol(dt), c++,
thisCol = Column(dt, c);
if ((thisCol << getDataType) == "Numeric",
// Numeric column
tb << Append(NumberColBox(thisCol << getName, thisCol << getValues)),
// Assumed Character column
tb << Append(StringColBox(thisCol << getName, thisCol << getValues))
);
);
Close(dt, NoSave);
tb << savePicture("$DESKTOP/snapshot.png", "png");