☐ cooles neues Feature - nein, aber:
☑ könnte vielen Benutzern helfen !!!!
☑ entfernt etwas, das sich wie ein „Bug“ anfühlt
☐ schön zu haben
☐ niemand braucht es
Was hat Sie zu dieser Wunschliste inspiriert?
Wenn der Benutzer die Reihenfolge der Unterdiagramme im Graph Builder ändert, indem er die Beschriftung auf der X- oder Y-Achse an eine andere Position zieht, passieren seltsame Dinge:
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
In diesem Beispiel
- Wenn Sie „Höhe“ auf der Y-Achse nach oben ziehen , werden die Farben zurückgesetzt (!!)
- Das Ziehen der „Höhe“ auf der X-Achse nach rechts setzt die Farben NICHT zurück (?
)
- durch einfaches Greifen und Loslassen von „Höhe“ auf der X-Achse werden die Farben zurückgesetzt (!!!)
Darüber hinaus ist es beim Hinzufügen neuer Nebenhandlungen fast ein Glücksspiel, wie die Handlung aussehen wird:
Die Farb-/Markierungseinstellungen werden in neue Unterplots geklont ,wenn Variablen per Drag & Drop hinzugefügt werden
- rechts neben einer bestehenden X- Variable
- am Ende einer bestehenden Y- Variable
und die Einstellungen werden nicht geklont, wenn die neuen Variablen hinzugefügt werden
- links von einer bestehenden X-Variable
- zusätzlich zu einer vorhandenen Y-Variable (99 % der Anwendungsfälle!!!)
Welche Verbesserung würden Sie gerne sehen?
Bitte beheben Sie das Problem!
Wenn ein Benutzer die Reihenfolge von Unterhandlungen ändert oder neue Variablen hinzufügt, sollten auf einer Sanitärebene einige Aktionen stattfinden, sodass sich auf der Porzellanebene alles wie erwartet verhält.
Warum ist diese Idee wichtig?
1) Beim Ändern der Reihenfolge von Nebenhandlungen erwartet jeder Benutzer, dass nur die Nebenhandlungen ihre Position ändern – niemand würde erwarten, dass sich die Farbeinstellungen ändern.
2) Wenn ein Benutzer Variablen zur x- oder y-Achse hinzufügt, sollte das Ergebnis vorhersehbar sein. Das Ergebnis sollte dasselbe sein – unabhängig davon, ob Sie die neue Variable links, rechts, über oder unter den vorhandenen Variablen hinzufügen.
weitere Wünsche von 
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 534, 496 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 9 ) ) )
);
// change color/marker settings
scalebox = gb << get legend server();
scalebox << Legend Model(
9,
Properties( 0, {Line Color( 43 ), Marker( "Down Triangle" )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 0 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
);
// add second Y variable
gb << add variable( {:height, Role( "Y" )} );
gb << add variable( {:sex, Role( "X" )} );
Wait( 0 );
New Window( "Modal Dialog example",
<<TYPE></TYPE>
Während ich mit diesem Problem herumspiele, verstehe ich jetzt besser, warum sich Jmp so verhält.
Nach dem Ausführen des Skripts im ersten Beitrag sieht der Quellcode des Graph Builder-Berichts folgendermaßen aus:
Graph Builder(
Variables( X( :height ), X( :sex ), Y( :weight ), Y( :height ), Color( :sex ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 11 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 12 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
9,
Properties(
0,
{Line Color( 43 ), Marker( "Down Triangle" )},
Item ID( "F", 1 )
),
Properties(
1,
{Line Color( 0 ), Marker Size( 10 )},
Item ID( "M", 1 )
)
)}
)
)
);Man kann sehen, dass das erste Subplot mit Legende Nr. 9 einige spezielle Linien- und Markierungseinstellungen hat, die anderen Subplots (Legende Nr. 10-12) nicht. Daher werden die Einstellungen Nr. 9 automatisch an die anderen Subplots „übertragen“, da sie dieselbe Farbspalte und damit dieselben Legendeneinträge haben.
Dies liegt daran, dass zuerst die Einstellung angewendet und dann die neuen Unterplots generiert wurden. Dasselbe passiert, wenn der Benutzer die Einstellung mit nur einem einzigen Satz von Elementen in der Legende ändert:

Anschließend wird die neue Einstellung auf alle Plots gleichzeitig angewendet – und im Skript erscheinen die Änderungen nur für die erste Legendennummer.
Aktiviert der Benutzer die Legendeneinträge für die einzelnen Nebenplots, kann er die Nebenplots separat ändern.

Wechseln wir nun zu einem anderen Diagramm (dem Code unten) und sehen wir, was passiert. Hier hat jedes Unterdiagramm seine eigene Formatierung (keine gemeinsame Farbspalte) und wenn ich eine der Unterdiagrammgruppen (eine Spalte auf der Y-Achse) nehme und sie an eine andere Stelle ziehe, behalten die anderen Unterdiagramme ihre Einstellungen und nur die verschobenen Unterdiagramme vergessen ihre Einstellungen.
Das ist ein akzeptables Verhalten (**) - denn die Spalte ließe sich auch an eine ganz andere Stelle ziehen (im weiteren Verlauf des Videos: auf die x-Achse). Dann würde niemand erwarten, dass die Formatierung kopiert werden kann.
Am Ende des Videos wird die Spalte wieder an die ursprüngliche Position zurückgesetzt - und der Plot sieht anders aus als vorher. Das ist irgendwie OK - sollte es auch sein, denn wir haben ein solches Verhalten bereits akzeptiert (**):)
Es ist nur ein bisschen überraschend.
NB: Um das alte Diagramm wiederherzustellen, können Sie STRG + Z drücken oder beim Ziehen der Spalte ESC drücken.
dt = new table();
dt << add rows(1);
c1= dt << new column ("col1",Nominal,set each value (1));
c2= dt << new column ("col2",Nominal,set each value (2));
c3= dt << new column ("col3",Nominal,set each value (3));
c4= dt << new column ("col4",Nominal,set each value (4));
c5= dt << new column ("col5",Nominal,set each value (5));
c6= dt << new column ("col6",Nominal,set each value (6));
Graph Builder(
Size( 330, 347 ),
Show Control Panel( 0 ),
Graph Spacing( 10 ),
Variables(
X( :col1 ),
X( :col2 ),
X( :col3 ),
Y( :col6 ),
Y( :col5 ),
Y( :col4 )
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 7 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 3 ), Points( X, Y, Legend( 2 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 8 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 2, 3 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 3, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 3, 2 ), Points( X, Y, Legend( 5 ) ) ),
Elements( Position( 3, 3 ), Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
7,
Properties(
0,
{Line Color( 3 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
1,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Left Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
2,
Properties(
0,
{Line Color( 36 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
8,
Properties(
0,
{Line Color( 3 ), Marker( "Filled Up Triangle" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
3,
Properties(
0,
{Line Color( 38 ), Marker( "FilledCircle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
4,
Properties(
0,
{Line Color( 36 ), Marker( "Filled Down Triangle" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
9,
Properties(
0,
{Line Color( 3 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
5,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Right Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
6,
Properties(
0,
{Line Color( 36 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "1" )} ),
Dispatch( {}, "Y title", TextEditBox,
{Set Text( "6" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 1 title", TextEditBox,
{Set Text( "5" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 2 title", TextEditBox,
{Set Text( "4" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "X 1 title", TextEditBox, {Set Text( "2" )} ),
Dispatch( {}, "X 2 title", TextEditBox, {Set Text( "3" )} )
)
)