선택한 열 이름을 수식에 넣기Re: 선택한 열 이름을 수식에 넣기안녕 gzmorgan0 ,
이것은 훌륭한 스크립트입니다. Col Mean 또는 Col Std Dev와 같은 다른 수식 버튼을 추가하려면 스크립트를 어떻게 변경해야 합니까?
Re: 선택한 열 이름을 수식에 넣기그즈 모건,
당신은 마법사입니다. 나는 당신이 성공적으로 설명한 두 가지 방법을 모두 시도했습니다. 더 중요한 것은 스크립팅 기술을 더 많이 배웠다는 것입니다. 많은 감사를 드립니다.Re: 선택한 열 이름을 수식에 넣기먼저 몇 가지 참고 사항:
- oc는 oc( Connect Points(1) ) 구문을 JMP에서 해석할 수 없는 열 참조입니다.
- 오버레이 플롯의 스크립팅 인덱스에 표시된 구문에는 열 이름이 필요한 것 같습니다. 아래 예를 참조하세요. 또한 :Name("Volume")(Connect Color (0) );
obj = Overlay Plot(
X( :Date ),
Y( :High, :Low, :Close, :Volume ),
Y Scale( Left, Left, Left, Right )
);
obj << Connect Points( 1 );
obj << :Volume( Connect Color( 0 ) );
obj << :Low( Connect Color( "Red" ) );
- 오버레이 도표에는 몇 가지 유용한 기능이 있지만 JMP 개발자는 그래프 빌더 사용을 권장할 것입니다. 데이터 테이블의 구조상 오버레이를 사용하는 것이 더 쉬울 수 있으므로 오버레이를 사용하겠습니다.
- 아래 스크립트는 축구 데이터 테이블의 하위 집합으로 시작되었으며 사용자가 추가한 에코럼은 없습니다. 그런 다음 이동 평균을 계산합니다. 스크립트는 오버레이 플롯을 생성하고 Eval(Parse(EvalInsert()))를 사용하여 따옴표 붙은 이름 및 포인트를 끄는 옵션과 함께 스크립팅 인덱스에 표시된 구문을 구성합니다.
- 스크립트의 두 번째 부분에서는 대체 방법을 보여줍니다. 모든 오버레이 열에 대해 선과 점을 켭니다.그런 다음 Xpath()를 사용하여 선 세그먼트 및 마커 세그먼트에 대한 참조 목록을 만듭니다.선을 끄려면 선 너비를 0으로 설정하세요. 포인트를 끄려면 투명도를 0으로 설정하세요.세그먼트 작업에는 더 간단한 구문이 사용됩니다.그러나 Xpath()는 매우 유용하지만 아마도 더 발전된 것으로 간주될 것입니다.도움이 되길 바랍니다.
Names default to here(1);
dt = current data table();
colnme = "Speed";
oc = Column(dt, colnme);
nc = dt << New Column( colnme || " Moving Average",
Numeric,
Formula(Col Moving Average(oc[],1,4,16) )
);
ovp = Overlay Plot( Y(oc, nc));
ovp << Connect Thru Missing(1);
ncnme = nc << get name;
//The syntax is ovp << :col( opt1);
Eval( Parse(EvalInsert("ovp << :name(\!"^ncnme^\!")(Show Points(0))" ) ) ) ;
//alternate method
ovl = Overlay Plot( Y(oc, nc));
ovl << Connect Thru Missing(1);
lines = ovl << Xpath("//LineSeg");
points = ovl << Xpath("//MarkerSeg");
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
lines[1] << Line width(2); //turn on line 1
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
points[2] << Transparency(0); //turn off points 2
Re: 선택한 열 이름을 수식에 넣기나의 노력을 계속합니다. 나는 많은 발전을 이루었습니다.선택한 열 이름을 수식에 입력하고 이제 대화 상자의 MA 매개변수를 사용하여 이동 평균으로 선택한 열의 오버레이 그래프를 만들 수 있습니다. 멋진. 아주 좋아요. "오버레이 플롯" 기능을 사용하고 있습니다. 두 그래프의 모든 점을 수정할 수 있지만 플롯의 속성 중 하나만 수정하는 방법을 알 수는 없습니다.
설명하기 위한 코드 조각은 다음과 같습니다. 이것은 작동합니다:
cn1 = colName || "";
cn2 = colName || " Moving Average";
dt << New Column( colName || " Moving Average",
Numeric,
Formula( Eval( Parse( formulaString ) ) )
);
oc = Column( cn1 );
nc = Column( cn2 );
nw2 << Close Window;
funny = Overlay Plot( Y( oc, nc ), );
funny << (Connect Points( 1 ));
결과 플롯에는 MA와 원래 점이 모두 연결되어 있습니다.
그러나 플롯 중 하나만 수정하기 위해 마지막 줄을 변경하면 다음과 같이 작동하지 않습니다.
funny << oc( Connect Points( 1 ) );
연결된 포인트가 없습니다.
따라서 "Overlay Plot" 함수에서는 "oc"가 Y 열 중 하나로 인식되지만, 위 명령문에서는 인식되지 않습니다.
누군가 도와주실 수 있나요? 정신건강이 위험해요
전체 스크립트가 포함된 데이터 테이블을 첨부했습니다.전체 스크립트에서 원하는 방식으로 플롯을 만드는 추가 작은 자동 생성 스크립트가 있습니다. 이 플롯은 범례를 수동으로 변경해야만 만들 수 있었습니다.
케빈
Re: 선택한 열 이름을 수식에 넣기좋아요. 나 그렇게 할거야.
무리 감사,
케빈
Re: 선택한 열 이름을 수식에 넣기괜찮아요. 하지만 저는 gz의 방법을 사용하겠습니다. 이름에 특수 문자가 포함된 열을 처리한다는 점에서 더욱 강력합니다.
Re: 선택한 열 이름을 수식에 넣기고마워요, GZ님
예, 귀하의 솔루션이 저에게도 효과적이었습니다. 열을 선택하지 않은 경우 트래핑하는 것이 좋은 팁입니다. 앞으로도 잘 활용하겠습니다.
Re: 선택한 열 이름을 수식에 넣기고마워요, 마이크
네, 정말 저한테는 효과가 있었어요. 그리고 스크립팅 기술을 좀 더 배웠습니다.
Re: 선택한 열 이름을 수식에 넣기열 이름에 특수 기호가 없는 경우에만 스크립트가 작동합니다. 있는 경우 명명된 참조는 :Name("string")이어야 합니다. 또한 열이 선택되었는지 확인하는 기능이 스크립트에 추가되었습니다.
Names Default to Here(1);
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all, <<SET data="https://community.jmp.com/" type=""></SET>
Re: 선택한 열 이름을 수식에 넣기
이 시도. col list box() 부분의 마지막 두 줄은 스크립트인 것으로 나타났습니다. 이는 세미콜론(또는 접착제)으로 구분되어야 함을 의미합니다.나머지 줄은 쉼표로 구분된 열 목록 상자의 인수입니다. col 목록 상자의 "colName = ..." 부분은 여기에서 주석 처리되었습니다. 왜냐하면 그것이 많은 일을 하고 있다고 생각하지 않기 때문입니다. 스크립트의 버튼 상자 부분에서 잡는 것이 더 좋습니다. 원하는 경우 테이블 변수를 다시 추가할 수 있습니다.
목록 상자에 숫자 열만 로드하도록 하는 것이 더 좋습니다. 나는 그것을 올바르게 수행하는 방법을 기억하지 못했습니다. 현재는 목록 상자에 모두 로드됩니다. min / max col()을 max selected로 변경했습니다. 즉, 한 번에 1개를 넘지 않습니다.
수식 부분의 경우 원하는 위치에 문자열을 가져오려면 일반적으로 약간의 시행착오가 필요합니다. 이것은 작동하는 것 같습니다.
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,//numeric,
//min col( 1 ),
max selected( 1 )//,
//colname = Eval Expr (Expr(x << get selected)[1])//,
//dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
colName = Char( (x << get selected)[1] );
//myCol = column(colName);
formulaString = "Col Moving Average( :"|| char(colName) ||", 0, 4, 0 )";
dt << New Column( colName || " Movin Average",
Numeric,
//Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
Formula( eval(parse(formulaString)) )
)
)
);
Re: 선택한 열 이름을 수식에 넣기대화 상자에서 선택한 열을 수식으로 올바르게 가져오는 방법을 알아내려고 합니다. 저는 스크립팅 책에서 많은 토론과 샘플을 살펴보고 여러 가지를 시도했습니다. 아직 주사위가 없습니다. 스크립트에서 볼 수 있듯이 컬럼을 선택하고 컬럼 이동평균 수식을 기반으로 새 컬럼을 만들고 싶습니다. 도움을 주시면 감사하겠습니다.
내 최근 시도는 다음과 같습니다.
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,
min col( 1 ),
max col( 1 ),
colname = Eval Expr (Expr(x << get selected)[1]),
dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
dt << New Column( Char( (x << get selected)[1] ) || " Movin Average",
Numeric,
Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
)
)
);