Font colour changes when spinning a surface plotI've produced a surface plot using a predicted formula from a definitive screening design.
I'd like to present my plot in a presentation with the plot rotating. To do so I followed this thread: https://community.jmp.com/t5/Discussions/Spinning-a-Scatterplot-3D/td-p/6510
The advice here was originally for a scatter plot, however I got it working using the same line of code:
Set Spin( 0.01, 0, 0.01, 0 )
The spinning works fine, however when the plot is spinning the font colours change from black to a feint grey, making them more difficult to read:
Whilst spinning
Whilst stationary
Does anyone know what's causing this/if there's anything I can do to fix the problem? Or perhaps a different way to make the surface plot spin that doesn't result in this issue?
Thanks
GraphicsScriptingRe: Font colour changes when spinning a surface plotWow! That is a really beautiful visual!
I get the same behaviour when I use Set Spin(). But not when I manually rotate the plot using click-and-drag.
I am not sure what causes this or if there is a way to fix it. You might want to contact tech support (support@jmp.com). I have pasted an example script, below, that demonstrates the issue you are talking about using Tiretread example data.
Other than that, you could just screen record your manual rotation of the plot.
Regards,
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 ) );Re: Font colour changes when spinning a surface plotIt dims on purpose to make the text less distracting. The labeled axes are already switching about to stay out of the way of the graph and were hard to watch when solid black. I'm unaware of any way to disable the feature. To extend Phil's suggestion, you can script the Frame3D <@Anonymous
(Or, it is fast enough you might just run the script without capturing the images.)
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 surface
I used gifsicle to make the animated gif; there are many ways to turn the sequence of images into an animated gif or video.
gifsicle -O3 -d 10 --loop=0 surf*.gif >osc.gif