No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Todo,
Tengo un script con una función que crea un GraphBuilder. Luego se empaqueta en cuadros de visualización y se coloca en una nueva ventana. Por alguna razón, los comandos para cambiar el tamaño de FrameBox desde la función se ignoran, y solo puedo cambiarlo cuando se crea la ventana. ¿Por qué? Me gustaría que esta funcionalidad estuviera dentro de la función, para que genere un gráfico sin necesidad de ajustes adicionales. Cambiar el título funciona desde la función, ¿por qué no cambiar el tamaño?
Aquí hay un ejemplo con 3 intentos diferentes de cambiar el tamaño de FrameBox: solo el tercero funciona.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction= Function( {dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""},
groupByColumn = Column( dt, groupByColumnString );
cb = Context Box(
gb = Graph Builder(
Size( 350, 600 ),
Ignore Platform Preferences( 1 ),
Show Control Panel( 0 ),
Variables( X( Column( X_Parameter ) ), Y( Column( Y_Parameter ) ), Overlay( groupByColumn ) ),
);
rgb = gb << Report;
(rgbOB = ((rgb << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1])) << Set Title( titleText );
//Attempt #1
(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
//Attempt #2
//(rgbOB << XPath( "//FrameBox" )) << Frame Size( 350, 200 );
);
Return( cb );
);
lub = Lineup Box( N Col( 3 ) );
lub << Append( GBfunction( dt, X_Parameter, Y_Parameter, groupColumn, titleText ) );
ob_group = Outline Box( "GB Function example: " || (dt << Get Name) );
ob_group << Append( lub );
nw = New Window( (dt << get name), ob_group );
//Attempt #3
rgb = ob_group << XPath( "//OutlineBox[@helpKey='Graph Builder']" );
//(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
Automatización y scriptingRe: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Creo que cambiar el tamaño del marco no funciona correctamente ya que el marco aún no se ha visualizado, algunos cambios de tamaño automáticos toman el control y potencialmente también puede haber algunos problemas de sincronización.
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Intenté configurar el estiramiento automático en 0 y el estiramiento en ninguno, obviamente, no ayudó.:(
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Descubrir qué causa que el tamaño sea extraño no siempre es fácil. ¿Hay alguna razón específica por la que no se utiliza la función << Tamaño del Constructor de Gráficos? Sé que a veces puede requerir cálculos previos, por ejemplo, al usar grupos o encapsular.
Ver más...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
groupByColumn = Column(dt, groupByColumnString);
cb = Context Box(
gb = dt << Graph Builder(
Size(100, 100),
Ignore Platform Preferences(1),
Show Control Panel(0),
//Fit To Window("Off"),
Variables(
X(Column(X_Parameter)),
Y(Column(Y_Parameter)),
Overlay(groupByColumn)
),
);
);
rgb = Report(gb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) << Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
gb << Size(400, 250);
Return(cb);
);
lub = Lineup Box(N Col(3));
lub << Append(GBfunction(dt, X_Parameter, Y_Parameter, groupColumn, titleText));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), ob_group);
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Sí, hay una razón: necesito imitar la misma apariencia que tenía en iteraciones anteriores del script que utilizaba Fit Y by X.
GraphBuilder cambiará el tamaño de FrameBox dependiendo de otros elementos en el cuadro de visualización de GB (por ejemplo, el tamaño del eje o de la leyenda).
Al final, estos gráficos se incluirán en un informe donde el tamaño del área gráfica (es decir, el tamaño exacto del FrameBox) debe ser consistente entre los diferentes gráficos del informe. Por eso.
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Una opción podría ser crear primero la nueva ventana.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({lub, dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
cb = Context Box(
gb = dt << Graph Builder(
Size(600, 600),
Ignore Platform Preferences(1),
Show Control Panel(0),
Fit To Window("Off"),
Variables(X(Eval(X_Parameter)), Y(Eval(Y_Parameter)), Overlay(Eval(groupByColumnString))),
)
);
rgb = Report(gb);
lub << Append(cb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) <<
Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
fbs << Frame Size(400, 250);
);
lub = Lineup Box(N Col(3));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), Window View("Invisible"), ob_group);
GBfunction(lub, dt, X_Parameter, Y_Parameter, groupColumn, titleText);
nw << Show Window(1);
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Tu ejemplo funciona tal como está escrito. Sin embargo, al intentar implementarlo en mi script real, al final, cambia el tamaño del FrameBox de Size(350, 600) a otro.
Básicamente, tengo LineUpBox por una razón: genero varios gráficos en esa caja, y cada tercero (o para ser precisos, cada uno situado más a la derecha de cada fila) muestra la leyenda (igual para todos los gráficos). Así que, al ejecutarlo con tres gráficos, el tamaño final de los tres FrameBoxes es:
{{350, 220}, {350, 220}, {350, 240}}
en lugar de {350, 200} al que estoy intentando cambiarle el tamaño o el {350, 600} inicial con el que GraphBuilder lo creó.
Intentaré hacer un ejemplo práctico que rompa tu sugerencia más adelante.
Re: No se puede cambiar el tamaño de FrameBox al crear un informe: solo cuando se crean todos los cuadros de visualización Y la ventana.Este ha sido un error con GraphBuilder desde siempre, y no hay una solución sencilla. Tengo un programa externo que puede enviar notificaciones a JMP (es un servidor local que JMP inicia con el comando "runcommand") y le envío un mensaje para que haga ping a JMP en 0,25 segundos. Con ese ping, activo el forzado del tamaño del marco, que ahora ocurre después de que se hayan pintado todos los cuadros.