JMP Pro 17.2
Tengo un gráfico en el que quiero usar superposición (para separar líneas) y color (para colorear líneas relacionadas de la misma manera). Esto funciona muy bien, pero pierdo todos los colores al extraer el cuadro de marco. Puedo conservar los colores tomando el cuadro de imagen, pero no sé cómo calcular el desplazamiento izquierdo en el gráfico antes de donde comienza el eje x. Parece que debería usar el ancho del eje y más la etiqueta del eje y (cuadro de edición de texto), sin embargo, el cuadro de edición de texto devuelve un ancho de -1.
¿Existe una buena manera de calcular el margen izquierdo o (mejor) una manera de mantener todos los colores en el cuadro de marco?
// illustrate technique and problem
dt = New Table( "frame_box_ex",
Add Rows( 48 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8,
1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1.45808886692691, 2.39035819973415, 2.99796363989942, 4.0175538469545,
4.97635791617404, 5.26099494066037, 6.35297458603344, 7.08128130389934,
1.28206570793684, 2.65813273844257, 3.90780332034481, 5.56931861718803,
6.5102957541246, 7.85452087528389, 8.38346720371831, 9.83684443692199,
1.07112111561808, 1.80813159968191, 3.60012537918958, 4.59349059340839,
6.0331086735015, 7.38976749487193, 8.09249962943829, 8.6144549883821,
0.793139090953735, 1.29469742405061, 1.76519280701643, 2.08182485552223,
2.78446654871733, 3.65492098470701, 4.60137160145799, 5.4641050584207,
-0.0498633817348688, 0.867775467257285, 2.19640092615135,
3.8415359972872, 5.73235903219136, 6.60516876928658, 7.45020127543143,
8.66546760100397, 0.781073560404989, 1.96654139416073, 2.08763174310172,
2.25180062442375, 3.88484451908061, 4.67635031701802, 5.77656366166124,
6.97420411204293]
)
),
New Column( "Unit",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6]
)
),
New Column( "Group",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values(
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
)
)
);
gb = dt << Graph Builder(
Size( 600, 600 ),
Variables( X( :X ), Y( :Y ), Overlay( :Unit ), Color( :Group ) ),
Elements( Line( X, Y, Legend( 14 ) ) ),
SendToReport(
Dispatch(
{},
"X",
ScaleBox,
{Min( 0 ), Max( 8 ), Inc( 1 ), Minor Ticks( 0 )}
)
)
);
nw = New Window( "for testing",
Outline Box( "complicated plot",
Spacer Box( Size( 2, 10 ) ),
lu1 = Lineup Box( N Col( 3 ), Spacing( 0 ) )
)
);
lu1 << Append( Report( gb )[AxisBox( 2 )] );
lu1 << Append( Report( gb )[FrameBox( 1 )] );
lu1 << Append( Report( gb )[LegendBox( 1 )] );
//end of row
lu1 << Append( Spacer Box() );
lu1 << Append( Report( gb )[AxisBox( 1 )] );
lu1 << Append( Spacer Box() );
//end of row
lu1 << Append( Spacer Box() );
lu1 << Append( insrt_icons = H List Box() );
lu1 << Append( Spacer Box() );
numXAxisWidth = (gb << report)[AxisBox( 1 )] << get width;
numSteps = N Items( Associative Array( Column( dt, "X" ) ) << get keys );
numOneIncr = (numXAxisWidth) / (numSteps);
For( _i = 1, _i <= numSteps, _i++,
insrt_icons << Append( Spacer Box( Size( numOneIncr, numOneIncr ), Color( _i ) ) )
);
¡Enfoque interesante! Si puedes mantener todo dentro del cuadro del marco, será más fácil... simplemente úsalo con el sistema de coordenadas del gráfico. Sospecho que tendrás que luchar con el sistema de coordenadas de números enteros para los cuadros de visualización, además de intentar encontrar los orígenes adecuados; También desconectarás el gráfico de los ejes (arrastrar las escalas, etc. no funcionará).
dt = New Table( "frame_box_ex",
Add Rows( 48 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6,
7, 8]
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1.45808886692691, 2.39035819973415, 2.99796363989942, 4.0175538469545, 4.97635791617404, 5.26099494066037, 6.35297458603344,
7.08128130389934, 1.28206570793684, 2.65813273844257, 3.90780332034481, 5.56931861718803, 6.5102957541246, 7.85452087528389,
8.38346720371831, 9.83684443692199, 1.07112111561808, 1.80813159968191, 3.60012537918958, 4.59349059340839, 6.0331086735015,
7.38976749487193, 8.09249962943829, 8.6144549883821, 0.793139090953735, 1.29469742405061, 1.76519280701643, 2.08182485552223,
2.78446654871733, 3.65492098470701, 4.60137160145799, 5.4641050584207, -0.0498633817348688, 0.867775467257285, 2.19640092615135,
3.8415359972872, 5.73235903219136, 6.60516876928658, 7.45020127543143, 8.66546760100397, 0.781073560404989, 1.96654139416073,
2.08763174310172, 2.25180062442375, 3.88484451908061, 4.67635031701802, 5.77656366166124, 6.97420411204293]
)
),
New Column( "Unit",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,
6, 6]
)
),
New Column( "Group",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values(
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2]
)
)
);
gb = dt << Graph Builder(
Size( 600, 600 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ), Overlay( :Unit ), Color( :Group ) ),
Elements( Line( X, Y, Legend( 14 ) ) ),
SendToReport(
Dispatch( {}, "X", ScaleBox, {Min( 0 ), Max( 9 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch( {}, "Y", ScaleBox, {Min( -1 ), Max( 10.1 ), Inc( 2 ), Minor Ticks( 0 )} )
)
);
Report( gb )[framebox( 1 )] << addgraphicsscript(
Text( {1, 8}, JMP Version() );
For( here:x = 1, here:x < 8, here:x += 1,
Fill Color( HLS Color( here:x / 9, .5, 1 ) );
Rect( here:x, -.2, here:x + 1, -.8, 1 );
Fill Color( "white" );
Circle( {x + .5, -.5}, .25, "FILL" );
Text Color( "black" );
Text Size( 12 );
Text( center justified, {x + .5, -.65 /*vertical centering depends on text size*/}, Substr( "ABCDEFG", x, 1 ) );
);
);
Add a graphics script to the framebox to make custom displays.Agregue un script de gráficos al cuadro de marco para crear visualizaciones personalizadas.