☐ nueva característica interesante: no, pero:
☑ podría ayudar a muchos usuarios!!!!
☑ elimina algo que parece un "error"
☐ bueno tener
☐ nadie lo necesita
¿Qué inspiró esta solicitud de lista de deseos?
Cuando el usuario cambia el orden de la trama secundaria en el Generador de gráficos arrastrando la etiqueta en el eje X o Y a otra posición, suceden cosas extrañas:
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
En este ejemplo,
- arrastrar "altura" en el eje Y hacia la parte superior restablece los colores (!!)
- arrastrar"altura" en el eje X hacia la derecha NO restablece los colores (?
)
- simplemente agarrar y soltar "altura" en el eje X restablece los colores (!!!)
Además, al agregar nuevas subtramas, es casi una apuesta cómo se verá la trama:
La configuración de color/marcador se clona en nuevas subtramas,si las variables se agregan mediante arrastrar y soltar
- a la derecha de una variable X existente
- en la parte inferior de una variable Y existente
y las configuraciones no se clonan si se agregan las nuevas variables
- a la izquierda de una variable X existente
- en la parte superior de una variable Y existente (¡¡99% de los casos de uso!!!)
¿Cuál es la mejora que le gustaría ver?
¡Solucione el problema!
Cuando un usuario cambia el orden de las subtramas o agrega nuevas variables, se deben realizar algunas acciones en una capa de plomería de modo que en la capa de porcelana todo se comporte como se esperaba.
¿Por qué es importante esta idea?
1) Al cambiar el orden de las subtramas, cada usuario espera que solo las subtramas cambien su posición; nadie esperaría que la configuración de color cambie.
2) Cuando un usuario agrega variables al eje xoy, el resultado debe ser predecible. El resultado debería ser el mismo, independientemente de si agrega la nueva variable a la izquierda, a la derecha, arriba o abajo de las variables existentes.
otros deseos de 
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>
Mientras juego con este problema, ahora entiendo mejor por qué Jmp se comporta así.
Después de ejecutar el script en la primera publicación, el código fuente del informe Graph Builder se ve así:
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 )
)
)}
)
)
);Se puede ver que la primera subtrama con la Leyenda #9 tiene una configuración especial de Línea y Marcador, las otras Subtramas (Leyenda #10-12) no la tienen. Entonces, la configuración #9 se "transmite" automáticamente a las otras subtramas porque comparten la misma columna de Color y, por lo tanto, las mismas entradas de leyenda.
Esto se debe a que primero se aplicó la configuración y luego se generaron las nuevas subtramas. Lo mismo sucede si el usuario cambia la configuración con un solo conjunto de elementos en la leyenda:

Luego, la nueva configuración se aplica a todos los gráficos a la vez y en el script los cambios solo aparecen para el primer número de leyenda.
Si el usuario activa las entradas de la leyenda para cada subtrama, puede cambiar las subtramas por separado.

Pasemos ahora a otro gráfico (el código siguiente) y descubramos qué sucede. Aquí, cada subtrama tiene su propio formato (sin columna de color común) y cuando tomo uno de los grupos de subtrama (una columna en el eje Y) y lo arrastro a otra ubicación, las otras subtramas mantienen su configuración y solo las subtramas movidas se olvidan. sus ajustes.
Este es un comportamiento aceptable (**), porque la columna también podría arrastrarse a una ubicación completamente diferente (más adelante en el video: al eje x). Entonces nadie esperaría que el formato pudiera copiarse.
Al final del vídeo, la columna se vuelve a colocar en su posición original y la trama se ve diferente a como se veía antes. De alguna manera esto está bien; debería estarlo, porque ya aceptamos ese comportamiento (**):)
Es un poco sorprendente.
NB: Para recuperar el gráfico anterior, se puede presionar CTRL + Z, o mientras arrastra la columna, presionar ESC.
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" )} )
)
)