/* 객관적인
3D 표면 플롯에서 마우스 오른쪽 버튼을 클릭하여 그래프에서 마커 설정을 설정할 수 있습니다. 마커 스케일, 마커 품질 등. 이것은 하나의 그래프에 쉽습니다. 그룹이 많은 그룹 별 그룹이있는 경우 각 그래프에 대해이 작업을 수동으로 다시 수행해야하며 제어 키가 복제에 작동하지 않습니다.
따라서 마커 스케일 및 마커 품질에 대한 옵션 설정을 다른 모든 사람에게 복제하는 방법 ???
* /
/ * 아이디어
스크립트 저장에 대해 생각하고이 스크립트를 원하는 옵션을 갖도록 Frame3D 속성을 대체 할 수있는 표현식으로 사용했습니다. 또는 대체하십시오. "ScaleBox"와 "ScaleBox (Set Marker Scale (5), Set Marker Quality (0)), ScaleBox")는 스크립트 가져 오기 명령의 출력 내에 있습니다.
또 다른 아이디어는 XPath를 사용하는 것이었지만 자동화하지 못했습니다. 나는 사용했다
r_sp [박스 (1)] [ListBox (2)] [PictureBox (1)] [ScaleBox (1)] [Display3DBox (1)] << 마커 스케일 설정 (5)
인덱스를 제거하는 방법을 알 수 없으므로 처음에는 효과가 있었지만 다른 모든 것은 아닙니다.
* /
내가 약간의 papproaches를 테스트했던 스크립트를 첨부했다. 부품을지나 ByGroup 섹션으로 복사 한 다음 스크립트를 다시 실행하는 것 이외의 다른 솔루션에 감사드립니다. 예에는 3 개의 그룹이 있지만 사용 사례에는 약 90 개의 그룹이 있습니다.
감사,
남자 이름
/* Objective
In a 3D surface Plot one can set the settings for Markers in the graph by right click and e.g. Marker Scale, Marker Quality and so forth. This is easy for one graph. If you have a by Group with many groups you have to do this for each graph manually again, no control key works for replication.
So how to replicate setting the option e.g. for Marker Scale and Marker Quality to all others???
*/
/* Ideas
I thought about saving the script and use this script as an expression where I could substitute Frame3D properties so that I have the desired options. Or substitute . "ScaleBox" with "ScaleBox(Set Marker Scale(5), Set Marker Quality(0)), ScaleBox" which is within the output of the Get Script command.
Another idea was to use XPath, but I failed to automate things. I used
r_sp[Box(1)][ListBox(2)][PictureBox(1)][ScaleBox(1)][Display3DBox(1)] << Set Marker Scale (5)
which worked for the first but not all others as I couldn't figure out how to get rid of the indices.
*/
Names Default to Here(1);
// Generate table and report (3D Plot) - this usually is done manually
dt = Open("$SAMPLE_DATA/Iris.jmp");
// Surface Plot, Goal is to set Marker Quality for all ByGroups to 0. Currently it is just for the first group.
sp = dt << Surface Plot(
SendToByGroup( {:Species == "setosa"} ),
Columns( :Sepal length, :Sepal width, :Petal length ),
Datapoints Choice( "Points" ),
Response( :Petal length ),
SetVariableAxis( :Sepal length, Axis Data( {} ) ),
SetVariableAxis( :Sepal width, Axis Data( {} ) ),
SendToByGroup( {:Species == "setosa"}, SetZAxis( z#1, Current Value( 1.45 ) ) ),
SendToByGroup(
{:Species == "versicolor"},
SetZAxis( z#1, Current Value( 4.125 ) )
),
SendToByGroup(
{:Species == "virginica"},
SetZAxis( z#1, Current Value( 5.75 ) )
),
SetXVariable( :Sepal length ),
SetYVariable( :Sepal width ),
SendToByGroup(
{:Species == "setosa"},
Frame3D(
Set Rotation( -54, 0, 38 ),
Set Marker Quality( 0 ),
Set Marker Scale( 1.585 )
)
),
SendToByGroup(
{:Species == "versicolor"},
Frame3D( Set Rotation( -54, 0, 38 ) )
),
SendToByGroup(
{:Species == "virginica"},
Frame3D( Set Rotation( -54, 0, 38 ) )
),
By( :Species )
);
// Get report
r_sp = sp << report();
// usually one would need to use:
// r_sp = currentreport();
// idea 1: Build Expression and to be substituted with string
reportExpr = Expr(
Surface Plot(
SendToByGroup( {:Species == "setosa"} ),
Columns( :Sepal length, :Sepal width, :Petal length ),
Datapoints Choice( "Points" ),
Response( :Petal length ),
SetVariableAxis( :Sepal length, Axis Data( {} ) ),
SetVariableAxis( :Sepal width, Axis Data( {} ) ),
SendToByGroup( {:Species == "setosa"}, SetZAxis( z#1, Current Value( 1.45 ) ) ),
SendToByGroup( {:Species == "versicolor"}, SetZAxis( z#1, Current Value( 4.125 ) ) ),
SendToByGroup( {:Species == "virginica"}, SetZAxis( z#1, Current Value( 5.75 ) ) ),
SetXVariable( :Sepal length ),
SetYVariable( :Sepal width ),
SendToByGroup(
{:Species == "setosa"},
Frame3D( _property_ )
),
SendToByGroup( {:Species == "versicolor"}, Frame3D( _property_ ) ),
SendToByGroup( {:Species == "virginica"}, Frame3D( _property_ ) ),
By( :Species )
)
);
ReplaceWith = "Set Rotation( -54, 0, 38 ),Set Marker Quality( 0 ), Set Marker Scale( 5 )" ;
// NameExpr(reportExpr);
tmp = Substitute(
NameExpr( reportExpr),
Expr( _property_ ), ReplaceWith,
);
// This does not work as there are "..." included which throws an error obviously. I checked different approaches but gave up and ask now :)
// eval( tmp );
// idea 3: Get script and change the code, however I failed and in addition was not sure how to change the report with the new script
myExpr = r_sp << Get Script;
// what next?안녕 마틴,
나는 이것이 그렇게 할 것이라고 생각합니다.
그러나 Windows 호스트에서는 작동하지만 Mac 호스트에는 영향을 미치지 않는 것으로 나타났습니다.
각 호스트에서 Open GL을 사용하는 방법과 관련이있을 수 있습니다.
첨가 @Paul_Nelson 호스트 종속성 아티팩트에 더 많은 통찰력을 추가 할 수 있는지 확인합니다.
스탠
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Iris.jmp");
sp = dt << Surface Plot(
SendToByGroup( {:Species == "setosa"} ),
Columns( :Sepal length, :Sepal width, :Petal length, :Petal width ),
Datapoints Choice( "Points" ),
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" ),
Response( :Petal length ),
Surface Color Method( "Solid", "Solid", "Solid", "Solid" ),
SetVariableAxis( :Sepal length, Axis Data( {} ) ),
SetVariableAxis( :Sepal width, Axis Data( {} ) ),
SendToByGroup(
{:Species == "setosa"},
SetZAxis( Petal length, Current Value( 1.45 ), Axis Data( {} ) )
),
SendToByGroup(
{:Species == "versicolor"},
SetZAxis( Petal length, Current Value( 4.125 ), Axis Data( {} ) )
),
SendToByGroup(
{:Species == "virginica"},
SetZAxis( Petal length, Current Value( 5.75 ), Axis Data( {} ) )
),
SetXVariable( :Sepal length ),
SetYVariable( :Sepal width ),
Frame3D(
Set Walls( 1 ),
Set Rotation( -54, 0, 38 ),
Set Text Scale( 2 ),
Set Line Scale( 1 ),
Set Marker Transparency( 1 ),
Set Marker Quality( 0 ),
Set Marker Scale( 1 ),
Set View Perspective( 0.1 ),
Set View Zoom( 1 )
),
By( :Species )
);
After running script and check on settings 스크립트를 실행하고 설정을 확인한 후