El color de la fuente cambia al girar un gráfico de superficieProduje un gráfico de superficie utilizando una fórmula prevista a partir de un diseño de detección definitivo.
Me gustaría presentar mi trama en una presentación con la trama rotando. Para hacerlo seguí este hilo: https://community.jmp.com/t5/Discussions/Spinning-a-Scatterplot-3D/td-p/6510
El consejo aquí fue originalmente para un diagrama de dispersión, sin embargo, lo hice funcionar usando la misma línea de código:
Set Spin( 0.01, 0, 0.01, 0 )
El giro funciona bien, sin embargo, cuando la trama gira, los colores de la fuente cambian de negro a un gris tenue, lo que los hace más difíciles de leer:
Whilst spinningmientras gira
Whilst stationaryMientras está parado
¿Alguien sabe qué está causando esto o si hay algo que pueda hacer para solucionar el problema? ¿O tal vez una forma diferente de hacer girar la trama superficial que no resulte en este problema?
Gracias
Exploración y visualización de datosDiseño de experimentosRe: El color de la fuente cambia al girar un diagrama de superficieEl guión de oscilación está escrito para producir un ciclo completo. La función cos() obtiene un rango de entrada (casi) completo de 0 a 2*pi, lo que hace que el rango de salida de +1 a -1 regrese a (casi) +1 nuevamente. Eso se multiplica por 5 para producir un movimiento de +/- 5 grados. Se repite perfectamente, porque el siguiente paso después del último paso es la primera imagen. (Si el ciclo for-i usara <= habría un marco duplicado). El ciclo for-n no es necesario para hacer imágenes, pero es útil para una demostración en vivo.
Podría hacer una demostración de volteo en lugar de una demostración de oscilación sin la función de coseno. El oscilador usa el mismo delta de cada uno de los ángulos iniciales x, y, z. Siempre que todos los ángulos vuelvan al mismo valor inicial al final de la caída, se repetirá bien. Algo como
rotación( 1*2*pi()*i,3*2*pi()*i,5*2*pi()*i) para 0<1
donde cada ángulo pasa por 1 o más rotaciones completas de 2pi (1,3,5 como se muestra).
Creo que la oscilación en un rango pequeño es mejor para entender. cayendo mayo ser mejor para llamar la atención.
Triple Helix spinning in 3DTriple Helix spinning in 3DTriple Helix spinning in 3DTriple Helix girando en 3D

Re: El color de la fuente cambia al girar un diagrama de superficieSe atenúa a propósito para que el texto distraiga menos. Los ejes etiquetados ya están cambiando para mantenerse fuera del camino del gráfico y eran difíciles de ver cuando estaban en negro sólido. No conozco ninguna forma de desactivar la función. Para ampliar la sugerencia de Phil, puede escribir el método Frame3D <@davidbarbour
(O bien, es lo suficientemente rápido como para ejecutar el script sin capturar las imágenes).
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Surface Plot(
Columns( :Pred Formula ABRASION ),
Control Panel( 0 ),
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( "Blue to Gray to Orange" ),
Response Column Color Theme3( "Spectral" ),
Response Column Color Theme4( "Jet" ),
Formula( "Pred Formula ABRASION" ),
Surface Color Method( "Solid", "Solid", "Solid", "Solid" ),
SetVariableAxis( :SILICA, Axis Data( {} ) ),
SetVariableAxis( :SILANE, Axis Data( {} ) ),
SetZAxis( :Pred Formula ABRASION, Current Value( 125 ), Axis Data( {} ) ),
SetXVariable( :SILICA ),
SetYVariable( :SILANE ),
Iso Value( 0, 139.119238722664 ),
Frame3D(
Set Graph Size( 470, 470 ),
Set Grab Handles( 0 ),
Set Hide Lights Border( 1 ),
//Set Rotation( 10, 20, 30 )
)
);
//oscillate using cosine
ipic=0;
For( n = 1, n <= 3, n += 1,
For( i = 0, i < 1, i += 1 / 32,
delta = 5 * Cos( 2 * Pi() * i ); // 5 * (1..-1..1)
obj << frame3d( setrotation( 10 + delta, 20 + delta, 30 + delta ) );
obj << updatewindow;
Wait( 0 );
// take picture here if wanted
//img = report(obj)[SceneBox(1)]<<GETPICTURE></GETPICTURE>
oscillating 3D surfaceoscillating 3D surfaceoscillating 3D surfacesuperficie 3D oscilante
Usé gifsicle para hacer el gif animado; hay muchas maneras de convertir la secuencia de imágenes en un gif o video animado.
gifsicle -O3 -d 10 --loop=0 surf*.gif >osc.gif
Re: El color de la fuente cambia al girar un diagrama de superficie¡Guau! ¡Esa es una imagen realmente hermosa!
Obtengo el mismo comportamiento cuando uso Set Spin(). Pero no cuando giro manualmente la trama haciendo clic y arrastrando.
No estoy seguro de qué causa esto o si hay una manera de solucionarlo. Es posible que desee ponerse en contacto con el soporte técnico ( support@jmp.com ). He pegado una secuencia de comandos de ejemplo, a continuación, que demuestra el problema del que está hablando utilizando los datos de ejemplo de Tiretread.
Aparte de eso, podría grabar en pantalla la rotación manual de la trama.
Saludos,
phil
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Surface Plot(
Columns( :Pred Formula ABRASION ),
Control Panel( 0 ),
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( "Blue to Gray to Orange" ),
Response Column Color Theme3( "Spectral" ),
Response Column Color Theme4( "Jet" ),
Formula( "Pred Formula ABRASION" ),
Surface Color Method( "Solid", "Solid", "Solid", "Solid" ),
SetVariableAxis( :SILICA, Axis Data( {} ) ),
SetVariableAxis( :SILANE, Axis Data( {} ) ),
SetZAxis( :Pred Formula ABRASION, Current Value( 125 ), Axis Data( {} ) ),
SetXVariable( :SILICA ),
SetYVariable( :SILANE ),
Iso Value( 0, 139.119238722664 ),
Frame3D(
Set Graph Size( 470, 470 ),
Set Grab Handles( 0 ),
Set Hide Lights Border( 1 ),
Set Rotation( -66.7809360215981, 3.32558351899253, 44.6221502352661 )
)
);
obj << Frame3D( Set Spin( 0.1, 0, 0.01, 0 ) );