<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Colour Plots by Pass and Fail in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881231#M104517</link>
    <description>&lt;P&gt;I have a script that plots metrics by wafer number.&amp;nbsp; If the wafer falls below a threshold of passing die, it is designated a fail.&amp;nbsp; Is there a way to have the colours of the plots reflect pass and fail aside from creating a separate grading column for each parameter?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SpannerHead_0-1750790204679.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/77284i36F81B16502C5B7A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SpannerHead_0-1750790204679.png" alt="SpannerHead_0-1750790204679.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SpannerHead_1-1750790423441.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/77285i1E0076596EE98734/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SpannerHead_1-1750790423441.png" alt="SpannerHead_1-1750790423441.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 24 Jun 2025 18:41:52 GMT</pubDate>
    <dc:creator>SpannerHead</dc:creator>
    <dc:date>2025-06-24T18:41:52Z</dc:date>
    <item>
      <title>Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881231#M104517</link>
      <description>&lt;P&gt;I have a script that plots metrics by wafer number.&amp;nbsp; If the wafer falls below a threshold of passing die, it is designated a fail.&amp;nbsp; Is there a way to have the colours of the plots reflect pass and fail aside from creating a separate grading column for each parameter?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SpannerHead_0-1750790204679.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/77284i36F81B16502C5B7A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SpannerHead_0-1750790204679.png" alt="SpannerHead_0-1750790204679.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SpannerHead_1-1750790423441.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/77285i1E0076596EE98734/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SpannerHead_1-1750790423441.png" alt="SpannerHead_1-1750790423441.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 18:41:52 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881231#M104517</guid>
      <dc:creator>SpannerHead</dc:creator>
      <dc:date>2025-06-24T18:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881246#M104518</link>
      <description>&lt;P&gt;maybe something like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here( 1 );
dt = current data table();
dt &amp;lt;&amp;lt; Color by Column( column(1) );
dt &amp;lt;&amp;lt; Color Rows by Row State;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;where "column(1)" is the column with a indicator variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;that last line isn't necessary, it colors all the cells in a row by the row state&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 19:57:46 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881246#M104518</guid>
      <dc:creator>Byron_JMP</dc:creator>
      <dc:date>2025-06-24T19:57:46Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881250#M104519</link>
      <description>&lt;P&gt;a universal plot where green is pass and red is fail - for the value that is used on the y axis &lt;STRONG&gt;at this moment&lt;/STRONG&gt;?&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 20:49:31 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881250#M104519</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-24T20:49:31Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881251#M104520</link>
      <description>&lt;P&gt;&lt;LI-MESSAGE title="🙏 is in spec (value)" uid="774331" url="https://community.jmp.com/t5/JMP-Wish-List/is-in-spec-value/m-p/774331#U774331" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;is one of the ingredients to make this rock.&lt;BR /&gt;With 14 kudos (2025-06) there is a good chance that it will be available in a future version&amp;nbsp;in a few years' time.&lt;BR /&gt;However, to be sure, please vote!&amp;nbsp;every Kudo counts : )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once this function is available, one an create a transform column in the report via&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;newCol = is in spec(:yCol)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and use this column as color.&lt;BR /&gt;&lt;BR /&gt;In addition, one need this functionality:&lt;LI-MESSAGE title="Column Switcher + Transform Columns" uid="738432" url="https://community.jmp.com/t5/JMP-Wish-List/Column-Switcher-Transform-Columns/m-p/738432#U738432" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;&lt;BR /&gt;At the moment there is close to 0 interest, so little chance that THIS feature will come : (&lt;BR /&gt;However, voting is still&amp;nbsp;running ...&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Independent of the future of this wish - the good thing is: &lt;BR /&gt;One can implement the functionality manually - by&amp;nbsp;triggering an action every time the user changes the selection in the column switcher. Unfortunately, at the moment, there are several "bugs" with transform columns which have to be fixed to make this work (smoothly):&amp;nbsp;&lt;LI-MESSAGE title="improvements for Transform Column" uid="684044" url="https://community.jmp.com/t5/JMP-Wish-List/improvements-for-Transform-Column/m-p/684044#U684044" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 21:32:29 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881251#M104520</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-24T21:32:29Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881252#M104521</link>
      <description>&lt;P&gt;In September, with the introduction of version 19, JMP will get a cool new feature: &lt;STRONG&gt;Scoping&lt;/STRONG&gt;.&lt;BR /&gt;&lt;LI-MESSAGE title="Transform Columns - as comfortable as Summary Statistics? (💚)" uid="676711" url="https://community.jmp.com/t5/JMP-Wish-List/Transform-Columns-as-comfortable-as-Summary-Statistics/m-p/676711#U676711" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;With this functionality, Transform Columns will get the ability to know which &lt;STRONG&gt;rows&lt;/STRONG&gt; are used for a subplot, not excluded, selected by the local data filter, ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This topic here is kind of linked, but&amp;nbsp;&lt;EM&gt;orthogonal&lt;/EM&gt;.&lt;BR /&gt;What is needed here is the knowledge: which &lt;STRONG&gt;column&lt;/STRONG&gt;&amp;nbsp;is used at a specifix position in Graph Builder.&lt;BR /&gt;something like&amp;nbsp;&lt;FONT face="courier new,courier"&gt;:@X1&lt;/FONT&gt; - to access whatever column is used as first X in GraphBuilder ,&amp;nbsp;&lt;FONT face="courier new,courier"&gt;:@Y3&lt;/FONT&gt; (used as 3rd Y in GraphBuilder), &lt;FONT face="courier new,courier"&gt;:@wrap&lt;/FONT&gt; (used as wrap), and so on ...&lt;BR /&gt;&lt;BR /&gt;Maybe, we can convince&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/494"&gt;@XanGregg&lt;/a&gt;&amp;nbsp;of the superpower which is hidden behind this feature ....&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 21:15:31 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881252#M104521</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-24T21:15:31Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881253#M104522</link>
      <description>&lt;P&gt;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/26800"&gt;@hogi&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Right.&amp;nbsp; I can apply a universal colour scheme to all the graphs but I need pass/fail on a parameter basis.&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jun 2025 21:17:34 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881253#M104522</guid>
      <dc:creator>SpannerHead</dc:creator>
      <dc:date>2025-06-24T21:17:34Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881278#M104527</link>
      <description>&lt;P&gt;Currently I think this would require scripting with something like&amp;nbsp;&amp;lt;&amp;lt; Make Column Switch Handler&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 04:35:47 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881278#M104527</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2025-06-25T04:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881303#M104528</link>
      <description>&lt;P&gt;Yes, I guess so.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;unfortunately, updating the plot is not trivial: With current JMP, one doesn't get a handle to talk to the transform column.&lt;BR /&gt;A workaround: create a new transform column with each call of the Column Switch Handler, empty the plot and use the new column&lt;BR /&gt;... resulting in the loss of all the current plot settings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;more details can be found here:&amp;nbsp;&lt;LI-MESSAGE title="how to reference a Transform Column?" uid="676114" url="https://community.jmp.com/t5/Discussions/how-to-reference-a-Transform-Column/m-p/676114#U676114" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp; and here:&amp;nbsp;&lt;LI-MESSAGE title="improvements for Transform Column" uid="684044" url="https://community.jmp.com/t5/JMP-Wish-List/improvements-for-Transform-Column/m-p/684044#U684044" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;The second wish is similar to&amp;nbsp;&lt;LI-MESSAGE title="Make New Formula Column return references to the newly created columns" uid="589515" url="https://community.jmp.com/t5/JMP-Wish-List/Make-New-Formula-Column-return-references-to-the-newly-created/m-p/589515#U589515" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;, just for Transform Columns.&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 05:51:13 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881303#M104528</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-25T05:51:13Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881305#M104529</link>
      <description>&lt;P&gt;Is there a specific reason to forcefully use Transform Columns? Current JMP version does offer plenty of other options which could be used (depending on the final goal). "Dynamic" formulas will make things like this easier but depending on their implementation they will have (plenty of?) limitations.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Easiest option with something like this would be to stack the table, join spec limits to that table and use that for plotting. This won't always be possible, but it is simpler than using Column Switch Handler.&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 05:54:58 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881305#M104529</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2025-06-25T05:54:58Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881361#M104535</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/53914"&gt;@SpannerHead&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I made a script that will test whether the mean of each wafer has exceeded the LSL or USL set as a column property, and will subsequently colour the rows based on a fail/pass - you can run this and the colours will come through to any of the reports in JMP (i.e. Graph Builder)&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;names default to here(1);
dt = Current Data Table();
dt&amp;lt;&amp;lt;clear select;
//get the limits

Spec_limits = dt:Y &amp;lt;&amp;lt; get property( "Spec Limits" );
USL_val=try(spec_limits["usl"]);
LSL_val=try(spec_limits["lsl"]);


// Calculate the mean for each wafer group
Summarize( wafer_meangroup= By( :Wafer ),value_means= Mean( :Y ) );

failed_rows={}; //create a blank list that can store the rows that have failed

//add to an associative array
Assoc_array=associative array(wafer_meangroup,value_means); //get the association of wafer name to the mean value

//Run a for loop that checks every item in the wafer&amp;gt;mean list and sees if it exceeds the USL, if it does then it's inserted into the failed_rows list
for(i=1, i&amp;lt;=n items(Assoc_array),i++,
	if(Assoc_array[wafer_meangroup[i]]&amp;gt;=usl_val, insert into(failed_rows, get=dt&amp;lt;&amp;lt;get rows where(:Wafer==wafer_meangroup[i])), {};
));

//Run a for loop that checks every item in the wafer&amp;lt;mean list and sees if it exceeds the LSL, if it does then it's inserted into the failed_rows list
for(i=1, i&amp;lt;=n items(Assoc_array),i++,
	if(Assoc_array[wafer_meangroup[i]]&amp;lt;=lsl_val, insert into(failed_rows, get=dt&amp;lt;&amp;lt;get rows where(:Wafer==wafer_meangroup[i])), {};
));

write(failed_rows);

//Convert the failed rows list from a nested list to a continuous - probably an easier way to achieve this!
// Create a location to store the list
continuous_failed_Rows = {};

// Loop through each sublist in the nested list
for (i = 1, i &amp;lt;= N Items(failed_rows), i++,
    // Loop through each element in the sublist
    for (j = 1, j &amp;lt;= N Items(failed_rows[i]), j++, 
        // Insert each element into the continuous list
        Insert Into(continuous_failed_Rows, failed_rows[i][j]);
    )
    );
    

// Display the continuous list
Write(continuous_failed_Rows);



dt&amp;lt;&amp;lt;select rows(continuous_failed_Rows);
dt&amp;lt;&amp;lt;colors("red");
dt&amp;lt;&amp;lt;invert row selection;
dt&amp;lt;&amp;lt;colors("green");




&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 25 Jun 2025 08:13:30 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881361#M104535</guid>
      <dc:creator>Ben_BarrIngh</dc:creator>
      <dc:date>2025-06-25T08:13:30Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881389#M104539</link>
      <description>&lt;P&gt;does this script work with Column Switcher?&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 09:14:04 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881389#M104539</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-25T09:14:04Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881391#M104541</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366"&gt;@jthi&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Is there a specific reason to forcefully use Transform Columns?&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR /&gt;I am happy with any solution.&lt;BR /&gt;&lt;BR /&gt;I agree with&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/53914"&gt;@SpannerHead&lt;/a&gt;&amp;nbsp;: no new columns should be added &lt;STRONG&gt;to the data table&lt;/STRONG&gt; - just to calculate the color values.&lt;BR /&gt;So a Transform Column, dynamically generated in the report was a local step. And it's very convenient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stack table etc.: Definitely OK as a "workaround" as long as the functionality is missing.&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 09:32:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881391#M104541</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-25T09:32:27Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881397#M104545</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/26800"&gt;@hogi&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No,&amp;nbsp; I've left this so it's agnostic of the report that is being opened to allow for flexibility, instead referring just to the data table. You could easily create an additional script to this to pull out the currently displayed Y variable name in whichever report is being used and have the script update according to that or use 'Make Filter Change Handler' to trigger the script searching for a change to the name&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 10:02:45 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881397#M104545</guid>
      <dc:creator>Ben_BarrIngh</dc:creator>
      <dc:date>2025-06-25T10:02:45Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881406#M104547</link>
      <description>&lt;P&gt;Ah, I see.&lt;/P&gt;
&lt;P&gt;This seems to change also the colors in all the other plots : (&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 10:44:30 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881406#M104547</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-25T10:44:30Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881414#M104548</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/26800"&gt;@hogi&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've adapted the script to take advantage of the 'Graphics Scripts' you can apply to frameboxes to track what the column switcher is that is open and to then change the colour based on the Y being shown&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;names default to here(1);

//Setting up an example data set with some columns to work from - not needed for actual use
dt = Open("$SAMPLE_DATA/Variability Data/Wafer.jmp");
:"Y"n&amp;lt;&amp;lt;set property("Spec Limits", {LSL(75), USL(78)});
dt&amp;lt;&amp;lt;clear select;
dt:wafer&amp;lt;&amp;lt;set data type("Character");//Temporary change to this to become character - for nominal data would need to add a section to check data type and alter the script in a choice of two different expressions (a script for character and script for nominal)
dt&amp;lt;&amp;lt;New Column("Y2", "Numeric", "Continuous", Formula(Random Normal(20,10)));
:"Y2"n&amp;lt;&amp;lt;set property("Spec Limits", {LSL(0), USL(20)});

//Set up your initial graph/visualisation - this is set up for Graph builder but should be interchangable

gb_expr=gb=Graph Builder(
	Variables( X( :Wafer ), Y( :Y ) ),
	Elements( Points( X, Y, Legend( 5 ) ) ),
);

//Apply a column switcher
columnswitcher=gb&amp;lt;&amp;lt;Column Switcher( :Y, {:Y, :Y2} );//define your column names here

//Define the initial column name and create a blank for the previous column used in the switcher
col_name="Y";
previousColumn = "";

report(gb)[FrameBox(1)]&amp;lt;&amp;lt; add graphics script( ( checkAndRunScript();));//grab the current column name and run the method in run_expr;

// Function to check for changes and run the script
checkAndRunScript = function( {},
    currentColumn = columnSwitcher &amp;lt;&amp;lt; get current;
    if (currentColumn != previousColumn,
        previousColumn = currentColumn;
        run_expr;
    ),
        -1;//return -1 if no changes happens = this is needed to stop the script running again and again
);


get_limits_expr=expr(
//get the limits

Spec_limits = dt:Y_name &amp;lt;&amp;lt; get property( "Spec Limits" );
USL_val=try(spec_limits["usl"]);
LSL_val=try(spec_limits["lsl"]);
);

// Calculate the mean for each wafer group
get_means_expr=expr(Summarize( wafer_meangroup= By( :Wafer ),value_means= Mean(y_name) ););

checklist_Expr=expr(failed_rows={}; //create a blank list that can store the rows that have failed

//add to an associative array
Assoc_array=associative array(wafer_meangroup,value_means); //get the association of wafer name to the mean value

//Run a for loop that checks every item in the wafer&amp;gt;mean list and sees if it exceeds the USL, if it does then it's inserted into the failed_rows list
for(i=1, i&amp;lt;=n items(Assoc_array),i++,
	if(Assoc_array[wafer_meangroup[i]]&amp;gt;=usl_val, insert into(failed_rows, dt&amp;lt;&amp;lt;get rows where(:Wafer==wafer_meangroup[i])), {};
));


//Run a for loop that checks every item in the wafer&amp;lt;mean list and sees if it exceeds the LSL, if it does then it's inserted into the failed_rows list
for(i=1, i&amp;lt;=n items(Assoc_array),i++,
	if(Assoc_array[wafer_meangroup[i]]&amp;lt;=lsl_val, insert into(failed_rows, dt&amp;lt;&amp;lt;get rows where(:Wafer==wafer_meangroup[i])), {};
));

);

convertlist_Expr=expr(

//Convert the failed rows list from a nested list to a continuous - probably an easier way to achieve this!
// Create a location to store the list
continuous_failed_Rows = {};

// Loop through each sublist in the nested list
for (i = 1, i &amp;lt;= N Items(failed_rows), i++,
    // Loop through each element in the sublist
    for (j = 1, j &amp;lt;= N Items(failed_rows[i]), j++, 
        // Insert each element into the continuous list
        Insert Into(continuous_failed_Rows, failed_rows[i][j]);
    )
    );
    

// Display the continuous list
Write(continuous_failed_Rows););


colour_rows=expr(
dt&amp;lt;&amp;lt;select rows(continuous_failed_Rows);
dt&amp;lt;&amp;lt;colors("red");
dt&amp;lt;&amp;lt;invert row selection;
dt&amp;lt;&amp;lt;colors("green"););

get_col_name_expr=expr(Y_name=column(col_name));

run_expr=expr(
get_col_name_expr;
get_limits_expr;
get_means_expr;
checklist_Expr;
colour_rows;
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 11:04:02 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881414#M104548</guid>
      <dc:creator>Ben_BarrIngh</dc:creator>
      <dc:date>2025-06-25T11:04:02Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881418#M104550</link>
      <description>&lt;P&gt;Transform column&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
ml = dt &amp;lt;&amp;lt; Manage Limits(Process Variables(Column Group("Processes")), Invisible);
ml &amp;lt;&amp;lt; Show Limits All;
ml &amp;lt;&amp;lt; Save to Column Properties;
ml &amp;lt;&amp;lt; Close window;



dt &amp;lt;&amp;lt; Set Table Variable("CURCOL", "NPN1");
dt &amp;lt;&amp;lt; Transform Column("Color", Numeric, Nominal,  // using New Column is way simpler and less error-prone
	Formula(
		specs = Column(:CURCOL) &amp;lt;&amp;lt; Get Property("Spec Limits");
		Col Min(AsColumn(Column(:CURCOL)), :lot_id) &amp;gt; specs["LSL"] &amp;amp; Col Max(AsColumn(Column(:CURCOL)), :lot_id) &amp;lt; specs["USL"]
	)
);

gb = dt &amp;lt;&amp;lt; Graph Builder(
	Size(528, 448),
	Show Control Panel(0),
	Variables(X(:lot_id), Y(:NPN1), Color(:Color)),
	Elements(Points(X, Y, Legend(3)))
);

cw = gb &amp;lt;&amp;lt; Column Switcher(
	:NPN1,
	{:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
	:INM1, :INM2, :VPM1, :VPM2, :VPM3, :PMS1, :SNM1, :SPM1, :NPN5, :EP2, :ZD6,
	:PBA, :PLG, :CAP, :PBA3, :PLG2, :PNP5, :NPN6, :PNP6, :PNP7, :NPN7, :PNP8,
	:IVP3, :IVP4, :IVP5, :IVP6, :PNP9, :NPN8, :NPN9, :IVP7, :NPN10, :N_1, :PBA1,
	:WPR1, :B10, :PLY10, :VBE210, :VTN210, :VTP210, :SIT2, :SIT3, :INV2, :INV3,
	:INV4, :INV5, :FST1, :FST2, :RES1, :RES2, :PNM1, :PPM1, :FNM1, :FPM1, :FST3,
	:FST4, :RES3, :RES4, :A1, :B1, :A2N, :A2P, :A2P1, :IVP8, :IVP9, :DE_H1,
	:NF_H1, :ESM1, :ESM2, :ESP1, :YFU1, :VPM4, :PBA2, :PBB1, :LYA1, :LYB1, :DEM1,
	:DEP1, :NFM1, :PLY1, :VDP1, :VDP2, :SNW1, :RSP2, :PLY2, :RSP1, :VDP3, :PBL1,
	:PLG1, :VDP4, :SPW1, :VIA1, :INM3, :VPM5, :VPM6, :INM4, :VPM7, :M1_M1,
	:M2_M2, :P1_P1, :E2A1, :E2B1, :NPN11, :IVP10, :PNP10, :INM5, :VPM8, :VPM9,
	:INM6, :VPM10, :N2A1, :N2B1, :NM_L1, :P2A1, :P2B1, :PM_L1, :P1, :M1}
);


pre = Function({prevcol, curcol, switcher},
	1;
);
Eval(EvalExpr(
	post = Function({prevcol, curcol, switcher},
		Expr(dt) &amp;lt;&amp;lt; Set Table Variable("CURCOL", curcol);
	);	
	:Color &amp;lt;&amp;lt; Reset Transform();
));
handler = cw &amp;lt;&amp;lt; Make Column Switch Handler(pre, post);

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;With new column&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
ml = dt &amp;lt;&amp;lt; Manage Limits(Process Variables(Column Group("Processes")), Invisible);
ml &amp;lt;&amp;lt; Show Limits All;
ml &amp;lt;&amp;lt; Save to Column Properties;
ml &amp;lt;&amp;lt; Close window;



dt &amp;lt;&amp;lt; Set Table Variable("CURCOL", "NPN1");
dt &amp;lt;&amp;lt; New Column("Color", Numeric, Nominal, &amp;lt;&amp;lt; Hide(1), &amp;lt;&amp;lt; Exclude(1),
	&amp;lt;&amp;lt; Set Property("Value Colors", {0 = 67, 1 = 36}),
	Formula(
		specs = Column(:CURCOL) &amp;lt;&amp;lt; Get Property("Spec Limits");
		Col Min(AsColumn(Column(:CURCOL)), :lot_id) &amp;gt; specs["LSL"] &amp;amp; Col Max(AsColumn(Column(:CURCOL)), :lot_id) &amp;lt; specs["USL"]
	)
);

gb = dt &amp;lt;&amp;lt; Graph Builder(
	Size(528, 448),
	Show Control Panel(0),
	Variables(X(:lot_id), Y(:NPN1), Color(:Color)),
	Elements(Points(X, Y, Legend(3)))
);

cw = gb &amp;lt;&amp;lt; Column Switcher(
	:NPN1,
	{:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
	:INM1, :INM2, :VPM1, :VPM2, :VPM3, :PMS1, :SNM1, :SPM1, :NPN5, :EP2, :ZD6,
	:PBA, :PLG, :CAP, :PBA3, :PLG2, :PNP5, :NPN6, :PNP6, :PNP7, :NPN7, :PNP8,
	:IVP3, :IVP4, :IVP5, :IVP6, :PNP9, :NPN8, :NPN9, :IVP7, :NPN10, :N_1, :PBA1,
	:WPR1, :B10, :PLY10, :VBE210, :VTN210, :VTP210, :SIT2, :SIT3, :INV2, :INV3,
	:INV4, :INV5, :FST1, :FST2, :RES1, :RES2, :PNM1, :PPM1, :FNM1, :FPM1, :FST3,
	:FST4, :RES3, :RES4, :A1, :B1, :A2N, :A2P, :A2P1, :IVP8, :IVP9, :DE_H1,
	:NF_H1, :ESM1, :ESM2, :ESP1, :YFU1, :VPM4, :PBA2, :PBB1, :LYA1, :LYB1, :DEM1,
	:DEP1, :NFM1, :PLY1, :VDP1, :VDP2, :SNW1, :RSP2, :PLY2, :RSP1, :VDP3, :PBL1,
	:PLG1, :VDP4, :SPW1, :VIA1, :INM3, :VPM5, :VPM6, :INM4, :VPM7, :M1_M1,
	:M2_M2, :P1_P1, :E2A1, :E2B1, :NPN11, :IVP10, :PNP10, :INM5, :VPM8, :VPM9,
	:INM6, :VPM10, :N2A1, :N2B1, :NM_L1, :P2A1, :P2B1, :PM_L1, :P1, :M1}
);


pre = Function({prevcol, curcol, switcher},
	1;
);
Eval(EvalExpr(
	post = Function({prevcol, curcol, switcher},
		Expr(dt) &amp;lt;&amp;lt; Set Table Variable("CURCOL", curcol);
	);	
));
handler = cw &amp;lt;&amp;lt; Make Column Switch Handler(pre, post);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;And if no column switcher is necessary this can be made simpler (or more complicated, depending on how much JSL is written).&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 11:38:06 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881418#M104550</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2025-06-25T11:38:06Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881470#M104562</link>
      <description>&lt;P&gt;Maybe I need to think about this one differently.&amp;nbsp; Could I create a coherent table below the graph with wafer grading as opposed to a colour scheme?&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 14:38:33 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881470#M104562</guid>
      <dc:creator>SpannerHead</dc:creator>
      <dc:date>2025-06-25T14:38:33Z</dc:date>
    </item>
    <item>
      <title>Re: Colour Plots by Pass and Fail</title>
      <link>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881778#M104577</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366"&gt;@jthi&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Transform column&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Great idea to use a table variable as intermediate storage location for the column reference.&lt;BR /&gt;&lt;CODE class=" language-jsl"&gt;Expr(dt) -&amp;nbsp;&lt;/CODE&gt;Nice trick!&lt;BR /&gt;&lt;BR /&gt;As an alternative, one can store the transform column with the report (the standard way when it's generated via right click in the column list of the dialog window).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;names default to here(1);
dt = current data table();
gb = Graph Builder(
	Transform Column(
		"Col",
		Nominal,
		Formula(
			specs = Column( :CURCOL ) &amp;lt;&amp;lt; Get Property( "Spec Limits" );
			Col Min( As Column( Column( :CURCOL ) ), :lot_id ) &amp;gt; specs["LSL"] &amp;amp;
			Col Max( As Column( Column( :CURCOL ) ), :lot_id ) &amp;lt; specs["USL"];
		)
	),
	Variables( X( :lot_id ), Y( :PBA3 ), Color( :Col ) ),
	Elements( Points( X, Y ) ),
	Column Switcher(:PBA3,{:PBA3,:SPM1})
);

cs = current report()["Column Switcher"] &amp;lt;&amp;lt; get scriptable object;

Eval(EvalExpr(
	post = Function({prevcol, curcol, switcher},
		Expr(dt) &amp;lt;&amp;lt; Set Table Variable("CURCOL", curcol);
	);	
));
handler = cs &amp;lt;&amp;lt; Make Column Switch Handler(1, post);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;:)&lt;/img&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jun 2025 21:06:14 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Colour-Plots-by-Pass-and-Fail/m-p/881778#M104577</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-06-25T21:06:14Z</dc:date>
    </item>
  </channel>
</rss>

