반도체 웨이퍼 맵 플롯. 오류를 어떻게 해결하나요?Names Default To Here(1);
// Function to recode a selected column
recode_column = Function({dataTable, columnToRecode, newColumnName},
// Check if column exists
If(Column(dataTable, columnToRecode) != {},
// Create a mapping for recoding
aa_recode = Associative Array();
For(i = 1, i <= N Row(dataTable), i++,
aa_recode[Column(dataTable, columnToRecode) << Get Value(i)] = Column(dataTable, columnToRecode) << Get Value(i);
);
dataTable << New Column(newColumnName, Character, Nominal, << Set Each Value(
aa_recode[Column(dataTable, columnToRecode)]
));
cols = {};
For(i = 1, i <= N Col(dataTable), i++,
cols[N Items(cols) + 1] = Column(dataTable, i) << Get Name
);
recodeColListBox << Set Items(cols);
colorColListBox << Set Items(cols); // Refresh heatmap plotting list
Show Message("Column recoded and new column added: " || newColumnName);
,
Show Message("Selected column does not exist.")
);
);
// Function to plot the heatmap
PlotHeatmap = Function({dataTable, colorColumnName},
If(colorColumnName != "",
Graph Builder(
Size(1500, 800),
Show Control Panel(0),
Data Table(dataTable),
Variables(
X(:x_Location),
Y(:y_Location),
Color(Column(dataTable, colorColumnName))
),
Elements(Heatmap(X, Y, Legend(4)))
)
,
Show Message("Please select a column for color.")
)
);
list = {};
For(i = 1, i <= N Table(), i++,
list[i] = Data Table(i) << Get Name
);
// Create the window
win = New Window("JMP ADDIN",
H List Box(
V List Box(
Panel Box("Choose a source data table",
dtListBox = List Box(list, max selected(1))
)
),
Button Box("Get Columns",
chosen = Data Table((dtListBox << Get Selected)[1]);
If(chosen != {},
cols = {};
For(i = 1, i <= N Col(chosen), i++,
cols[N Items(cols) + 1] = Column(chosen, i) << Get Name
);
recodeColListBox << Set Items(cols);
colorColListBox << Set Items(cols); // Refresh for heatmap plotting
,
Show Message("Please select a valid data table.")
);
),
// Panel for selecting columns to recode
V List Box(
Panel Box("Select Columns for Recode",
recodeColListBox = List Box("")
)
),
// Button to recode a column
Button Box("Recode Column",
chosen = Data Table((dtListBox << Get Selected)[1]);
recode_col = recodeColListBox << Get Selected;
If(recode_col != "",
new_col_name = "Recode_" || recode_col; // Define new column name
recode_column(chosen, recode_col, new_col_name);
// Refresh column list after recoding
cols = {};
For(i = 1, i <= N Col(chosen), i++,
cols[N Items(cols) + 1] = Column(chosen, i) << Get Name
);
recodeColListBox << Set Items(cols);
colorColListBox << Set Items(cols); // Ensure the new column is available for heatmap plotting
,
Show Message("Please select a column to recode.")
);
),
// Panel for selecting columns to plot heatmap
V List Box(
Panel Box("Select Columns for Heatmap",
colorColListBox = List Box("")
)
),
// Button to plot the heatmap
Button Box("Plot Heatmap",
selectedColorColumn = colorColListBox << Get Selected;
If(selectedColorColumn != "",
chosen = Data Table((dtListBox << Get Selected)[1]);
If(chosen != {},
PlotHeatmap(chosen, selectedColorColumn);
,
Show Message("Selected data table is invalid.")
);
,
Show Message("Please select a column for color.")
);
)
)
);작업 흐름: 테이블 선택--> 다시 코딩할 열 선택--> 열 다시 코딩(문자 열과 숫자 열 모두에 대해 다시 코딩할 수 있도록 도와주세요)---> 열 목록 새로 고침--> 하나 이상의 열 선택 --> 히트 맵 그리기
도움이 필요합니다. 1) 숫자 데이터 유형 열만 다시 코딩할 수 있는 현재 스크립트를 디버깅합니다.
2) 다시 코딩할 문자 유형 열을 선택하는 방법은 무엇인가요?
3) jmp(columns--> Recode)를 사용해 recode ui 사전 설정을 ui의 일부로 열 수 있나요?
기본 데이터 분석 및 모델링데이터 블렌딩 및 정리윈도우Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?이 코드는 어떤 LLM에서 만든 것 같아서 작은 실수가 많고 JMP에 없는 함수 활용이 많습니다. 올바른 결과와 출처에 대한 설명이 포함된 예시 표를 제공해 주시겠습니까?
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?
다음은 예입니다. '로트 번호'를 다시 코딩하여 그룹화하고 '다시 코딩된 열'을 사용하여 플롯 열 지도를 만듭니다.

예 2: 테스터를 그룹화한 다음 다시 코딩된 열을 사용하여 히트맵을 그립니다.
이것이 도움이 되기를 바랍니다
감사해요
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?그룹화는 무엇을 기준으로 하나요? 연속된 행?
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?예 또는 다시 코딩된 열을 사용
예를 들어 :recoded column=1( 따라서 테스터 1과 2를 그룹화)Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?테스터 3이 2로 어떻게 바뀌는지, 이 두 열만으로 어떤 유형의 히트맵을 찾고 있는지 아직 확실하지 않습니다.




Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?재코딩에 사용할 규칙은 무엇입니까? 귀하의 예에서 보면 재코딩은 단순히 행 1&2를 가져와 그룹화한 다음 행 3&4를 가져와 그룹화하는 것 같습니다. 첫 번째 그룹화에는 값 1을, 두 번째 그룹화에는 값 2를 부여하는 식으로 그룹화합니다.
이 경우, 재코딩된 열 수식은 다음과 같습니다.
Ceiling(Row() / 2)
이게 당신이 찾고 있는 것인가요? lot_no 또는 tester의 값에 의존하지 않고 행 번호에만 의존하기 때문에 문자 및 숫자 데이터 모두에 작동합니다.
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?재코딩은 UI를 사용하여 선택해야 하며 사용자에 따라 변경할 수 있습니다. 재코딩 열이 트리거되면 사용자는 원하는 대로 재코딩한 다음 새 열을 추가할 수 있습니다. 그런 다음 사용자에게 새 열을 선택하고 이를 사용하여 플롯을 구성하라는 메시지가 표시됩니다. 위의 내용은 단지 예일 뿐입니다.Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?다시 코딩된 열은 페이지(:recoded column)에 배치할 수 있습니다. 선택한 열의 다시 코딩을 트리거한 다음 새로 고침 시 열 목록에 추가하는 방법에 대한 도움이 필요합니다.Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?그래서 당신은 다음과 같은 기능을 갖춘 UI를 원합니다.
- 사용자가 열을 선택하도록 합니다.
- 선택한 열에서 JMP 재코딩 플랫폼을 트리거합니다.
- 사용자가 제자리에서 작업을 사용하지 못하도록 방지
- 어떤 새로운 열이 생성되었는지 감지
- 새로 생성된 열을 기반으로 플롯을 생성합니다.
?
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?예!Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?사용자가 리코딩 플랫폼을 자유롭게 사용할 수 있게 하려는 경우 이 작업은 생각보다 간단하지 않을 수 있습니다.
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?그렇게 할 수 있는 방법이 있나요? 아니면 이런 작업을 그 순서대로 자동화하는 다른 접근 방식이 있나요?
감사해요Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?스크립트에 대한 사양을 다시 생각해 보아야 한다고 생각합니다. 무엇이 필요한지, 사용자가 JMP 플랫폼을 사용하여 무엇을 할 수 있는지, recode를 사용하고 새 열을 선택한 후에 스크립트를 실행할 수 있는지, 등등
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?하나의 열 목록으로 충분할 수 있습니다. 사용자는 2개의 버튼을 통해 선택한 열을 다시 코딩할지 아니면 플롯할지 결정할 수 있습니다.

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each( {col}, {:age, :height, :weight}, col << Set Modeling Type( "Nominal" ) );
New Window( "simple GUI", << Type("Dialog"),
lb = Filter Col Selector( width( 150 ) ),
Button Box( "recode",
cols = lb << get selected();
dt << select columns( cols );
dt << Recode;
),
Button Box( "plot",
cols = lb << get selected();
If( N Items( cols) >= 2 ,
xcol = cols[1];
ycol = cols[2];
Graph Builder( Variables( X(Eval(xcol) ), Y( Eval(ycol) ) ), Elements( Heatmap( X, Y ) ) );
,
Caption( "select 2 columns" )
);
)
);Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?알겠습니다. 고맙습니다. 열을 다시 코딩한 다음 해당 열을 사용하여 그래프를 그릴 수 있는 방법이 있나요? 아니면 새 GUI를 열어서 그릴 수 있나요?
Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?예.
열을 선택하고 바꾸기를 통해 다시 코딩한 다음 플롯 버튼을 클릭하면 됩니다.
현재로서는 의미 있는 히트맵을 생성하기 위해 2개의 열(x와 y)을 선택해야 합니다. 필요한 플롯을 생성하기 위해 코드를 조정하기만 하면 됩니다.Re: 반도체 웨이퍼 맵 플롯. 오류를 어떻게 고칠까요?2단계를 결합한 워크플로를 설정하려는 이유를 설명해 주시겠습니까?
- 다시 코딩하다
- 구성
재코딩은 매우 일반적인 단계이지만 대부분의 경우 데이터 분석과는 별개인 데이터 큐레이션 워크플로 의 일부입니다. 왜 두 단계를 결합하고 싶습니까?
사용자는 열을 그리기 전에 매번 열을 다시 코딩해야 합니까?
사용자 A가 열을 다시 코딩한 후, 사용자 B는 다시 코딩한 열을 가져가서 다시 코딩할 필요가 없습니다. 아니면 사용자 A가 지나면 사라지는 "가상 열"[변환 열]을 선호하시나요? 그러면 사용자 B는 자신의 다시 코딩을 정의할 수 있습니다.
생성하려는 플롯의 예를 들어주시겠습니까? 항상 같은 유형의 플롯인가요? 히트맵인가요? 어떤 열을 플롯해야 하나요?
원래 열과 다시 코딩된 열? 3번째 열과 다시 코딩된 열? 2개의 열을 다시 코딩하여 그래프로 그리는 것?