문제 선택그래프를 만들고 그 일부를 선택하면 전체 Excel 시트가 강조 표시됩니다. 세그먼트를 선택하고 해당 세그먼트와 직접 관련된 데이터만 강조 표시할 수 있어야 한다는 것을 데모에서 기억합니다. 내가 여기서 뭘 잘못하고 있는 걸까?
또한 JMP가 같은 선에 있는 여러 지점에서 피크 데이터를 찾아 그래프에 표시하도록 할 수 있는 방법이 있는지 알고 싶습니다.
시간 내 주셔서 감사합니다
답: 문제를 선택하세요약간 다른 방법을 시도하면서 점의 크기와 모양을 조정하는 스크립트 부분을 제거하고 지금은 단순히 기본 설정에서 해당 설정을 변경했습니다. 이전에 사용했던 스크립트는 실제로 점의 크기와 모양을 지정하지 않는다는 것을 깨달았습니다. 추가 그래프(첫 번째 그래프보다 더 많은)를 지적하여 이 그래프를 생각해냈습니다. 그러나 첫 번째 줄의 두 번째 그래프를 완전히 자체적으로 매끄럽게 그리는 다소 이상한 일을 하고 있습니다.
dt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
elements_txt = elements_txt ||
"Legend( 7 ) ),
Points( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
elements_txt = elements_txt ||
"Legend(8))
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[14]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[15]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);
이에 대한 스크립트를 저장한 다음 내가 원하는 모양에 대한 스크립트(상단 그래프만)를 저장했지만 잘못된 그래프를 없애기 위해 어떤 부분을 편집해야 하는지 잘 모르겠습니다...
//This is what it graphs
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Name( "Time[sec]" ) ),
Y( :Name( "CH2-Chemical Cal" ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH2-Chemical Cal" ) )
),
Elements(
Position( 1, 1 ),
Line( X, Y( 1 ), Y( 2 ), Legend( 7 ) ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) )
),
Elements(
Position( 1, 2 ),
Points( X, Y, Legend( 11 ) ),
Smoother( X, Y, Legend( 12 ) )
),
SendToReport(
Dispatch(
{},
"CH2-Chemical Cal",
ScaleBox( 2 ),
{Min( -125.45871559633 ), Max( 1724.54128440367 ), Inc( 100 ),
Minor Ticks( 1 )}
)
)
);
// This is what I want it to graph
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Name( "Time[sec]" ) ),
Y( :Name( "CH2-Chemical Cal" ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Legend( 7 ) ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) )
)
);답: 문제를 선택하세요공평하게도, 저는 많은 일을 해줄 사람을 찾고 있는 것이 아닙니다. 그런 일이 발생한다면 커미션이라고 불러야 할 것입니다. 누군가가 제가 시도할 수 있는 것에 대해 몇 가지 제안을 해주거나 지적할 수 있기를 바랄 뿐입니다. 나는 올바른 방향으로 가고 있습니다. 나는 물개 몇 개를 가지고 깊숙한 곳에 와 있고 그들은 공기를 잃고 있습니다 XD
답: 문제를 선택하세요죄송합니다. 디버깅에 시간을 투자한 다음 스크립트만큼 커지는 코드 조각에 새 코드를 구현하는 데 시간이 없습니다. 커뮤니티에서 도움을 줄 수 있는 사람을 찾을 수 있기를 바랍니다.답: 문제를 선택하세요정말 멋지네요. 그래서 문제가 생겼습니다. XD를 어떻게 해야 할지 모르겠습니다. 스크립트는 나보다 훨씬 더 발전했습니다. 필요한 작업을 수행하기 위해 스크립트를 모양으로 작업하려고 할 뿐이고 그대로 작동합니다(내 말은 작동하게 만들 수 있다는 뜻이지, 필요한 작업을 수행하는 것이 아닙니다). 말하자면 핏과 광택이 좀 있었으면 좋겠어요. 나는 최선을 다해 문헌을 파헤치고 그것을 이해하려고 노력하고 있지만 실제로는 아직 용어를 모릅니다. 따라서 현재 채널 수는 아래 첨자에 있는 팝업 상자에 의해 선택됩니다. 해당 행 수만 수정하기 위해 선택한 행 수를 범례에 알려주는 방법이 있습니까? 아마도 이것은 여러 라인/채널 등에 문제가 없기 때문에 스크립트의 나머지 부분에 있는 변수 함수가 수행하는 작업일 것입니다. 이 부분을 추가하려는 유일한 이유는 선 그래프에서는 상관 데이터를 추적하기 위해 세그먼트를 선택할 수 없기 때문입니다. 선의 정점을 찾을 수 있어야 합니다. 또한 JMP가 해당 데이터를 그래프에 넣기를 원하지만 이것이 이것보다 훨씬 더 어려울 것이라고 생각합니다. 왜냐하면 스크립트에 데이터의 다른 특정 지점뿐만 아니라 한 줄에 둘 이상이 있을 수 있으며 첫 번째나 가장 높은 것뿐만 아니라 특정 항목이 필요합니다. 더 중요한 데이터에 대해 한 줄을 사용하고 한 번에 하나씩 수행할 수 있으므로 이는 큰 진전입니다. 여러 스크립트를 저장하고 필요한 각 줄 수에 대해 하나씩 가질 수도 있습니다. 음모를 꾸미고 싶지만 더 좋은 방법이 있을 거라고 확신합니다. 아직 어떻게 해야 할지 모르겠어요... 아직 ^.^
답: 문제를 선택하세요기본적으로 JSL은 새로운 JSL을 생성하는 것입니다. 그리고 SendToReport 섹션의 경우 3개의 offset_col을 요구하도록 코드를 하드와이어했습니다. 이것은 이미 알고 계시지만 제가 강조하고 싶은 점은 궁극적으로 실행할 JSL 코드를 생성한다는 것입니다. 따라서 해야 할 일은 코드를 분해하여 offset_cols 목록에 몇 개의 요소가 있는지 확인한 다음 이를 기반으로 해당 요소 수에 대한 JSL 코드만 생성하는 것입니다.답: 문제를 선택하세요dt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
// add in the marker and transparency code
elements_txt = elements_txt ||
"Legend( 7 ) ), Points( X, Y, Legend(8))),
SendToReport(
Dispatch(
{},
\!"400\!",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( \!""
|| offset_cols[1] || "\!", 1 ), Item ID( \!""
|| offset_cols[2] || "\!", 1 ), Item ID( \!""
|| offset_cols[3] || "\!", 1 ) )
)}
)
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[5]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[6]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[7]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
if (cb9 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch9_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);그래서 이 기능을 사용하면 3개의 다른 채널을 실행할 수 있습니다. 안타깝게도 3개 미만의 채널은 실행할 수 없습니다. 그 이상을 실행할 수 있지만 추가 채널에는 도트 경로가 포함되지 않으므로 의도한 대로 선에서 별도의 점을 선택할 수 없습니다. 3개 미만의 채널을 사용하면 이 경고가 표시됩니다.

답: 문제를 선택하세요앗, 딸꾹질이 발생했습니다. 변수에서 정적으로 변경했기 때문에 첫 번째 플롯에서만 작동하고 여러 그래프를 동시에 플롯해야 할 수도 있습니다(이것이 변수가 이유입니다). 가능한 각 열에 대해 복제를 시도했습니다. 작동하지만 포함된 플롯 수를 사용하는 경우에만 가능하며 상황에 따라 더 적게 또는 더 많이 사용할 수 있습니다. 이 조정을 위해 변수가 작동하도록 할 수 없는 것 같습니다. 아마도 추가 라인을 제공하여 플롯을 작성하지 않으면 스크립트와 논쟁하지 않도록 할 수 있는 if then 인수가 있을 수 있습니까?
답: 문제를 선택하세요만세! 작동합니다. 제가 찾고 있는 범위 밖의 채널을 선택하면 오류가 발생합니다. 하지만 제가 아는 한 그렇게 하지 않을 것이기 때문에 전혀 괜찮습니다.
매우 감사합니다!
답: 문제를 선택하세요코드를 약간 재작업했습니다.
1. 마커 크기와 투명도를 변경하는 코드를 추가했습니다.
2. 다음 문제를 발견하지 못했을 수도 있지만 생성한 새 열에는 수식에 dt 및 i 값이 있었습니다.이는 변경될 수 있는 메모리 변수입니다.(즉, 테이블을 저장하고 나중에 JMP 세션을 시작하고 데이터 테이블을 열면 변수 dt와 i를 더 이상 사용할 수 없기 때문에 해당 열에서 오류가 발생합니다.)그래서 수식이 고정된 값을 갖도록 코드를 변경했습니다.
코드는 다음과 같습니다.코드를 테스트하기 위해 모형 데이터 테이블을 만들었으므로 여전히 한두 가지 문제가 있을 수 있습니다.
dt = Open();
col_list = dt << get column names( string );
Remove From( col_list, 1 ); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = Expr(
For( i = 1, i <= N Items( cols_to_plot ), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
// If used before, delete the column and then recreate it
If( Try( Column( dt, new_name ) << get name, "" ) != "",
dt << delete columns( new_name )
);
Insert Into( offset_cols, new_name );
// The variable i and the column name need to be changed to their
// static value for the column formulas to be correct
Eval(
Substitute(
Expr(
dt << New Column( new_name,
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( __cols_to_plot__ * __offset_list__ )
)
),
Expr( __cols_to_plot__ ), Parse( ":" || cols_to_plot[i] ),
Expr( __offset_list__ ), offset_list[i]
)
);
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
// add in the marker and transparency code
elements_txt = elements_txt ||
"Legend( 7 ) ), Points( X, Y, Legend(8))),
SendToReport(
Dispatch(
{},
\!"400\!",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( \!""
|| offset_cols[1] || "\!", 1 ) )
)}
)
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = New Window( "Graph Chemicals",
Panel Box( "Select channels to graph",
Lineup Box( N Col( 2 ),
Text Box( "Column" ),
Text Box( "Chemical Cal" ),
cb1 = Check Box( "Ch1" ),
ch1_neb = Number Edit Box(),
cb2 = Check Box( "Ch2" ),
ch2_neb = Number Edit Box(),
cb3 = Check Box( "Ch3" ),
ch3_neb = Number Edit Box(),
cb4 = Check Box( "Ch4" ),
ch4_neb = Number Edit Box(),
cb5 = Check Box( "Ch5" ),
ch5_neb = Number Edit Box(),
cb6 = Check Box( "Ch6" ),
ch6_neb = Number Edit Box(),
cb7 = Check Box( "Ch7" ),
ch7_neb = Number Edit Box(),
cb8 = Check Box( "Ch8" ),
ch8_neb = Number Edit Box(),
cb9 = Check Box( "Ch9" ),
ch9_neb = Number Edit Box(),
),
),
Panel Box( "Actions",
H List Box(
okb = Button Box( "OK",
If( cb1 << get( 1 ),
Insert Into( cols_to_plot, col_list[8] );
offset_value = ch1_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb2 << get( 1 ),
Insert Into( cols_to_plot, col_list[9] );
offset_value = ch2_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb3 << get( 1 ),
Insert Into( cols_to_plot, col_list[10] );
offset_value = ch3_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb4 << get( 1 ),
Insert Into( cols_to_plot, col_list[11] );
offset_value = ch4_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb5 << get( 1 ),
Insert Into( cols_to_plot, col_list[12] );
offset_value = ch5_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb6 << get( 1 ),
Insert Into( cols_to_plot, col_list[13] );
offset_value = ch6_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb7 << get( 1 ),
Insert Into( cols_to_plot, col_list[14] );
offset_value = ch7_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb8 << get( 1 ),
Insert Into( cols_to_plot, col_list[15] );
offset_value = ch8_neb << get;
Insert Into( offset_list, offset_value );
);
graph_expr;
nw << close window;
),
canb = Button Box( "Cancel", nw << close window ),
)
),
);
// Pre-check checkboxes if column exists
For( i = 1, i <= N Items( col_list ), i++,
If(
col_list[i] == "Ch1", cb1 << set( 1, 1 ),
col_list[i] == "Ch2", cb2 << set( 1, 1 ),
col_list[i] == "Ch3", cb3 << set( 1, 1 ),
col_list[i] == "Ch4", cb4 << set( 1, 1 ),
col_list[i] == "Ch5", cb5 << set( 1, 1 ),
col_list[i] == "Ch6", cb6 << set( 1, 1 ),
col_list[i] == "Ch7", cb7 << set( 1, 1 ),
col_list[i] == "Ch8", cb8 << set( 1, 1 ),
col_list[i] == "Ch9", cb9 << set( 1, 1 ),
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 8, Properties( 0, {Marker Size( 0 )}, Item ID( "CH2-Offset", 1 ) ) )}
)
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( "^offset_cols[i]^", 1 ) )
)}
)
)
);답: 문제를 선택하세요모든 텍스트는 스포일러 창 아래 이전 게시물에 있습니다. 보기에 좋지 않아 사진을 사용했습니다. JSL 버튼이 무엇인지 몰라서 그냥 복사/붙여넣었습니다.
dt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text =
"\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
for (i = 1, i <= nitems(cols_to_plot), i++,
if (i == 1,
// then
gb_text = gb_text || evalinsert("\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\");
,
// else
gb_text = gb_text || evalinsert("\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\");
);
elements_txt = elements_txt || evalinsert("Y ( ^i^ ), ");
);
elements_txt = elements_txt || "Legend( 7 ) ), Points( X, Y, Legend(8))
,";
gb_text = gb_text || elements_txt || ") )";
eval(parse(gb_text));
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{Marker Size( 0 ), Transparency( 0 )},
Item ID( "^offset_cols[i]^", 1 )
)
)}
)
)
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[14]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[15]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 )}, Item ID( "CH2-Offset", 1 ) )
)}
)
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{Marker Size( 0 ), Transparency( 0 )},
Item ID( "^offset_cols[i]^", 1 )
)
)}
)
)
);답: 문제를 선택하세요최근 질문에 대한 귀하의 응답 부족은 부분적으로 코드 표시 방식으로 인해 발생합니다.그림 형식으로 코드를 전달하려면 커뮤니티에서 코드 디버깅을 시도하려면 모든 코드를 수동으로 입력해야 합니다."코드 삽입" 또는 "JSL 스크립트 삽입" 아이콘을 사용하여 코드를 입력해 주시겠습니까?브라우저가 둘 중 하나를 지원하지 않는 경우 응답에 코드를 붙여넣으면 작동합니다.
답: 문제를 선택하세요
내 생각엔- 여기서 끝으로 가야 할 것 같은데, 계속해서

무엇을 더 시도해야 할지 잘 모르겠습니다. 여러 가지 다른 논리적 이름을 시도했지만 변경되지 않았습니다.
답: 문제를 선택하세요좋습니다. 이제 어딘가에 도달했습니다. 이에 대한 대화를 내 스크립트에 삽입하는 데 문제가 있습니다. 해당 조정을 수행하면 스크립트는 다음과 같습니다.

하지만 기본 스크립트에 수정자를 삽입하는 위치와 방법을 파악하는 데 문제가 있습니다.

나는 이것을 더 잘 이해하고 싶지만 효과보다 이해가 덜 중요합니다 ^.^ (텍스트가 이상하게 작동했기 때문에 텍스트 대신 이미지로 저장되었습니다. 텍스트 코드는 따라갑니다)
더보기...
답: 문제를 선택하세요그래프 범례의 포인트를 마우스 오른쪽 버튼으로 클릭하면 포인트의 크기와 색상을 변경할 수 있습니다.답: 문제를 선택하세요부록:
좋습니다. 그래프를 수정하여 포인트도 사용하도록 했습니다. 그러나 포인트가 엄청나서 내 사진이 뭉개집니다. 점을 더 작게 그래프로 표시하거나 그래프로 표시하되 눈에 보이는 점을 제거하는 방법이 있습니까? 포인트는 필요하지 않습니다. 단지 선의 특정 세그먼트를 선택할 수 있는 기능만 있으면 됩니다. 추가 도움을 주셔서 감사합니다!

답: 문제를 선택하세요그러면 질문에 대한 답변이 되지만 새로운 문제가 발생합니다. 반면에 이제는 많은 노력을 들이지 않고 최고값을 찾는 매우 빠른 방법을 알고 있습니다. 그러나 선의 세그먼트만 선택할 수 있으면 정말 좋겠습니다. 이 경우 선 그래프는 데이터를 표현하는 가장 좋은 방법입니다. 왜냐하면 이는 유동적 흐름이기 때문입니다. 우리는 시간 범위에 따라 데이터 포인트를 수집하지만, 유동은 여전히 해당 포인트 사이를 흐르고 있으며 또한 다른 형식으로 표시되는 방식을 반영하기 때문입니다. 올바른 데이터를 보고 있는지 또는 데이터가 원하는 매개변수를 크게 벗어나는지 쉽게 확인할 수 있습니다. 선으로 표시하되 점으로 처리하는 방법이 없을까... *생각해 보세요* 글쎄, 어쨌든 정보 주셔서 감사합니다!
답: 문제를 선택하세요안녕하세요 여러분,
선을 선택하면 해당 선을 구성하는 모든 점이 선택됩니다. 선의 해당 영역만 선택하려면 선에 점이 있어야 합니다.
도움이 되었기를 바랍니다.
크리스
답: 문제를 선택하세요흥미롭습니다. 나에게도 같은 일이 일어납니다.또한 올가미 도구가 자유롭게 그리는 다각형이 아닌 직사각형으로 바뀌는 것을 확인했습니다.그러나 이는 그래프 빌더에서 점 대신 선 옵션을 선택한 경우에만 발생합니다.나는 그 변수의 평균에 대해 그려진 선을 사용하면 모든 점이 평균을 계산하는 데 사용되기 때문에 모든 점이 강조 표시된다고 추측합니다. 그러나 그것은 추측일 뿐이며 누군가가 미스터리를 풀 수 있는지 보고 싶습니다.다른 질문에 관해서는 ColMax 및/또는 ColRank 기능을 조합하여 원하는 포인트를 얻을 수 있습니까?
답: 문제를 선택하세요
이는 두 줄의 데이터만 포함된 매우 간단한 그래프입니다. 매우 단순해야 하지만 어떤 이유로 최고점만 선택하면 전체 스프레드시트가 강조 표시되는 것을 볼 수 있습니다.
두 번째 부분에서는 현재 가지고 있는 스크립트로 스크립트를 작성하는 방법을 더 찾고 있습니다. 데이터 포인트를 찾아 선택해야 한다면 해당 포인트는 이미 패배한 것입니다. 제가 알고 있는 변수는 그것이 발생하는 열입니다. 각 참조 피크 앞에는 항상 0이 있으며 라인의 각 발생에 대한 피크의 가장 높은 지점에만 관심이 있습니다.
물론 책을 살펴보겠지만 시간은 사람을 기다리지 않으며 이 프로젝트의 목적은 우리가 이미 수행하고 있는 작업을 간소화하는 것입니다. Excel에서 이미 가지고 있는 값을 찾기 위해 JMP가 필요하지 않습니다. ^.^
답: 문제를 선택하세요아래는 몇 가지 포인트가 선택된 차트입니다. 차트와 데이터 테이블 모두에서 볼 수 있듯이 어떤 포인트가 선택되었는지 확인할 수 있습니다.그러나 문제가 무엇인지 확인하려면 사용 중인 차트와 데이터 테이블에 포함된 내용에 대한 자세한 정보를 제공해야 합니다.첫 번째 단계로 JMP 설치와 함께 제공되는 Essential Graphing 책을 읽어 보시기 바랍니다.
도움말==>도서==>필수 그래프 작성

두 번째 질문에 관해서는 그렇습니다. 선에서 선택한 점을 결정하고 해당 값을 차트에 표시할 수 있습니다.레이블에 사용할 열을 지정한 다음 표시할 데이터 포인트를 선택하면 됩니다.다시 말하지만, 이 내용은 Essential Graphing 책에서 다룹니다.