Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesAfin d'accélérer une étape d'un flux de travail, j'essaie d'écrire un script qui définit automatiquement les limites d'axe de tous les axes Y dans un générateur de graphique à certaines valeurs (quantiles) qui peuvent être calculées à partir des données affichées.
Le projet était :
- Obtenir les étiquettes des axes
- Calculez les limites souhaitées en utilisant les colonnes correspondantes dans le tableau de données
- Fixez les limites en conséquence.
Cela s'avère plus compliqué que prévu en premier lieu, car un filtre de données local peut être utilisé, des étiquettes peuvent être modifiées, etc.
Je préférerais donc obtenir les différentes valeurs Y pour chaque axe directement à partir du générateur de graphiques. Comment obtenir les valeurs d'axes spécifiques ?
Par exemple, si j'ai
R = Current Report();
AB = R[axisbox(2)] ;
ab_min = -100; // How to access the value list containing all the values that are used by default to compute axis limits of AB here?
ab_max = 100;
AB << Min(ab_min);
AB << Max(ab_max);
En utilisant "la croix", je me suis retrouvé avec quelques FrameBoxes, mais je n'arrivais pas à comprendre comment en obtenir des valeurs.
Des idées ou une meilleure façon de le faire?
Merci Robb
Personnalisation de masseRe : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesQuelque chose comme ça devrait vous donner les valeurs des marqueurs
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
frame = Report(gb)[FrameBox(1)];
frames = Report(gb) << XPath("//FrameBox");
marker_segs = (frames << Find Seg(Marker Seg(1)));
xm = marker_segs << Get X Values;
ym = marker_segs << Get Y Values;
show(xm, ym);
exporter les valeurs x&y (coordonnées) à partir du générateur de graphiques une fois que jmp trouve automatiquement les points centroïdes d'un polygone
Comment obtenir des informations sur la boîte de légende, comme la couleur et le type de marqueur
Re : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesActuellement, je ne vois pas de moyen fiable d'obtenir le nom de la colonne ou de la colonne qui est tracé sur un axe à partir du générateur de graphiques. La seule façon à laquelle je peux penser est d'obtenir l'étiquette de l'axe, mais cela a peut-être été modifié par l'utilisateur afin que le texte ne soit plus le nom de la colonne. De plus, les colonnes peuvent être transformées/modifiées directement dans le générateur de graphes. Si une telle colonne est tracée sur un axe, je ne pourrais pas du tout trouver cette colonne dans la table de données. Et oui, si je trouvais la bonne colonne dans la table de données, je devrais appliquer les paramètres de filtre du filtre de données local.
Si je pouvais obtenir les valeurs de données tracées directement à partir du générateur d'axes/graphiques d'une manière ou d'une autre, il serait sans importance quel type de colonne est tracé, quel filtre est appliqué, quelles étiquettes l'utilisateur a changé et quoi d'autre pourrait éventuellement mal tourner et casser mon script .
Re : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesPourquoi cela ne fonctionnerait-il pas pour vous d'obtenir simplement les valeurs de la table de données ?Si des lignes ont été exclues de l'analyse, ou si un filtre de données local a été appliqué, il suffit alors d'appliquer ces conditions.
names default to here(1);
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
allHeights = dt:height << get values;
// or if you want just the unique values of the column height, this
// is my prefered way to get them
uniqueHeights = associative array(dt:height<<GET values=""> </GET>
Re : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesSalut @jthi , Salut @txnelson
merci, mais je pense que nous avons un petit malentendu.
Je ne veux pas obtenir les min et max actuels de tous les axes y. Je voudrais obtenir toutes les valeurs y correspondantes des données affichées afin de calculer des limites plus appropriées.
Par exemple, si pour l'axe ay 1000 valeurs sont affichées, j'aimerais obtenir une liste ou un vecteur de ces 1000 valeurs y.
Re : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesLe JSL suivant renverra une liste de tous les AxisBox() pour le rapport actuel.AxisBox(1) et AxisBox(2).Donc, ce qui peut être fait est de traiter les entrées, 2, 4, 6 etc. pour accéder à tous les AxisBox(2)s
r=current report();
yMaxs = ((r[1]<<TOP parent=""></TOP>
Re : Script pour définir toutes les limites d'axe dans un générateur de graphique sur des valeurs calculées à partir des données affichéesEst-ce que quelque chose comme ça fonctionnerait? Utilisez XPath pour obtenir toutes les boîtes d'axes, puis déterminez quels sont les axes Y. Après cela, vous devriez pouvoir les manipuler
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
axisboxes = Report(gb) << XPath("//AxisBox");
/*y-axis seems to be even numbers*/
yaxis = axisboxes[2::N Items(axisboxes)::2];
ymin = yaxis << get min;
ymax = yaxis << get max;
show(ymin, ymax);