Il colore del carattere cambia durante la rotazione di un grafico di superficieHo prodotto un grafico di superficie utilizzando una formula prevista da un progetto di screening definitivo.
Vorrei presentare la mia trama in una presentazione con la trama in rotazione. Per farlo ho seguito questo thread: https://community.jmp.com/t5/Discussions/Spinning-a-Scatterplot-3D/td-p/6510
Il consiglio qui era originariamente per un grafico a dispersione, tuttavia l'ho fatto funzionare usando la stessa riga di codice:
Set Spin( 0.01, 0, 0.01, 0 )
La rotazione funziona bene, tuttavia quando la trama gira i colori dei caratteri cambiano da nero a grigio finto, rendendoli più difficili da leggere:
Mentre gira
Mentre fermo
Qualcuno sa cosa sta causando questo / se c'è qualcosa che posso fare per risolvere il problema? O forse un modo diverso per far ruotare la trama della superficie che non si traduce in questo problema?
Grazie
GraficaScriptingOggetto: il colore del carattere cambia durante la rotazione di un grafico di superficieWow! Questa è una visuale davvero bellissima!
Ottengo lo stesso comportamento quando uso Set Spin (). Ma non quando ruoto manualmente la trama usando il clic e il trascinamento.
Non sono sicuro di quale sia la causa o se esiste un modo per risolverlo. Potresti contattare il supporto tecnico ( support@jmp.com ). Ho incollato uno script di esempio, di seguito, che dimostra il problema di cui stai parlando utilizzando i dati di esempio Tiretread.
Oltre a questo, potresti semplicemente registrare sullo schermo la rotazione manuale della trama.
Saluti,
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 ) );Oggetto: il colore del carattere cambia durante la rotazione di un grafico di superficieSi attenua apposta per rendere il testo meno fastidioso. Gli assi etichettati stanno già cambiando per rimanere fuori dal grafico ed erano difficili da guardare quando il nero è solido. Non sono a conoscenza di alcun modo per disabilitare la funzione. Per estendere il suggerimento di Phil, puoi scrivere il metodo Frame3D << setRotation e acquisire le immagini.@davidbarbour
(Oppure, è abbastanza veloce che potresti semplicemente eseguire lo script senza catturare le immagini.)
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>
superficie 3D oscillante
Ho usato gifsicle per creare la gif animata; ci sono molti modi per trasformare la sequenza di immagini in una gif o un video animato.
gifsicle -O3 -d 10 --loop = 0 surf * .gif> osc.gif