Sección transversal de un gráfico 2D¿Cómo puedo trazar la variación en un gráfico 2D a lo largo, por ejemplo, verticalmente en un gráfico de líneas 1D en JMP?
Vengo de Matlab (un equivalente en MATLAB es algo así como este )
Gracias,
Modelado estadístico avanzadoAutomatización y secuencias de comandosInvestigación de Consumidores y MercadosAcceso a los datosRe: Corte transversal de un gráfico 2DAhora hay una solución disponible a través de Barra de herramientas del generador de gráficos

Re: Corte transversal de un gráfico 2D¡Ja!@ih Se me adelantó. Empecé un ejemplo similar pero luego estuve en una reunión durante tres horas.
Names Default to Here( 1 );
dt = New Table( "Slicing",
Add Rows( 2 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [-1, 1] )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [-1, 1] )
),
New Column( "Z",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
100 + 25 * :X - 3 * :X ^ 2 - 15 * :Y - 5 * :Y ^ 2 - 7 * :X * :Y
)
)
);
dt << Surface Plot(
Columns( :Z ),
Surface Color Theme( "Green to Black to Red" ),
Surface Color Theme2( "Green to White to Red" ),
Surface Color Theme3( "White to Black" ),
Surface Color Theme4( "Blue to Gray to Red" ),
Response Column Color Theme( "Blue to Green to Red" ),
Response Column Color Theme2( "Spectral" ),
Response Column Color Theme3( "Jet" ),
Response Column Color Theme4( "White to Blue" ),
Formula( "Z" ),
Surface Color Method( "Solid", "Solid", "Solid", "Solid" ),
SetVariableAxis( :X, Axis Data( {} ) ),
SetVariableAxis( :Y, Axis Data( {} ) ),
SetZAxis( :Z, Current Value( 95 ), Axis Data( {} ) ),
SetXVariable( :X ),
SetYVariable( :Y ),
Iso Value( 0, 75 ),
Frame3D( Set Rotation( -54, 0, 38 ) )
);
dt << Profiler(
Y( :Z ),
Profiler(
1,
Term Value( X( 0, Lock( 0 ), Show( 1 ) ), Y( 0, Lock( 0 ), Show( 1 ) ) )
),
SendToReport(
Dispatch(
{"Prediction Profiler"},
"10000",
ScaleBox,
{Min( 72.5 ), Max( 125.754437869822 ), Inc( 10 ), Minor Ticks( 0 )}
)
)
);Re: Corte transversal de un gráfico 2D¿Puedes publicar algunos datos de muestra y el script que tienes hasta ahora?
Re: Corte transversal de un gráfico 2DAdemás, el gráfico de contorno (no el del generador de gráficos, use la plataforma de contorno) puede guardar datos cuadriculados. Siempre que desee cortes verticales u horizontales, debe ser una fila o columna de los datos cuadriculados.
dt = Open( "$sample_data/big class.jmp" );
// step 1: use the contour plot to get a grid of the data
cp = dt << Contour Plot(
X( :height, :weight ),
Y( :age ),
Show Data Points( 0 ),
Fill Areas( 0 ),
Label Contours( 0 ),
Transform( "Range Normalized" ),
Specify Contours( Min( 13 ), Max( 16.5 ), N( 8 ) )
);
nres = 100; // make this bigger if you think there is meaningful data there
dtGrid = cp << generate grid( nres, nres );
cp<<CLOSEWINDOW></CLOSEWINDOW>
// step 2: make the cross section
dtGrid:height<<SETMODELINGTYPE></SETMODELINGTYPE>
Drive the height selector with up and down arrows.Conduzca el selector de altura con las flechas hacia arriba y hacia abajo.
editar: Los datos cuadriculados se extrapolan más allá de la envolvente de los puntos de datos. Los extremos de la sección transversal probablemente se adentran mucho en el rango extrapolado. Probablemente querrá hacer coincidir el gráfico de contorno (cerrado, arriba, tal vez mantenerlo abierto) a altura = 61,5 (etc.) para ver cuál sería el rango válido de peso. Incluso entonces, el gráfico de contorno realiza una interpolación lineal a través de triángulos formados por los puntos de datos. Big Class no es particularmente suave ni denso, por lo que se ven muchos artefactos extraños que generan una falsa sensación de detalle, incluso dentro de la envoltura de los puntos de datos.
Re: Corte transversal de un gráfico 2DGracias. Mi gráfico 2D se basa en Xdata, Ydata y Data.
Lo que muestra con el filtro de datos parece prometedor, pero parece que no puedo lograr que trace un segmento en un valor de Xdata (para todos los valores de Ydata).
Seguiré mirando por este lado, pero cualquier dirección será de gran ayuda.
(Estoy en JMP13)
Re: Corte transversal de un gráfico 2DNo estoy seguro de si su trazado 2D se basa en puntos o en una fórmula. Si son puntos, puede usar el generador de gráficos para trazar su valor objetivo en comparación con una dimensión en su gráfico con un filtro de datos para definir la "porción" en la otra dimensión.

Si está explorando una fórmula de columna, entonces estoy de acuerdo con @Mark_Bailey que el generador de perfiles es el enfoque más sencillo. Simplemente cambie el valor de un valor y vea el gráfico en el otro.

A continuación se muestran scripts para ambos:
Names default to here(1);
dt = Open("$Sample_data/iris.jmp");
New Column("H1_1", Numeric, "Continuous", Format("Best", 12), Set Property("Notes", "Model NTanH(3)"), Formula(TanH(0.5 * ((-3.50407799736543) + -1.69201212624413 * :Sepal length + 4.45798369366822 * :Sepal width))), Set Property("Intermediate", 1));
New Column("H1_2", Numeric, "Continuous", Format("Best", 12), Set Property("Notes", "Model NTanH(3)"), Formula(TanH(0.5 * ((-4.34695576142641) + 0.578814453314083 * :Sepal length + -0.387699136913814 * :Sepal width))), Set Property("Intermediate", 1));
New Column("H1_3", Numeric, "Continuous", Format("Best", 12), Set Property("Notes", "Model NTanH(3)"), Formula(TanH(0.5 * ((-14.9199578715582) + 8.0363609653296 * :Sepal length + -9.32672254743267 * :Sepal width))), Set Property("Intermediate", 1));
New Column("Predicted Petal length", Numeric, "Continuous", Format("Best", 12), Set Property("Notes", "Model NTanH(3)"), Formula(9.72824082889675 + 0.825393378043811 * :H1_1 + 8.38378988028562 * :H1_2 + 1.62929374850912 * :H1_3), Set Property("Predicting", {:Petal length, Creator("Neural")}));
New Window("Plotting points",
H List Box(
Graph Builder(
Size( 522, 456 ),
Show Control Panel( 0 ),
Variables( X( :Sepal length ), Y( :Petal length ) ),
Elements( Points( X, Y, Legend( 295 ) ), Line( X, Y, Legend( 297 ) ) ),
Local Data Filter(
Add Filter(
columns( :Sepal width ),
Where( :Sepal width >= 2.9 & :Sepal width <= 3.1 )
)
)
),
Contour Plot(
X( :Sepal width, :Sepal length ),
Y( :Petal length ),
Show Data Points( 0 ),
Fill Areas( 0 ),
Label Contours( 0 ),
Transform( "Range Normalized" ),
Specify Contours( Min( 2 ), Max( 6 ), N( 5 ) ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Add Ref Line(
{2.9, 3.1},
"Solid",
"Medium Dark Magenta",
"Slice",
1,
0.25
)}
)
)
)
)
);
//Profiler
Profiler(
Y( :Predicted Petal length ),
Profiler(
1,
Term Value(
Sepal length( 6.302, Lock( 0 ), Show( 1 ) ),
Sepal width( 3.125, Lock( 0 ), Show( 1 ) )
)
),
Expand,
SendToReport(
Dispatch(
{"Prediction Profiler"},
"Profiler",
FrameBox,
{Frame Size( 320, 260 )}
),
Dispatch(
{"Prediction Profiler"},
"Profiler",
FrameBox( 3 ),
{Frame Size( 320, 260 )}
)
)
);
Actualizado: se agregaron fórmulas de columna para la columna de predicción al script.
Re: Corte transversal de un gráfico 2DGracias, la opción de perfiladores parece útil, pero hay muchas opciones. Lo investigaré.
Lo que estaba buscando es un enfoque basado en guiones.
Para un gráfico 2D, cómo obtener un segmento x (para un valor de y determinado) o un segmento y (para un valor de x determinado). Esto es todo lo que quiero hacer en este momento.Re: Corte transversal de un gráfico 2DPor favor, consulte el libro de ayuda de JMP sobre Perfiladores .