<?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>JMPer Cable articles</title>
    <link>https://community.jmp.com/t5/JMPer-Cable/bg-p/jmper-cable</link>
    <description>JMPer Cable articles</description>
    <pubDate>Thu, 18 Nov 2021 17:51:47 GMT</pubDate>
    <dc:creator>jmper-cable</dc:creator>
    <dc:date>2021-11-18T17:51:47Z</dc:date>
    <item>
      <title>Innovation Manager Lee Laim on Micron’s analytics culture and the symbiotic relationship of domain expertise and statistics</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Innovation-Manager-Lee-Laim-on-Micron-s-analytics-culture-and/ba-p/437725</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Lee Liam.jpg" style="width: 258px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37659iD520DC01CD133E5D/image-dimensions/258x258?v=v2" width="258" height="258" role="button" title="Lee Liam.jpg" alt="Lee Laim says domain expertise and statistical approaches complement each other at Micron." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Lee Laim says domain expertise and statistical approaches complement each other at Micron.&lt;/span&gt;&lt;/span&gt;Lee Laim began his career at Micron Technology more than 14 years ago. Starting as a semiconductor yield engineer, he worked to monitor reliability and post-assembly yields on the production of dynamic random access memory (DRAM) products, flag yield limiting process deviations and perform electrical characterization and fault isolation. Embracing industrial statistics early on, Lee quickly rose through the ranks to become Innovation Manager.&lt;/P&gt;
&lt;P&gt;Today, he is responsible for implementing the company’s analytics vision via Industry 4.0 initiatives that drive quality improvements and cost savings at every stage of the &lt;A href="https://www.jmp.com/en_us/software/analytic-workflow.html#data-exploration-and-visualization" target="_blank" rel="noopener"&gt;manufacturing workflow&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Though his background is in semiconductor engineering and spectroscopy, Lee has become adept at statistical analysis, data mining and machine learning – all of which he says complement domain expertise at Micron.&lt;/P&gt;
&lt;P&gt;I sat down to talk with &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/147" target="_blank" rel="noopener"&gt;@leelaim&lt;/A&gt; about the role he’s played at Micron in advocating for the deployment of statistical approaches.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: You first joined Micron as a yield engineer, likely with not all that much experience in industrial statistics – at least comparatively speaking! But fast forward 14 years, and you’re in a role devoted entirely to analytics transformation and Industry 4.0. How would you say your enthusiasm for analytics has shaped your career path so far? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; The amount of data we collect requires constant innovation in data storage, retrieval and analytics. I feel like my current role as Innovation Manager is a direct result of relentless focus on connecting data to the business needs in my previous roles. Knowing how the data is generated, collected and stored is one-third of the battle; another third is knowing how to access, refine and interpret the data; and&amp;nbsp;the final third is being able to share the insights with the larger network.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What a great point about drawing a direct line between data and business needs – that’s really the essence of analytics culture: getting people to think about how they can use data to solve business challenges. What kinds of successes have helped you to sustain momentum for this kind of thinking? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; Improvements around simplifying data accessibility for more users through APIs has made it easier to get ideas off the ground and into production.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What is the value in having a workforce of engineers and scientists who, in addition to being domain experts, are also statistically literate? Has JMP in any way changed how domain experts at Micron apply their knowledge and skills?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; Domain expertise and statistical approaches complement each other at Micron. Domain experts will always have the upper hand in abstract thinking, while the computer is unrivaled in its ability to churn through massive amounts of data. &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; is a platform that allows our domain experts to code their insights to deploy on large data sets, leading to greater impact in less time.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: JMP offers a lot different resources for learning and engaging with other users – I’m thinking about things like the Early Adopter program and &lt;A href="https://discoverysummit.jmp/en/home.html?_ga=2.138417331.1852064205.1637167574-985288800.1593541003" target="_blank" rel="noopener"&gt;Discovery Summit&lt;/A&gt;. In your experience, what value do you get from participating in these kinds of programs? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; With the &lt;A href="https://www.jmp.com/en_us/early-adopter.html?utm_source=earlyadopter&amp;amp;utm_medium=redirect" target="_blank" rel="noopener"&gt;Early Adopter&lt;/A&gt; program, we get to learn about new functionality in upcoming releases. We also get to see different ways of using existing platforms. For example, using images as markers in the Graph Builder provides an intuitive dimension to the analytics.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone looking to cultivate a more mature analytics culture in their organization? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; Analytic vision has to be driven from the top. Alignment of platforms, methods, and training enables faster development cycles.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: How about advice for someone who’s just starting out with JMP? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lee:&lt;/STRONG&gt; It takes some time to understand how the different data types affect different analytic platforms. Once data types are understood, use the scripting and statistics index to learn and apply analytics to your data sets.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Nov 2021 15:20:38 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Innovation-Manager-Lee-Laim-on-Micron-s-analytics-culture-and/ba-p/437725</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-11-18T15:20:38Z</dc:date>
    </item>
    <item>
      <title>High-speed train versus scenic train: Drag-and-drop control charts versus dialogs</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/High-speed-train-versus-scenic-train-Drag-and-drop-control/ba-p/433046</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="train tracks.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37324i9F31538A65EED94E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="train tracks.png" alt="Will you take the high-speed or scenic route for creating your control chart?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Will you take the high-speed or scenic route for creating your control chart?&lt;/span&gt;&lt;/span&gt;When traveling by train from Paris to Geneva, you have two options: high-speed train or regional train. The high-speed train will get you there in 3 hours and 5 minutes. The regional train takes 8 hours and 35 minutes. While the high-speed train is the fastest and most comfortable, the regional train does not require you to reserve a seat and allows you to stop in beautiful cities along the way like Belfort, Basel, and Neuchatel to explore. &lt;A href="https://community.jmp.com/t5/JMP-Blog/Control-Charts-are-easy-in-JMP-10/ba-p/30100" target="_self"&gt;Control Chart Builder&lt;/A&gt;&amp;nbsp;is somewhat like the regional train. It is an innovative tool that allows you to visually create control charts one piece at a time. This is great for exploratory and discovery purposes.&lt;/P&gt;
&lt;P&gt;However, there may be times you choose to take the high speed train. Sometimes, you may already know the type of control chart you are looking for, and you need a quick method of producing the chart rather than adding pieces one at a time. Dialog options were added to Control Chart Builder in &lt;A href="https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/new-features-in-jmp15.pdf" target="_self"&gt;JMP 15&lt;/A&gt;. These dialogs are a bit like the high-speed train. They are a faster method of obtaining the desired control chart. &lt;A href="https://www.jmp.com/content/dam/jmp/documents/en/support/jmp161/release-notes.pdf" target="_self"&gt;JMP 16.1&lt;/A&gt; added a few new features to these dialogs.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The IMR dialog now has a sample label role.&lt;/LI&gt;
&lt;LI&gt;The IMR dialog has a checkbox for sort by sample label.&lt;/LI&gt;
&lt;LI&gt;The XBar dialog has a constant subgroup size field.&lt;/LI&gt;
&lt;LI&gt;The XBar dialog allows the user to pick the dispersion chart type.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Let's take a closer look.&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Dialogs&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;To understand the advantage of using the dialogs, let’s go through an example. Open the Washers data table found in the Quality Control sample data folder in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Washers.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;We know our goal is to create an NP control chart of #&amp;nbsp;defective. To do this using the drag-and-drop interface of Control Chart Builder, select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart Builder. Drag # defective to Y. You get an IMR chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_0-1636036281972.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37268i61CDB8905EE91849/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_0-1636036281972.png" alt="tonya_mauldin_0-1636036281972.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Drag lot to Subgroup. Since the response is the number defective, change the chart type from Shewhart Variables to Shewhart Attribute. Now you get a U chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_1-1636036281977.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37266iB469E29C4BC22BDC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_1-1636036281977.png" alt="tonya_mauldin_1-1636036281977.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To take into account the number of trials, drag Lot Size to n Trials. Now you get a C chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_2-1636036281980.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37267iF81D1411D2DE7810/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_2-1636036281980.png" alt="tonya_mauldin_2-1636036281980.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Since we are dealing with events that have two outcomes – defective or not defective&amp;nbsp;– and the number of trials is is fixed, we should be using the binomial distribution. Change the Sigma to Binomial. Now you get a P chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_3-1636036281981.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37269iF131859FED4E88ED/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_3-1636036281981.png" alt="tonya_mauldin_3-1636036281981.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To plot counts rather than proportions (NP Chart), change the point statistic from Proportion to Count.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_4-1636036281990.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37271iFA032D3F57C223D9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_4-1636036281990.png" alt="tonya_mauldin_4-1636036281990.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You finally get the NP chart you knew you wanted in the beginning. Whew! That was a lot of clicking and a lot of different chart types that were generated during this process.&lt;/P&gt;
&lt;P&gt;If you know what chart type you wish to create ahead of time, it is often easier and quicker to use a dialog entry into Control Chart Builder. For this example, select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;NP Control Chart. Specify # defective as Y. Specify Lot as Subgroup. Specify Lot Size as n Trials.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_5-1636036281992.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37270iF2EF1838A091EB64/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_5-1636036281992.png" alt="tonya_mauldin_5-1636036281992.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK. You get the same NP chart as above with many fewer mouse clicks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;IMR dialog additions for JMP 16.1&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Two new options were added to the IMR dialog in JMP 16.1. Open the Hollywood Movies table found in the sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Hollywood Movies.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;IMR Control Chart. New for JMP 16.1 is the Sample Label role and the Sort by Sample Label checkbox. Specify Rotten Tomatoes Score as Y and Movie Name as Sample Label. By default, the Sort by Sample Label checkbox is checked.&amp;nbsp; Uncheck this box. This means that the subgroup role will be sorted in data table row order rather than alphabetical order.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_6-1636036281994.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37272iF9D2C83F0E40DE09/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_6-1636036281994.png" alt="tonya_mauldin_6-1636036281994.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_7-1636036281999.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37274iC929D076D7EAB144/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_7-1636036281999.png" alt="tonya_mauldin_7-1636036281999.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You get an IMR chart using Movie Name as the sample label. The subgroup role is using data table row order rather than alphabetical order for Movie Name.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;XBar dialog additions for JMP 16.1&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Two new additions were made to the XBar dialog in JMP 16.1. Open the Coating table found in the Quality Control sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Coating.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Go to Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;XBar Control Chart.&amp;nbsp; New in Version 16.1 is the Constant Subgroup Size field that appears in the lower left and the Dispersion Chart drop down that also appears in the bottom left of the dialog.&amp;nbsp; Specify Weight for Y.&amp;nbsp; This data table contains a subgroup column: Sample.&amp;nbsp; Each level of Sample has 4 observations.&amp;nbsp; Some data tables do not contain a subgroup column.&amp;nbsp; If this data table did not contain the column Sample, we could get the same analysis by specifying 4 for Constant Subgroup Size (rather than Sample as Subgroup).&amp;nbsp; Let’s do that here.&amp;nbsp; Specify 4 for Constant Subgroup Size.&amp;nbsp; Change the chart type from Range to Standard Deviation.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_8-1636036282000.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37273iC458547ACDCCEF95/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_8-1636036282000.png" alt="tonya_mauldin_8-1636036282000.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_9-1636036282002.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37275iD872D2595A80E89B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_9-1636036282002.png" alt="tonya_mauldin_9-1636036282002.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You get an XBar and S chart with a subgroup sample size of 4.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Dialogs can be a quicker way to obtain control charts if you know ahead of time what type of chart you wish to create. JMP 16.1 added several new features to these dialogs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Sample label role for IMR charts.&lt;/LI&gt;
&lt;LI&gt;Sort by Sample Label checkbox for IMR charts.&lt;/LI&gt;
&lt;LI&gt;Constant Subgroup Size field for XBar charts.&lt;/LI&gt;
&lt;LI&gt;Dispersion Chart dropdown for XBar charts.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Next time you need to create a control chart, will you be taking the regional train (Control Chart Builder) or the high-speed train (dialogs)?&lt;/P&gt;</description>
      <pubDate>Fri, 05 Nov 2021 17:04:37 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/High-speed-train-versus-scenic-train-Drag-and-drop-control/ba-p/433046</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-11-05T17:04:37Z</dc:date>
    </item>
    <item>
      <title>Dr. Georg Raming of Siltronic on how analytics enriches the work of a domain expert – and why resources from JMP can add value</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Dr-Georg-Raming-of-Siltronic-on-how-analytics-enriches-the-work/ba-p/432656</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Georg_300.jpeg" style="width: 247px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37254i395AAB4663E5DB9E/image-dimensions/247x371?v=v2" width="247" height="371" role="button" title="Georg_300.jpeg" alt="Dr. Georg Raming of Siltronic" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Dr. Georg Raming of Siltronic&lt;/span&gt;&lt;/span&gt;Georg Raming, PhD, is an electrical engineer and Six Sigma Black Belt at Siltronic AG, one of the world’s top manufacturers of silicon wafer technology. Based in Burghausen, Germany, &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/9474" target="_blank" rel="noopener"&gt;@Georg&lt;/A&gt; works on the development of silicon crystal growth processes and is responsible for supporting &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; use for more than a hundred users across Siltronic AG. He holds a PhD in the simulation of electrothermal processes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: As a Six Sigma Black Belt and someone whose work and research have incorporated applied statistical methods for many years, you’re at a position in Siltronic where you can act as change agent and resource for those who are new to statistics. But introducing statistical methods can be disruptive at first. What helped you to garner support for data initiatives with both your leadership and colleagues? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;Siltronic AG has always been strong in statistics, as this is really &lt;A href="https://www.jmp.com/en_us/industries/data-analysis-software-for-the-semiconductor-industry.html" target="_blank" rel="noopener"&gt;a must in the semiconductor industry&lt;/A&gt;. But JMP has made it a lot easier and attractive for users to deploy standard statistics as well as advanced methods.&lt;/P&gt;
&lt;P&gt;At Siltronic, our management was aware of this quite early on. Soon it became evident that with JMP, more comprehensive analysis and better decisions were possible, and that gave us the drive to implement it widely.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What were some of the hurdles you had to overcome in that initial implementation phase?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;At first glance, JMP looks quite complex. And it is different from Excel – which is also its strength. But, for sure, users need to change how they think and act. However, there is more than one measure users can take to overcome this hurdle.&lt;/P&gt;
&lt;P&gt;I’ve found that it’s quite important – albeit not entirely sufficient – to motivate users by giving them a vision of what is possible. A small share of users did learn JMP independently, but for the others, &lt;A href="https://www.jmp.com/en_us/software/analytics-advocate-guide.html" target="_blank" rel="noopener"&gt;I had to deploy a good communication strategy and provide opportunities&lt;/A&gt; for support and personal training. That is what really helped us to gain speed.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: One of the most common objections we hear from newcomers to JMP is that some fear statistical approaches will supplant domain expertise. Is that something you’ve had to address at Siltronic? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;To me personally, this argument does not sound convincing. Domain expertise is always necessary to solve problems and is only improved and accelerated by statistical approaches.&lt;/P&gt;
&lt;P&gt;In my opinion, this is a communication challenge: Statistical analysis should be done together with domain experts, not against. JMP’s ease of use makes it easier for domain experts to utilize statistical methods on their own.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: You mentioned support and training resources, and I’m wondering how you’ve leveraged your relationship with the JMP organization – via things like Discovery Summits, STIPS and users groups – to build analytics capability. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;I’ve used all of these resources from JMP and found them to be great and effective. In fact, it has really helped us to overcome the learning curve. It’s so important to be at the leading edge of a dynamically improving software.&lt;/P&gt;
&lt;P&gt;Of course, the personal connection with the JMP team is also helpful and much appreciated, particularly when solving more advanced problems.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: How has advocating for analytics transformation impacted the course of your career? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;Using analytics and advocating for analytics approaches are a part of my work, so I can’t say that it has had any direct impact on my career trajectory. But it has enriched both a lot of my work and my network.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone looking to cultivate a more mature analytics culture in their organization? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;Get management support on using data analytics – and communicate that support. Establish visible leadership in using statistical methods and clearly demonstrate to colleagues how statistics is supporting their work and improving decision making.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone who is just starting out with JMP? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Georg: &lt;/STRONG&gt;Think about and define what you need JMP for. Then try to find a small first task that can be done regularly with JMP and concentrate on that small part of JMP until you feel more comfortable with it. Also, I recommend seeking out an experienced user and investing in building a network so that users within your company can support each other.&lt;STRONG&gt; &amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Nov 2021 18:31:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Dr-Georg-Raming-of-Siltronic-on-how-analytics-enriches-the-work/ba-p/432656</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-11-03T18:31:27Z</dc:date>
    </item>
    <item>
      <title>New subgrouping features for Process Screening available in JMP 16.1</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-subgrouping-features-for-Process-Screening-available-in-JMP/ba-p/431941</link>
      <description>&lt;P&gt;Rational subgrouping is the process of organizing the data into groups that were produced under the same/similar operating conditions.&amp;nbsp; Several new subgrouping features were added to the &lt;A href="https://www.jmp.com/en_us/applications/quality-reliability-six-sigma.html#Process-Screening" target="_self"&gt;Process Screening&lt;/A&gt; platform in &lt;A href="https://www.jmp.com/content/dam/jmp/documents/en/support/jmp161/release-notes.pdf" target="_self"&gt;JMP 16.1&lt;/A&gt; to make this analysis more flexible and user friendly.&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can now specify multiple subgroup columns.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Individual and Moving Range charts with a subgroup role now create a detail table that includes sample label column(s).&lt;/LI&gt;
&lt;LI&gt;An option was added that gives you the flexibility to sort by subgroup columns or not.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To see examples of these new features, open Semiconductor Capability.jmp found in the sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=open("$SAMPLE_DATA/Semiconductor Capability.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Multiple subgroup columns and sample label column&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Select Analyze-&amp;gt;Screening-&amp;gt;Process Screening. Specify NPN1 as Process Variables. For Subgroup, specify lot_id and wafer.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_0-1635775057009.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37175i396CC71EB3E50208/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_0-1635775057009.png" alt="tonya_mauldin_0-1635775057009.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In previous versions, only one subgroup column was allowed for Process Screening. Beginning with JMP 16.1, multiple subgroup columns can be defined for the Process Screening analysis. Click OK.&lt;/P&gt;
&lt;P&gt;From the red triangle, select Save Details Table. In addition to a Subgroup column, the table contains columns for all subgroup variables: lot_id and wafer. In previous versions, only a Subgroup column was created. There was no identifying information for lot_id and wafer in the details table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tonya_mauldin_1-1635775057013.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37177iA9183AC59D01E42E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="tonya_mauldin_1-1635775057013.png" alt="tonya_mauldin_1-1635775057013.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Sort by Subgroup&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Select Analyze-&amp;gt;Screening-&amp;gt;Process Screening.&amp;nbsp; Specify NPN1 as Process Variables. Specify wafer as Subgroup. Set the Control Chart Type to XBar and R.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_2-1635775057016.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37176i5403156EF4178D73/image-size/large?v=v2&amp;amp;px=999" role="button" title="tonya_mauldin_2-1635775057016.png" alt="tonya_mauldin_2-1635775057016.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice the new checkbox in the lower left “Sort by Subgroup”. By default, this box is not checked meaning the data will not be sorted.&lt;/P&gt;
&lt;P&gt;Click OK. From the red triangle at the top of the report, select Save Details Table.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_3-1635775057029.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37178iC7D41CA2BF9475A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="tonya_mauldin_3-1635775057029.png" alt="tonya_mauldin_3-1635775057029.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We see that the first subgroup corresponds to wafer=1. The 25&lt;SUP&gt;th&lt;/SUP&gt; subgroup also corresponds to wafer=1. This is because Process Screening did no sorting of the data. If you look back at the original data table, you will see a similar arrangement where wafer=1 for rows 1-5 and wafer=1 for rows 121-125.&lt;/P&gt;
&lt;P&gt;Let’s compare this to checking the Sort by Subgroup box in the dialog. Select the original Semiconductor Capability data table. Select Analyze-&amp;gt;Screening-&amp;gt;Process Screening. Click Recall. You should have the same dialog as previously pictured. In this dialog box, check the box in the lower left for Sort by Subgroup before clicking OK.&lt;/P&gt;
&lt;P&gt;Now when you select Save Details Table, you find that there is only 1 subgroup for wafer 1 for the NPN1 column.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_4-1635775057034.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37180i8069086E61F42906/image-size/large?v=v2&amp;amp;px=999" role="button" title="tonya_mauldin_4-1635775057034.png" alt="tonya_mauldin_4-1635775057034.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Comparing the Process Screening results, you will find that the given statistics are different depending on the sorting options used. Rational subgroups define how the analysis is implemented.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tonya_mauldin_5-1635775057036.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/37179i0FDD835121955665/image-size/large?v=v2&amp;amp;px=999" role="button" title="tonya_mauldin_5-1635775057036.png" alt="tonya_mauldin_5-1635775057036.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;JMP 16.1 provides more flexibility with regards to subgroup variables.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Multiple subgroup variables can be defined.&lt;/LI&gt;
&lt;LI&gt;Detail tables from IMR charts with a subgroup variable contain a subgroup label column for each subgroup variable.&lt;/LI&gt;
&lt;LI&gt;The new Sort by Subgroup command determines if the platform sorts the data prior to the analysis or not.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 02 Nov 2021 13:00:00 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-subgrouping-features-for-Process-Screening-available-in-JMP/ba-p/431941</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-11-02T13:00:00Z</dc:date>
    </item>
    <item>
      <title>Developer Tutorial: From sports to stats to generalized regression in JMP Pro</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Developer-Tutorial-From-sports-to-stats-to-generalized/ba-p/430519</link>
      <description>&lt;P&gt;JMP Statistical Developer &lt;A href="https://www.jmp.com/en_us/bios/lekivetz-ryan.html" target="_blank" rel="noopener"&gt;Ryan Lekivetz&lt;/A&gt; (&lt;LI-USER uid="1970"&gt;&lt;/LI-USER&gt;) recently shared details and answered questions about how and why you can use covariates to build better designs using &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;; this was part of our Developer Tutorial series. JMP Systems Engineer &lt;A href="https://www.jmp.com/en_us/bios/donnelly-tom.html" target="_blank" rel="noopener"&gt;Tom Donnelly&lt;/A&gt; (&lt;LI-USER uid="3645"&gt;&lt;/LI-USER&gt;)&amp;nbsp;was on hand during Ryan's webinar to share user situations where covariates are in play. The &lt;A href="https://community.jmp.com/t5/Mastering-JMP-Videos-and-Files/Developer-Tutorial-Handling-Covariates-Effectively-when/ta-p/430161" target="_blank" rel="noopener"&gt;video and resources&lt;/A&gt; from the webinar are now available.&lt;/P&gt;
&lt;P&gt;Starting Nov. 4 (and continuing Nov. 11 and 18) JMP Statistical Developer Clay Barker (&lt;LI-USER uid="1198"&gt;&lt;/LI-USER&gt;)&amp;nbsp;will present the &lt;A href="https://www.jmp.com/en_us/events/mastering/upcoming-live-webinars.html" target="_blank" rel="noopener"&gt;next three Developer Tutorials&lt;/A&gt;. One of Clay’s key contributions to &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Pro&lt;/A&gt; is in the area of &lt;A href="https://www.jmp.com/support/help/en/16.1/#page/jmp/overview-of-the-generalized-regression-personality.shtml#" target="_blank" rel="noopener"&gt;generalized regression&lt;/A&gt; variable selection techniques that specifically address modeling correlated and high-dimensional data that include more variables than observations.&lt;/P&gt;
&lt;P&gt;I spoke with Clay when scheduling his first session, where he will discuss how to use JMP Pro’s Generalized Regression to make the most of your designed experiment. He’ll make sense of some of the &lt;A href="https://www.jmp.com/support/help/en/16.1/#page/jmp/statistical-details-for-estimation-methods.shtml" target="_blank" rel="noopener"&gt;related statistics&lt;/A&gt;.&lt;/P&gt;
&lt;P data-unlink="true"&gt;Clay made his way to a statistics PhD through sports – a slam dunk for the JMP team! The game clock is still running for JMP Pro 17, where he and the JMP Development Team are enhancing generalized regression.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6278901265001" width="960" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/5904a1dd-8b41-451c-a84e-6d8dfe4fc518/main/160x90/1m14s814ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See the &lt;A href="https://community.jmp.com/t5/Mastering-JMP-Videos-and-Files/Developer-Tutorial-Using-JMP-Pro-Generalized-Regression-to/ta-p/434112" target="_self"&gt;video of Clay's Nov. 4 Tutorial&lt;/A&gt; (and get slides and JMP Pro Journal) where he:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Shares his expertise about capabilities he has helped develop in JMP Pro.&lt;/LI&gt;
&lt;LI&gt;Explains what the Generalized Regression capabilities aim to achieve for users designing experiments.&lt;/LI&gt;
&lt;LI&gt;Describes how and why JMP Pro techniques (aka platforms) use specific statistical approaches.&lt;/LI&gt;
&lt;LI&gt;Discusses which capabilities might be most statistically useful for certain situations.&lt;/LI&gt;
&lt;LI&gt;Answered questions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Want to see some of Clay’s Discovery Summit presentations?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;2018 Tutorial: &lt;A href="https://sasoffice365-my.sharepoint.com/personal/gail_massari_jmp_com/Documents/webcasts%20Mastering%20US/2021/Developer/Ryan/•%09https:/community.jmp.com/t5/Discovery-Summit-2018/Tutorial-Generalized-Regression-The-Most-Flexible-Modeling/ta-p/80220" target="_blank" rel="noopener"&gt;Generalized Regression&amp;nbsp;&lt;/A&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-Tucson-2019/Not-Quite-Normal-Choosing-the-Best-Distribution-for-Modeling/ta-p/223356" target="_blank" rel="noopener"&gt;–&lt;/A&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-2018/Tutorial-Generalized-Regression-The-Most-Flexible-Modeling/ta-p/80220" target="_blank" rel="noopener"&gt; The Most Flexible Modeling Tool That You're Not Using&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;2019 Presentation: &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Tucson-2019/Not-Quite-Normal-Choosing-the-Best-Distribution-for-Modeling/ta-p/223356" target="_blank" rel="noopener"&gt;Not Quite Normal – Choosing the Best Distribution for Modeling Your Response&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 10 Nov 2021 16:28:59 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Developer-Tutorial-From-sports-to-stats-to-generalized/ba-p/430519</guid>
      <dc:creator>gail_massari</dc:creator>
      <dc:date>2021-11-10T16:28:59Z</dc:date>
    </item>
    <item>
      <title>How do we analyze defective subpopulations in JMP's reliability platform?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-do-we-analyze-defective-subpopulations-in-JMP-s-reliability/ba-p/429406</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JerryFish_0-1634928269693.png" style="width: 206px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/36923iA4526FA83C909598/image-dimensions/206x246?v=v2" width="206" height="246" role="button" title="JerryFish_0-1634928269693.png" alt="JerryFish_0-1634928269693.png" /&gt;&lt;/span&gt;Suppose you are making parts, and some small percentage of those parts are susceptible to an early life "defect" that causes them to fail, while the rest of the population doesn't have the defect and will never fail because if it. How do you handle that?&lt;/P&gt;
&lt;P&gt;A paper presented&amp;nbsp;recently at &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2021/tkb-p/discovery-us-2021-content" target="_blank" rel="noopener"&gt;Discovery Summit&lt;/A&gt; addressed this very problem. The author of the paper was Dr. David Trindade, and he spoke on &lt;STRONG&gt;analyzing Defective Subpopulations (DS).&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A DS can occur when a manufacturing process introduces a defect into a small portion of the total parts produced. For example, perhaps a motor manufacturer buys electrical brushes from several vendors. Unknowingly at the time of assembly, one of the vendors (supplying perhaps 15% of the brushes for this particular motor model) provided brushes that would ultimately fail early in the life of the motors. Brushes from the remaining vendors were all OK. So there is a small fixed portion of the population of motors that will fail early in life.&lt;/P&gt;
&lt;P&gt;We could analyze the reliability of the motor using JMP's Life Distribution platform, and assume that there are two "causes" of failure by perhaps fitting two Weibull curves to the data. One of the curves would fit the early failure data, while the second would take care of the rest of the motors.&lt;/P&gt;
&lt;P&gt;But this isn't exactly correct. The Weibull distributions would assume that the entire population was susceptible to either type of failure for the entire lifespan of the product, when in fact only a few motors would experience the early failures. Once the motors in this subpopulation have all failed, no more motors would fail due to this "bad brush" cause.&lt;/P&gt;
&lt;P&gt;That is where Defective Subpopulation distributions come in. Here, we assume that only a portion of the products have this initial, early life failure defect.&amp;nbsp; The result is a better model of the reliability of the product or system.&lt;/P&gt;
&lt;P&gt;If you are interested in seeing more on this subject, I encourage you to read &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2021/Defect-Subpopulation-Models-2021-US-30MP-885/ta-p/398731" target="_blank" rel="noopener"&gt;Dr. Trindade's excellent paper&lt;/A&gt;. Enjoy!&lt;/P&gt;</description>
      <pubDate>Mon, 25 Oct 2021 15:36:05 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-do-we-analyze-defective-subpopulations-in-JMP-s-reliability/ba-p/429406</guid>
      <dc:creator>JerryFish</dc:creator>
      <dc:date>2021-10-25T15:36:05Z</dc:date>
    </item>
    <item>
      <title>Predictive Modeling Unsession at Discovery Summit Americas 2021</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Predictive-Modeling-Unsession-at-Discovery-Summit-Americas-2021/ba-p/420403</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="2021-JMP-PowerPoint-template-SCATTER-PLOT.jpg" style="width: 329px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/36013iF98E3ACCFFB07340/image-dimensions/329x185?v=v2" width="329" height="185" role="button" title="2021-JMP-PowerPoint-template-SCATTER-PLOT.jpg" alt="2021-JMP-PowerPoint-template-SCATTER-PLOT.jpg" /&gt;&lt;/span&gt;If you’re interested in predictive modeling, the upcoming &lt;A href="https://discoverysummit.jmp/en/2021/usa/home.html?utm_campaign=ds&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Discovery Summit&lt;/A&gt; includes a session you won’t want to miss. Join your fellow attendees on Oct. 4 from 1-4 p.m. ET for the &lt;A href="https://discoverysummit.jmp/en/2021/usa/agenda.html#b528e707-7c12-4791-8b10-2a27c0b09e8c??utm_campaign=ds&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;Predictive Modeling Unsession&lt;/A&gt;, the best opportunity all conference long to engage with industry peers and JMP staff around our shared enthusiasm for using data to predict outcomes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;What’s an “unsession,” you ask?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;An unsession is akin to an &lt;A href="https://en.wikipedia.org/wiki/Unconference" target="_blank" rel="noopener"&gt;unconference&lt;/A&gt;, in which attendees set the agenda and control the sessions without any prespecified topics or formal presentations. The idea is for attendees to &amp;nbsp;talk about &lt;EM&gt;whatever they want to talk about,&lt;/EM&gt; &lt;EM&gt;however they want to talk about it.&lt;/EM&gt; Think of the Predictive Modeling Unsession like a mini unconference inside Discovery Summit.&lt;/P&gt;
&lt;P&gt;Here’s how it’ll work at this year’s Predictive Modeling Unsession:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Anybody interested in predictive modeling gathers on Zoom.&lt;/LI&gt;
&lt;LI&gt;Attendees propose discussion topics and then rate their interest in those topics. Proposing a topic is optional, and the whole proposal and rating process will use online forms and take just a few minutes.&lt;/LI&gt;
&lt;LI&gt;Topics will be ranked according to attendee ratings, and we’ll work our way through the topics starting at the top.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Topics can be &lt;EM&gt;anything&lt;/EM&gt; related to predictive modeling. They don’t even have to be about JMP! A few examples: “Peeking inside the neural net black box”, “Tips for setting decision thresholds”, “XGBoost has lots of hyperparameters. Which matter most?”. But don’t take these examples too seriously. Topics are up to you.&lt;/P&gt;
&lt;P&gt;If your topic comes up, you’ll be given the floor to kick off the discussion. Don’t be nervous: this isn’t a formal presentation. (After all, that’s what the rest of the conference is for.) You could just pose a simple question and ask for thoughts. You could demo something you’ve been working on in JMP and solicit feedback. You could share a quick tip you find valuable and give others the chance to ask questions or share their own tips. It’s up to you.&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;Is this unsession for me?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Yes.&lt;/P&gt;
&lt;P&gt;If you’ve read this far, you must have at least some interest in predictive modeling, so this unsession is for you. Don’t know anything about predictive modeling? That’s fine! Come learn. Just want to sit in without participating in the discussion? No worries! You can just come and listen if you prefer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;One thing to note:&lt;/STRONG&gt; if you want to propose a topic, make sure to be there for the 1 p.m. ET start time. All can come and go as they like, but for logistical reasons we’ll only accept topic proposals at the start.&lt;/P&gt;
&lt;P&gt;The Predictive Modeling Unsession is &lt;EM&gt;your&lt;/EM&gt; chance to talk about what &lt;EM&gt;you&lt;/EM&gt; want to talk about with your fellow attendees. Come make the &lt;A href="https://discoverysummit.jmp/en/2021/usa/home.html?utm_campaign=ds&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;conference&lt;/A&gt; — or this session, at least — whatever you want it to be.&lt;/P&gt;</description>
      <pubDate>Tue, 28 Sep 2021 14:02:32 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Predictive-Modeling-Unsession-at-Discovery-Summit-Americas-2021/ba-p/420403</guid>
      <dc:creator>Ross_Metusalem</dc:creator>
      <dc:date>2021-09-28T14:02:32Z</dc:date>
    </item>
    <item>
      <title>JMP developers tell all this fall – and answer your questions, too</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-developers-tell-all-this-fall-and-answer-your-questions-too/ba-p/420126</link>
      <description>&lt;P&gt;Do you miss the JMP Developer Tutorials offered at &lt;A href="https://discoverysummit.jmp/en/past-summits.html?utm_campaign=ds&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Discovery Summit&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;Well, they are back, with a slight difference. Instead of being offered at the &lt;A href="https://discoverysummit.jmp/en/2021/usa/home.html?utm_campaign=ds&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;upcoming&amp;nbsp;&lt;EM&gt;online&lt;/EM&gt; Discovery Summit Americas&lt;/A&gt;, this October, November and December we are offering six Developer Tutorials as part of the &lt;A href="https://www.jmp.com/en_us/events/mastering/overview.html?utm_campaign=mj&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;Mastering JMP&lt;/A&gt; online series.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Although you’ll be on Zoom rather than sitting in a conference room with other &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; users, the developers will structure their presentations to include as much dialogue and Q&amp;amp;A as you find useful. We’ll hold sessions at a time&amp;nbsp; – 11 am US Eastern Time – that we hope is convenient for users in the US, UK and Western Europe. And, of course, all JMP users worldwide are welcome.&lt;/P&gt;
&lt;P&gt;The developers still aim to give you insight into the workings and statistics behind JMP and to learn about issues facing you as users – issues that the JMP Development Team might address in future JMP releases.&amp;nbsp; And, they will answer your questions about why and when to use the approaches they have integrated into JMP and/or JMP Pro.&lt;/P&gt;
&lt;P&gt;The first session on &lt;A href="https://www.jmp.com/en_us/events/live-webinars/mastering-jmp/handling-covariates-when-designing-experiments/21-oct-2021.html?utm_campaign=mj&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;Handling Covariates Effectively When Designing Experiments&lt;/A&gt; will be presented by Ryan Lekivetz (&lt;LI-USER uid="1970"&gt;&lt;/LI-USER&gt;) on Oct. 21.&lt;/P&gt;
&lt;P&gt;I spoke with Ryan as he was planning his session. He shared how he decided to become a statistician when living in Western Canada and how JMP subsequently lured him to North Carolina. I think you’ll agree that his ability to make design of experiments (DOE) understandable to even a first grader is&amp;nbsp;remarkable. Please enjoy his short interview (audio only). But watch out, his creativity is highly infectious.&lt;/P&gt;
&lt;CENTER&gt;
&lt;DIV style="height: 225px; width: 300px;"&gt;&lt;LI-VIDEO vid="6273721161001" width="1920" height="1080" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/f3ac9b3b-9a16-453d-8901-dcecc7260caf/main/160x90/2m33s66ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/DIV&gt;
&lt;/CENTER&gt;
&lt;P&gt;Want to learn more from Ryan?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Chocolate-Bar-Smackdown-US-vs-Canada/ba-p/30668" target="_blank" rel="noopener"&gt;Chocolate Bar Smackdown – US vs Canada&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Eggstra-Eggstra-A-new-designed-eggsperiment/ba-p/30700" target="_blank" rel="noopener"&gt;Eggstra! Eggstra! A new designed eggsperiment - JMP User Community&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Father-s-Day-fun-with-toy-cars-and-DOE/ba-p/30607" target="_blank" rel="noopener"&gt;Father's Day fun with toy cars and DOE - JMP User Community&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/How-to-create-an-experiment-design-that-is-robust-to-a-linear/ba-p/30138" target="_blank" rel="noopener"&gt;How to create an experiment design that is robust to a linear time trend - JMP User Community&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://asq.org/quality-resources/pub/journal-of-quality-technology" target="_blank" rel="noopener"&gt;Journal of Quality Technology&lt;/A&gt; mentioned in the interview&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.nserc-crsng.gc.ca/index_eng.asp" target="_blank" rel="noopener"&gt;Natural Sciences and Engineering Research Council of Canada&lt;/A&gt; mentioned in the interview&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 22 Sep 2021 15:32:23 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-developers-tell-all-this-fall-and-answer-your-questions-too/ba-p/420126</guid>
      <dc:creator>gail_massari</dc:creator>
      <dc:date>2021-09-22T15:32:23Z</dc:date>
    </item>
    <item>
      <title>Intel’s Don Kent on what makes a mature analytics organization, the importance of mentorship and joining the “JMP family” at Discovery Summit</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Intel-s-Don-Kent-on-what-makes-a-mature-analytics-organization/ba-p/419613</link>
      <description>&lt;P&gt;Don Kent works for Intel Corporation’s Technology Development Group as manager of a full-stack data science team. Prior to joining Intel, he served as Principal Data Scientist at IMFlash Technologies, a joint venture between Intel and Micron.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With his background in engineering and solid-state physics, Don has been a part of the semiconductor industry for two decades and a &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; user for nearly as long. An outspoken advocate for analytics for many years, he helped found the &lt;A href="https://community.jmp.com/t5/Regional-JMP-Users-Groups/ct-p/regional-users-groups" target="_blank" rel="noopener"&gt;Wasatch Front JMP Users’ Group&lt;/A&gt; and co-hosted countless JMP meetups at IMFlash.&lt;/P&gt;
&lt;P&gt;I reached out to&amp;nbsp;&lt;LI-USER uid="5740"&gt;&lt;/LI-USER&gt;&amp;nbsp;to learn about his analytics journey and the advice he gives to newcomers in industrial statistics.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: You’ve been a JMP user for almost 20 years! In that time, you must have seen quite a few changes not only in the software but also in the field of industrial statistics more broadly. How do you think your personal analytics journey ultimately shaped your career path?&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="DonKent-Intel.jpg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/36397i527989B532D0BFBC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="DonKent-Intel.jpg" alt="Don Kent is manager of a full-stack data science team at Intel." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Don Kent is manager of a full-stack data science team at Intel.&lt;/span&gt;&lt;/span&gt; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; My advocacy for analytics has largely paralleled my journey of career growth. Looking back, it started with a keen interest in learning more about statistics. As a novice, the challenges were at the personal level, focused around finding mentors and making connections with like-minded folks. Much of the time in my earlier years was spent with user groups or other communities, both in contributing and in learning as much as possible.&lt;/P&gt;
&lt;P&gt;It’s interesting how, as you look back, you can see a few key milestones that stand out. For me, those milestones are related to someone encouraging me to learn and to grow my skills – either from one of the amazing mentors I’ve known or, for example, from a manager who encouraged my journey with a complete boxed-set of JMP 4 books (which are now PDFs!).&lt;/P&gt;
&lt;P&gt;As my knowledge, responsibilities and confidence in statistical methods have grown, so too have the opportunities I’ve had to impact the organizations I worked in. I see a clear correlation between my analytic growth and the career opportunities I’ve been afforded.&lt;/P&gt;
&lt;P&gt;I started my career with Intel as a reliability engineer with a background in semiconductor device physics. However, through my interest and study of analytics over the last 20 years, I've been able to transition my career to managing a data science team within one of Intel's Technology Development groups. That opportunity to both create and lead an analytics team would not have been possible without the mentorship of others and the confidence of my current manager.&lt;/P&gt;
&lt;P&gt;As I've grown in skills and knowledge, the dynamics have shifted from personal advancement to more interpersonal advancement. Now I find more rewards in mentoring and encouraging others in their journeys.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Yes, mentorship is absolutely key – no matter what role or industry we’re in, we can always learn from those who have walked the path before us and encountered similar obstacles along the way. Now that you’re in the position of mentoring others, what would you say are some of the primary hurdles you’ve learned from?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; One that comes to mind is related to spatial pattern analysis. At the time, I was working on a project at a former employer, and I remember going to my manager and showing him a &lt;A href="https://www.jmp.com/en_us/training.html" target="_blank" rel="noopener"&gt;JMP training course&lt;/A&gt; called "High Dimension Data Analysis." I explained how I thought that course would significantly increase my knowledge in this area and help with the project. Unfortunately however, my manager highlighted that at the time the company did not have the budget for the training. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was of course dismayed, but after some consideration I realized that my education was in my own hands. So I paid for the course myself and took the class. It was one of the best courses I've ever taken, and it significantly helped that project. Even more importantly, coming to that decision was a real turning point in my career. It helped me focus in on what was important and helped bring clarity to the direction I ultimately wanted my career to go.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: That provides me with a nice segue to ask you about something we often don’t talk about much, which is the wealth of resources JMP offers and the hidden value it brings to our customers. Can you speak a bit about how you’ve leveraged those learning resources and opportunities to interface with the JMP organization over the years? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; really has the entire ecosystem to enable an individual to get involved at many different levels. I personally have utilized so many of the features of the JMP ecosystem that it’s hard to really overestimate the value, so to be brief I will mention one.&lt;/P&gt;
&lt;P&gt;For those who have never attended a &lt;A href="https://discoverysummit.jmp/en/home.html" target="_blank" rel="noopener"&gt;Discovery Summit&lt;/A&gt; – I just can't recommend it enough! The JMP team actually feels like a family, and they bring you into that family, which is a pretty amazing experience. This is all on full display at Discovery. Every time I’ve attended the Summit, I’ve taken home not one thing but many things, and I consider it a key conference. The access to &lt;A href="https://community.jmp.com/t5/JMP-Discovery-Summit-Series/ct-p/discovery" target="_blank" rel="noopener"&gt;tutorials, trainings and presentations&lt;/A&gt; is amazing.&lt;/P&gt;
&lt;P&gt;The JMP team also offers opportunities to visit with the developers directly. They love to hear from customers and understand how they can make the product just a bit better. Of course, the keynotes are always by current thought leaders, and I personally treasure that one dinner sitting and visiting with Stu Hunter as one of the highlights of my many wonderful Discovery experiences.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: That is so wonderful to hear! Speaking from the perspective of someone inside of the JMP organization, I have to say that I too thoroughly enjoy Discovery Summits. They are a real highlight of my job. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;One of the most common objections we hear from newcomers to JMP is that some fear statistical approaches will supplant domain expertise. How has having JMP changed the way you and your colleagues apply domain knowledge and skills? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; Within our organization, the Technology Development team is eager to utilize JMP for many reasons – not least of which is that it significantly helps them complete their tasks. In fact, I would venture to say that the concern from our side is that the team needs to combine their expert knowledge of the semiconductor process with the correct JMP platform (and statistics) to answer a desired question.&lt;/P&gt;
&lt;P&gt;Due to certain semiconductor hierarchies – for example, die within wafer within lot – certain data analysis can go a bit sideways if the proper hierarchy (or expert knowledge) is not correctly utilized. For example, using the proper lot-wafer-die nesting structure in a variance components analysis can make a large difference in the result.&lt;/P&gt;
&lt;P&gt;Also in data mining. Choosing full lots (all wafers) for training and/or validation data sets will reduce the likelihood of information leakage when data mining at wafer level. We have to understand these complexities and combine expert knowledge with the correct JMP platform and statistical approach. As our statisticians like to say, "When in doubt, consult your local statistician."&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Speaking as that statistician or go-to person for analytics support, what advice would you give to someone looking to cultivate a more mature analytics culture in their organization? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; What does a mature analytics culture look like? For us, we look at the culture across a few vectors – and the key is the team – the individuals in the organization must have the analytics knowledge or skills to enable them to perform their jobs with confidence and efficiency. This requires training and the knowledge to best use the tools they have, tools like JMP. They don't need to know everything. And that is where the analytics team can fill in the gaps.&lt;/P&gt;
&lt;P&gt;Another highlight of a mature organization is the availability of KPIs and metrics for the organization. These should be standardized, available and visible across the enterprise to help direct the entire team. Finally, look for advanced applications that involve machine learning or utilize recommender engines – organizations that are utilizing these advanced tools have evolved data ecosystems, whereas organizations that are not quite there should work on improving the fundamentals like data integration, pattern/feature identification, automation and predictive analytic systems. Of course, having a dedicated team can significantly help drive these initiatives.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Speaking of new initiatives, introducing new analytics workflows can be disruptive at first. But, as we know, the benefits of an effective analytics strategy outweigh the initial costs. What kinds of ROI or improvements have helped to build and sustain momentum for data initiatives at Intel? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; In terms of adding value to the organization, the first step is generally a gap analysis – understanding where you, your team and the organization currently are compared to the direction they should travel. “It's a journey not a destination” can be a tremendous motivator and shine the light on where improvements and efforts will have the most value and help define the ROI.&lt;/P&gt;
&lt;P&gt;Identifying those gaps can be time-consuming but, in my experience, involves meeting with and listening to customers and business partners. As an analytic organization, it is our job to translate the business need into a data strategy or data problem. By engaging and listening to our customers and partners, we are empowered to work with the organization to help synthesize the best analytic strategy. Once that strategy is determined, then executing on it becomes the focus. This is where engineers and statisticians excel and can shine.&lt;/P&gt;
&lt;P&gt;One motivator that builds momentum is progress toward goals. Simple things like successfully deploying an add-in or adding a feature that was requested by a customer builds trust and progresses the organization’s goals. Often to successfully deploy these features requires partnering with other teams like the training group, who can help with professional documentation and communication. Metrics can also be powerful tools to gauge momentum and adoption and are used extensively to help understand and sometimes shape customer engagement.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: As we wrap up, what advice would you give to someone who is just starting out with JMP? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Don:&lt;/STRONG&gt; Be curious, use the "Help" section of JMP – and do so frequently! The documentation within JMP itself is the best place to begin, and the sample data sets and books are a treasure. From there, check out the resources online at &lt;A href="https://www.jmp.com/en_us/home.html" target="_blank" rel="noopener"&gt;jmp.com&lt;/A&gt;, check the training schedule and get engaged with a users’ group – try virtual if in-person is not available in your area.&lt;/P&gt;</description>
      <pubDate>Mon, 01 Nov 2021 12:53:02 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Intel-s-Don-Kent-on-what-makes-a-mature-analytics-organization/ba-p/419613</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-11-01T12:53:02Z</dc:date>
    </item>
    <item>
      <title>Joining by datetimes</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Joining-by-datetimes/ba-p/414628</link>
      <description>&lt;P&gt;Why would you want to join data sets by datetimes?&lt;/P&gt;
&lt;P&gt;One of the common data preparation challenges scientists and engineers face is matching different data sets by dates, times or datetimes (also referred to as timestamps) (Figure 1).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="examples of dates times datetimes.jpg" style="width: 282px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35464iD7D96A701E43166C/image-dimensions/282x169?v=v2" width="282" height="169" role="button" title="examples of dates times datetimes.jpg" alt="Figure 1.  Example of dates, time and datetime data." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 1.  Example of dates, time and datetime data.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Scientists and engineers often get their metrics from a variety of different measurement systems / pieces of equipment. To analyze their data, they need to combine all the metrics in a single table so that they can look at relationships across all the metrics.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you have a unique identifier column or set of columns (e.g. Batch_ID, Lot_ID, UPC, serial number, etc.), joining is relatively simple and can be accomplished using the Tables &amp;gt; Join function in JMP or the &lt;A href="https://www.youtube.com/watch?v=V8aQ8tSSdOs" target="_blank" rel="noopener"&gt;virtual join function&lt;/A&gt; in JMP.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is more challenging when you need to align dates, times or datetimes between data sets. Often the task involves sensors that track metrics continuously over time (for example, temperature, pressure, pH, glucose). To understand how these metrics may impact product endpoints (sometimes referred to as “critical quality attributes”), it will be necessary to create summaries* of those metrics over appropriate time periods. The summaries are then joined with the corresponding product endpoints.&lt;/P&gt;
&lt;P&gt;Let’s work through a case study showing how to accomplish this type of joining.&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Case Study&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;Watch the video, or read about the case study below the video.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6270515135001" width="400" height="225" size="medium" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/e8e6ceb6-8dc9-4be0-9498-18cf5cef3545/main/160x90/2m8s880ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;The process we are trying to understand and improve makes a finished product called “Forever Young Elixir.” The critical quality attribute is Potency.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A product is being made in two steps. First, the raw materials go into a machine that applies pressure to the raw materials. Then, the assembled raw materials move to a second process step where temperature is applied to create the final product.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="elixir process.png" style="width: 774px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35465iEE8093E2F5064B44/image-dimensions/774x262?v=v2" width="774" height="262" role="button" title="elixir process.png" alt="elixir process.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Both process steps can be controlled, but today there is a fair amount of variation that we believe is impacting the finished product’s critical quality attribute potency. We are interested in understanding how pressure and temperature impact potency of this product so that, ultimately, we can identify an acceptable operating range for each of the process steps. There are temperature and pressure sensors that monitor the process continuously.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We will focus on temperature in this example because the process for working with the pressure data is analogous.&lt;/P&gt;
&lt;P&gt;We have a data table that has each lot, the timestamp (datetime) for when the batch was finished and its potency (Figure 2).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="potency data.png" style="width: 249px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35472iF0D071F1C1482BF8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="potency data.png" alt="Figure 2.  Potency data collected for each finished batch along with the timestamp for batch completion." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 2.  Potency data collected for each finished batch along with the timestamp for batch completion.&lt;/span&gt;&lt;/span&gt;We also have data from a temperature sensor. Temperatures are recorded at one-minute intervals&amp;nbsp;(Figure 3).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="temperature data.png" style="width: 195px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35570i276B7ABB08EED6C3/image-size/large?v=v2&amp;amp;px=999" role="button" title="temperature data.png" alt="Figure 3.  Potency data collected for each finished batch along with the timestamp for batch completion." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 3.  Potency data collected for each finished batch along with the timestamp for batch completion.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Ultimately, to correlate Potency with Temperature, we need a table with each batch’s Potency and the average* Temperature during the period when the product was made.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Final Table.png" style="width: 363px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35475iAE0A1A033D413D94/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Final Table.png" alt="Figure 4. Final analysis table with temperature data combined with potency data. *Other summary statistics could be considered, or one could also explore using the Functional Data Explorer platform which uses all of the data to understand a process instead of summarizing to a single value." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 4. Final analysis table with temperature data combined with potency data. *Other summary statistics could be considered, or one could also explore using the Functional Data Explorer platform which uses all of the data to understand a process instead of summarizing to a single value.&lt;/span&gt;&lt;/span&gt;&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-left" image-alt="thinking.jpg" style="width: 194px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35479i430CA59FCAD05E0E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="thinking.jpg" alt="thinking.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Before we can get into the software, we need to decide which time points in the temperature step are appropriately associated with a particular batch. In other words, when was the batch being processed in the temperature step?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In discussing with other engineers, we determine that 5 minutes is the length of time a batch is processed in the temperature step. Therefore, the temperature data for the period 5 minutes prior to the batch’s finish timestamp should be used to correlate with the potency of a batch.&lt;/P&gt;
&lt;P&gt;Now we have the necessary information to start the data preparation process.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; This example starts with the datetimes already properly coded with correct data type and modeling type. This is a very important step if you want the joins to work correctly. Please jump to the appendix for this blog post if you need a refresher on using dates, times and datetimes.&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Video Demonstration&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;Join in on the joining! Download the two data sets attached below and follow along. If you don’t have JMP already, you can &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;download a 30-day trial&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6270525383001" width="400" height="225" size="medium" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/9fd99d24-5908-497d-867f-aaf348b7c3c9/main/160x90/3m32s288ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT size="5"&gt;Review of Steps&lt;/FONT&gt;&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Decide what range of sensor data readings is relevant to the product.
&lt;UL&gt;
&lt;LI&gt;How does my process impact the end point metrics?&lt;/LI&gt;
&lt;LI&gt;For each process, what is the time range of sensor readings that is relevant to the final product?&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;For each process, what is the time range of sensor readings that I want to correlate to the final product?&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Create a column in the data set with the end point metric(s) that defines the &lt;STRONG&gt;first&lt;/STRONG&gt; timestamp for each record that is relevant.&amp;nbsp;
&lt;UL&gt;
&lt;LI&gt;Do this by using a formula column using the finished product’s timestamp (or other reference timestamps if that is not available).&lt;/LI&gt;
&lt;LI&gt;You may need to define the last relevant timestamp as well.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Join the table with the end point metric(s) to the sensor data using Tables &amp;gt; JMP Query Builder.
&lt;UL&gt;
&lt;LI&gt;The join criteria need to be edited to include two conditions: one comparing the sensor timestamp to the finished product table’s timestamp, and one comparing the sensor timestamp to the first timestamp calculated in the second step.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Summarize (that is, average) the sensor metric in the joined table using Tables &amp;gt; Summary.
&lt;UL&gt;
&lt;LI&gt;Select the sensor metric(s) and then the Statistic desired.&lt;/LI&gt;
&lt;LI&gt;Group by all the other columns.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Use Graph Builder or Fit Y by X to look at the relationship between Potency and Average Temperature.&amp;nbsp;
&lt;UL&gt;
&lt;LI&gt;Where is potency the highest?&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;What can this tell you about where to set the operating range for temperature?&lt;/LI&gt;
&lt;LI&gt;Consider using modeling techniques so that you can incorporate all of the other process inputs as well.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Please comment on this blog post and let me know if you followed along. I want to know if you found the instructions clear and if not – what I can clarify.&amp;nbsp; Also, what situations do you have that are not being addressed here?&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Appendix&lt;/FONT&gt;&lt;/H1&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;FONT size="4"&gt;Review of Dates, Times and Datetimes&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Let’s do a quick review of this type of data because it is important to get the data type and modeling type correct in all the data tables if you want the data to be joined correctly. Analytic software stores dates, times and datetimes in seconds from a reference date. JMP stores dates, times and datetimes as the number of seconds from 1/1/1904. There is another great blog post on &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Using-dates-times-datetimes-and-durations-in-JMP/ba-p/68689" target="_blank" rel="noopener"&gt;Using Dates, Times, Datetimes and Durations&lt;/A&gt; if you want to go deeper on this topic.&lt;/P&gt;
&lt;P&gt;If you want to use this type of data (to graph, subtract dates, join via dates), you need to make sure the dates/times/datetimes are formatted as Data Type = Numeric and Modeling Type = Continuous. When you import the data, make sure you do so. For special types of date time formats, you may need to apply a &lt;A href="https://www.youtube.com/watch?v=NzbjVs0o6No" target="_blank" rel="noopener"&gt;custom import format&lt;/A&gt; to let JMP know that it is a datetime.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you format the data as Numeric and Continuous, you will see that the data is represented in seconds. It may look strange to you, but it is correct.&lt;/P&gt;
&lt;P&gt;Applying a format is what makes the data look understandable to yourself and others. You can choose from Date, Time, and Duration formats in Column Info (right click on column header &amp;gt; Column Info &amp;gt; Format). Datetimes (timestamps) are in the Time menu (Figure 5).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="datetimes.png" style="width: 194px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35476i6A5D9CD5CD14BF4A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="datetimes.png" alt="Figure 5. Format options for Dates, Times and Durations for a column." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 5. Format options for Dates, Times and Durations for a column.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Aside&lt;/H2&gt;
&lt;P&gt;If you want to join two data tables together via datetimes, make sure you have the level of detail necessary to do so in the datetime columns in both tables. The level of detail is determined by the source data. The format does not change the granularity of the data as it is recognized by JMP; it simply changes the granularity visible to us in the cell.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let’s consider two scenarios:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;If your data only has granularity at the date level (no time), applying a timestamp format (e.g. m/d/y h:m:s) will show the m/d/y and then 12:00:00 AM for the time for all records. There is no time detail in your source values, so you cannot compare times within the same day.&lt;/LI&gt;
&lt;LI&gt;If your data has detail at the datetime level, applying a Date format (e.g. just m/d/y) will show m/d/y in each cell; however, the underlying granularity will remain (Figure 4).&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="datetime granularity.png" style="width: 842px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35477i750468A5AE261716/image-dimensions/842x359?v=v2" width="842" height="359" role="button" title="datetime granularity.png" alt="Figure 6.  Timestamp columns with different formats but the same granularity." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 6.  Timestamp columns with different formats but the same granularity.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Contrast the two columns (Timestamp and Date) in Figure 7. The same format is applied to both. However, Timestamp has granularity that Date does not, and you can see that in the header graphs in the data table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Date vs Datetime.png" style="width: 373px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35478i50A1B354B67C6C8F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Date vs Datetime.png" alt="Figure 7.  Timestamp and Date have the same format but different levels of granularity." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 7.  Timestamp and Date have the same format but different levels of granularity.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Sep 2021 14:41:02 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Joining-by-datetimes/ba-p/414628</guid>
      <dc:creator>wendytseng</dc:creator>
      <dc:date>2021-09-07T14:41:02Z</dc:date>
    </item>
    <item>
      <title>VSCode and JSL: a different scripting environment</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/VSCode-and-JSL-a-different-scripting-environment/ba-p/414296</link>
      <description>&lt;P&gt;TLDR;&amp;nbsp; There's a &lt;A href="https://marketplace.visualstudio.com/items?itemName=VinceFaller.jmp-scripting" target="_self"&gt;VSCode extension&lt;/A&gt; that understands JMP. Or inside VSCode extensions, you can just search JMP, and as of this publication, it's the only thing that comes up.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hello JMP world,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have you found yourself wanting your JSL scripting environment to mimic more of an IDE?&amp;nbsp; Well, if you haven't checked out &lt;A href="https://code.visualstudio.com/" target="_self"&gt;Visual Studio Code&lt;/A&gt;, I would say now is a great time to look into it, because we, at &lt;A href="https://predictum.com" target="_self"&gt;Predictum&lt;/A&gt;, have been writing an extension for it that will let VSCode understand (kind of) JSL.&lt;/P&gt;
&lt;P&gt;First, I'm going to go into some of the native features of VSCode that I liked enough to want to do this in the first place.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://code.visualstudio.com/docs/editor/workspaces" target="_self"&gt;Workspace specific configs&lt;/A&gt; - You can open a folder with code, and it will remember it as a workspace, so you can just Ctrl+R and switch from project to project.&lt;/LI&gt;
&lt;LI&gt;Git built in - It automatically has all the git features you would normally want. And for the stuff that it doesn't have, someone has probably written an extension for it. Which brings us to...&lt;/LI&gt;
&lt;LI&gt;Extensibility - There are TONS of extensions to do all sorts, different languages, SQL Tools, cloud (AWS, Azure) integrations, GitLab/GitHub, you get it.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;It's lightweight.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;We loved all those things, so we decided to make it understand JSL. Obviously, you need a copy of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; for all of the features to work right, but you're here, so I feel that's a safe assumption.&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;What you get&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;We have:&lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Syntax Highlighting&lt;/STRONG&gt; - the most obvious thing we would need&lt;/P&gt;
&lt;P&gt;2. &lt;STRONG&gt;Hover Over Descriptions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="hover.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35446i2A97E1110CE90F2D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hover.gif" alt="hover.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These are pulled from the scripting index of your JMP if you have it up. So if you use NewCustomFunction(), it will pull in functions from other add-ins as well.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Useful Snippets&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="snippets.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35447iD584CB5EA1A7987E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="snippets.gif" alt="snippets.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The function snippet in this example also comes with &lt;A href="https://www.naturaldocs.org/" target="_self"&gt;Natural Docs&lt;/A&gt;&amp;nbsp;syntax because all functions are better with good documentation. We've definitely found that our documentation has been a lot better since making this add-in.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp; &lt;STRONG&gt;Running JSL&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You can press Shift+Enter to run your selected text, or the whole file if nothing is selected. Or you can press Alt+Enter to run just the single line you're on. We went with the VSCode standard for running instead of Ctrl+R because it felt like it flowed better with other extensions. Also Ctrl+R is already taken. But don't worry, VSCode lets you edit pretty much everything, so you can set anything to any keybinding you like. It will freeze up your current instance of JMP a little, but if you press the "close VSCode server" button, you should be good again.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="RunningJSL.gif" style="width: 665px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35448iFDFEDCB891BADE3A/image-dimensions/665x356?v=v2" width="665" height="356" role="button" title="RunningJSL.gif" alt="RunningJSL.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;5.&amp;nbsp; &lt;STRONG&gt;Syntax Error Reporting (recently added)&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Error checking.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35449i758EE3A59EAF0576/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Error checking.gif" alt="Error checking.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;I love this because it will look through all the files you have open and give them a big red title if any of them are bad. So if you have some nested include()s, you don't have to search through which file is actually the problem. Can't say enough how useful this ends up feeling.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;6. &lt;STRONG&gt;Symbol Outline&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="symbols.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35450i978521602FD9DF95/image-size/medium?v=v2&amp;amp;px=400" role="button" title="symbols.png" alt="symbols.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This is probably personally my most used feature. VSCode knows when you made a function, class, method, variable, whatever and will give you an outline of your current file. This is great because you can just surf the outline to look for what you want if the files are too big. Or you can just press Ctrl+O and type the variable and it will find it. The main reason this is better than Ctrl+F is that it will find ONLY where you assigned it. Not when you called it, or used the same name somewhere else in a different function ( it happens ). And again, you have full control on what types of variables you want in the outline. No functions? No problem.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;Cool. You're sold. Now what?&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Download VSCode (if you haven't already)&lt;/LI&gt;
&lt;LI&gt;Go to extensions (Ctrl+Shift+X by default)&lt;/LI&gt;
&lt;LI&gt;Search "JMP" and you should see something like&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMP.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35445iA4BAF7C14620236B/image-size/small?v=v2&amp;amp;px=200" role="button" title="JMP.png" alt="JMP.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;Press install. Done.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;We're actively working on it, but updates are a little slow. If you have any issues, feel free to &lt;A href="https://gitlab.com/predictum/jsl-for-vscode/-/issues" target="_self"&gt;log them&lt;/A&gt; in the repo. And as a shameless plug, if you know TypeScript (or just want to learn it) and are interested in contributing, we'd love the help. It's open source. It's just been myself and&amp;nbsp;&lt;LI-USER uid="19176"&gt;&lt;/LI-USER&gt; working on this in our spare time, and lately just Ben.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Sep 2021 16:52:44 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/VSCode-and-JSL-a-different-scripting-environment/ba-p/414296</guid>
      <dc:creator>vince_faller</dc:creator>
      <dc:date>2021-09-02T16:52:44Z</dc:date>
    </item>
    <item>
      <title>Statistician Kira Alhorn on how Gore derives business value from providing feedback and new feature ideas to JMP Development</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Statistician-Kira-Alhorn-on-how-Gore-derives-business-value-from/ba-p/410871</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Picture1.jpg" style="width: 267px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35137iDEB5B9848EF0D760/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Picture1.jpg" alt="Statistician Kira Alhorn" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Statistician Kira Alhorn&lt;/span&gt;&lt;/span&gt;Kira Alhorn, PhD, works as a statistician at W. L. Gore &amp;amp; Associates GmbH in Germany. With expertise in optimal experimental designs for model averaging estimators, she supports domain experts across R&amp;amp;D and engineering, consulting on exploratory data analysis, design of experiments and statistical process control, among others.&lt;/P&gt;
&lt;P&gt;I spoke with &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/17499" target="_blank" rel="noopener"&gt;@Kira_Alhorn&lt;/A&gt; about Gore’s analytics culture and how she and her colleagues have helped influence and shape new features in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: I know JMP users at Gore have been really active in collaborating with JMP Development to make the software better with each new release – essentially to make sure that new features align with what users actually want.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How do you go about providing feedback? Does this kind of collaboration have an impact on the value you get from the software?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kira:&lt;/STRONG&gt; Having a direct connection to JMP’s developers is a great opportunity to &lt;A href="https://community.jmp.com/t5/JMP-Wish-List/idb-p/jmp-wish-list" target="_blank" rel="noopener"&gt;share our wish list&lt;/A&gt; and suggestions for &lt;A href="https://community.jmp.com/t5/JMPer-Cable/How-do-features-get-into-JMP/ba-p/49670" target="_blank" rel="noopener"&gt;future JMP releases&lt;/A&gt;. We’ve been meeting developers at Discovery Summits, sharing our feedback in the JMP Community as well as communicating directly via email (or, before COVID, also in face-to-face meetings).&lt;/P&gt;
&lt;P&gt;The developers are always open to our comments and – at least within my time at Gore – have solved most of the questions that we’ve had so far. There are quite a few platforms in JMP that have been influenced by statisticians at Gore, e.g., the MSA platform and Custom Designer (not me, though!). Overall, having the possibility to give feedback and seeing it applied in future releases increases the value we are getting from JMP.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: That’s great to hear! Another one of the things I’m curious about is how you’ve utilized all the free learning and networking resources JMP offers – things like the online user Community, for example.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kira:&lt;/STRONG&gt; At Gore, we interact with the JMP organization in many ways. Attending &lt;A href="https://discoverysummit.jmp/en/home.html" target="_blank" rel="noopener"&gt;Discovery Summits&lt;/A&gt; helps us to discover new trends and features in JMP and to learn about new opportunities to use statistical methods. The interaction with JMP staff and users broadens our horizons and makes us rethink our current approaches to data analysis, design of experiments and statistical process control.&lt;/P&gt;
&lt;P&gt;Within the JMP Community, we can help each other and learn about problems other associates are facing. Finally, &lt;A href="https://www.jmp.com/en_us/online-statistics-course.html" target="_blank" rel="noopener"&gt;STIPS&lt;/A&gt; has helped us a lot during the pandemic when our statistics trainings have had to be done virtually. We’ve been using parts of the STIPS course as e-learnings for our classes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: It’s interesting you mention STIPS (our free statistical thinking course). I’ve heard from a lot of JMP users that STIPS has been a great resource for domain experts in particular to hone their statistical skills. In your experience, how has having JMP changed the way domain experts at Gore apply their knowledge and skills?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kira:&lt;/STRONG&gt; Statistics has a long tradition within Gore’s technical functions. Bill Gore, the founder of W.L. Gore &amp;amp; Associates, applied statistical experimentation and analysis himself (in fact, he also published a book titled &lt;EM&gt;Statistical Methods for Chemical Experimentation&lt;/EM&gt;).&lt;/P&gt;
&lt;P&gt;So we at Gore already have a strong belief in the application of statistical approaches to complement domain expertise and to enable better decision making. However, applying statistics can be very cumbersome when you don’t have the right software on hand.&lt;/P&gt;
&lt;P&gt;Since JMP is intuitive and easy to use, it enables all of our associates to explore and analyze data easily, without needing excessive training to do so. Graph Builder, with all its powerful options, makes sharing results easy and interactive – and supports domain experts in making the right decisions based on both their data and domain expertise.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone looking to cultivate a more mature analytics culture in their organization?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kira:&lt;/STRONG&gt; Establishing a mature analytics culture in any organization is a long and sometimes rocky road. Before being able to do fancy analytics with your data, you first need to have the data available in an accessible and clean format. However, the way to clean and make data accessible might be tough, so keeping a vision and the end goal at the front of your mind will help. You should be able to answer the question "What will change by making data-driven decisions within the company?" &amp;nbsp; &lt;/P&gt;
&lt;P&gt;Additionally, know that at times, not everyone will be able to envision the possibilities and opportunities that analytics can bring. Be prepared to just showcase some examples of what can be done using analytics – even if they don’t think they will need it!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: How about advice for someone who’s just starting out with JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kira:&lt;/STRONG&gt; Don’t be afraid and just try it out! Basically, you can click, drag and drop everywhere – there’s not a lot that you can do "wrong." And don’t forget to search behind the red triangle if you can’t find what you are looking for!&lt;/P&gt;</description>
      <pubDate>Thu, 19 Aug 2021 13:00:00 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Statistician-Kira-Alhorn-on-how-Gore-derives-business-value-from/ba-p/410871</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-08-19T13:00:00Z</dc:date>
    </item>
    <item>
      <title>Steve Hampton of PCC Structurals on transitioning from Minitab and why it’s so important to take advantage of the JMP resources for engagement and learning he calls an “immense value-add”</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Steve-Hampton-of-PCC-Structurals-on-transitioning-from-Minitab/ba-p/406992</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="steve_hampton_pcc.jpg" style="width: 257px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34768i8EC65BCDAC06CBFC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="steve_hampton_pcc.jpg" alt="Steve Hampton is Process Control Manager for PCC Structurals" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Steve Hampton is Process Control Manager for PCC Structurals&lt;/span&gt;&lt;/span&gt;Process Control Manager Steve Hampton has made a career of introducing Lean Six Sigma initiatives in the casting industry. After joining the investment casting manufacturer PCC Structurals fifteen years ago as an engineer, Steve recognized the potential of statistical approaches to better meet the metallurgical and dimensional needs of customers on reduced timelines and at lower costs.&lt;/P&gt;
&lt;P&gt;Within his current purview of process control, Steve says it’s critical to think not just of one aspect of a process, but the entire value stream. Early changes in any process can have knock-on effects and by taking a broad view of the entire &lt;A href="https://www.jmp.com/en_us/software/analytic-workflow.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;analytics workflow&lt;/A&gt;, he has been able to introduce targeted improvements that reduce rework, defects and costs downstream.&lt;/P&gt;
&lt;P&gt;In a recent conversation, &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/16391" target="_blank" rel="noopener"&gt;@shampton82&lt;/A&gt; shared his thoughts – and some advice – on how he’s gotten more value out of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, both for his organization and his own career.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Introducing any new method or tool can be disruptive at first – particularly to an organization that sees itself as already working with the most cutting-edge tools on the market. But that doesn’t mean there aren’t overwhelming benefits to some of those transitional growing pains! What kinds of ROI or improvements have helped to build momentum for the data initiatives you’ve introduced at PCC? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; This question reminds me of the activation energy curves from my school days. Initially, there is a huge energy barrier for a reaction to take place, but by adding in an appropriate catalyst, that energy is greatly reduced. I see JMP – and the support structure that comes with the software – as that catalyst for our company.&lt;/P&gt;
&lt;P&gt;At PCC, we’ve had a long history with NEI and the DMAIC mindset, with Minitab being our main stats package. But we were also pretty stuck in an ANOVA and bivariate regression analysis rut. Even worse, with the limitations of Minitab and Excel, engineers would have to hop between the two multiple times during an analysis, and many just ended up using Excel because that was what they knew and could be efficient with. The result was some OK visualizations of our data and processes but a backslide on statistical rigorousness around decisions.&lt;/P&gt;
&lt;P&gt;At the time when I was first introduced to JMP, I was a Minitab superuser and, to be honest, didn’t immediately see the value. Nevertheless, once I made the switch with help from &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1340" target="_blank" rel="noopener"&gt;@Jordan_Hiller&lt;/A&gt;’s onsite training and a few excellent &lt;A href="https://www.jmp.com/en_us/events/ondemand/webcasts/by-application-area/all-application-areas.html" target="_blank" rel="noopener"&gt;on-demand webinars&lt;/A&gt;, I never looked back. Everyone who has made the transition feels the same way.&lt;/P&gt;
&lt;P&gt;The turning point for my plant was a pretty large process excursion where we weren’t getting anywhere using our typical tools – but it was costing us hundreds of thousands of dollars as the problem persisted. The project team went back to basics with process mapping and brainstorming and started using JMP’s powerful visualization tools to quickly test theories in a group setting. Then we could run a statistical test to see if they were worth pursuing further. This led to a rapid understanding of what the main experiment priorities should be and a fundamental shift in what we prioritized in controlling our process.&lt;/P&gt;
&lt;P&gt;Out of that, not only did we solve our process excursion (that was initially focused around a few parts), but we also saw improvement across all parts. The speed at which JMP allowed us to get to actionable items and the flexibility in distilling down complex issues with Graph Builder and the Profiler allowed PCC’s upper management to see the value of JMP for our company. Just this year, we are now training all our technical rotation personnel with the &lt;A href="https://www.jmp.com/en_us/online-statistics-course.html" target="_blank" rel="noopener"&gt;STIPS course&lt;/A&gt; to ingrain this thinking and the ability to use JMP from the beginning of their careers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: You’re describing two different kinds of newcomers to JMP. One is a person, maybe fresh out of university, who hasn’t yet used tools like JMP in an industrial workplace. The other is more advanced in their career and already has well-established preferences when it comes to statistical tools. And as a former “Minitab superuser,” you sound like you were previously in that second category! &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;One of the most common objections we hear – most often from that more advanced-career group – is that some fear statistical approaches in JMP will supplant their domain expertise. How has having JMP changed the way you and your team apply domain knowledge and skills? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; Graph Builder and the Profiler are the Rosetta Stone for domain experts and JMP nerds. The capability for dynamic visuals basically allows domain experts to see what the data is saying across different settings and in different graphical environments. That’s really the “ah-ha” moment because they see what they have in their head – and JMP allows them to explain the links between process elements very clearly to other team members.&lt;/P&gt;
&lt;P&gt;So, in project team meetings, I quickly see our domain experts driving the conversation – “can we look at this factor versus that one” or “let’s overlay this and that” – and then start talking to the team about what they are seeing and what can be done.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Tell us about your relationship with the JMP organization. There are some people who just use the software – and that’s fine – but there are others who really engage with JMP as an organization. What kind of value, in your experience, have you gained from taking advantage of some of the resources JMP offers? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; I’ve been using JMP now for about six years (and JMP Pro for two), but it wasn’t until a couple of years ago that I really got involved in the JMP Community. I have been pretty active on the JMP Community discussion boards (mostly asking for scripting help), attended the 2019 Discovery Summit (which was awesome!) and was lucky enough to get selected to &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2020/Statistical-Process-Control-for-Process-Variables-that-have-a/ta-p/281548" target="_blank" rel="noopener"&gt;present at least year’s Discovery Summit&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I also regularly watch the on-demand webinars, have gone through the STIPS training, and have taken the &lt;A href="https://www.jmp.com/en_us/learning-library/designed-experiments.html" target="_blank" rel="noopener"&gt;online DOE training courses,&lt;/A&gt; so at this point you could say I’m all in!&lt;/P&gt;
&lt;P&gt;Everything I’ve listed is the immense value-add that most people don’t know about. Or maybe they don’t understand how much value there is outside of the JMP application itself. Having a local technical resource like Jordan who I can bounce ideas off of and who can do group training sessions for us is really a game-changer when it comes to a JMP user group growing and thriving.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: How would you say your advocacy for analytics transformation has impacted your career trajectory? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; I’m not sure I’d be in my current role as Process Control Manager right now if it wasn’t for my love of all things data and stats. I’d held multiple operations and engineering roles before I joined the Process Control team at PCC, but I believe what helped me land the role was my understanding of how data and data-based decisions can lead to step-function changes in the control and improvement of a process. That and my interest in converting others into stat nerds!&lt;/P&gt;
&lt;P&gt;It has also help me with exposure to other plants, networking across divisions, and exposure at technical conferences as I help others with their data analytics problems and present on what we’re doing new at my plant.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone looking to cultivate a more mature analytics culture in their organization?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; I think the No. 1 thing is to force people to take the time to learn. Starting out, trying to understand data analytics, and using a new program like JMP requires a manager to say it’s OK to go slower in the short term with analytic problems so that people feel empowered to actually learn rather than resort to their old ways. When the house is on fire, people won’t naturally grab the tool that will slow them down at first, so that’s our job as change agents to let them know it’s OK to go slower at the outset to end up going faster and farther overall.&lt;/P&gt;
&lt;P&gt;I also would recommend finding someone with a passion for data analytics and empowering them to have time to share their passion and be a contagious force. They can encourage others to take every available opportunity to try new ways of exploring data and having it lead to actionable items.&lt;/P&gt;
&lt;P&gt;Finally, you need to share wins and make sure people are not reinventing the wheel on best analytical practices – so user group meetings, tech portals, and best practice report-outs are critical.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone who is just starting out with JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Steve:&lt;/STRONG&gt; Here are my top 5 tips:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Take advantage of the free resources JMP has to offer.&lt;/LI&gt;
&lt;LI&gt;Dedicate yourself to using JMP enough to develop a “button” muscle memory.&lt;/LI&gt;
&lt;LI&gt;Make the platform more efficient by using custom toolbar buttons and scripts for frequently used actions and analysis.&lt;/LI&gt;
&lt;LI&gt;ALWAYS visualize your data before you try to do any analysis.&lt;/LI&gt;
&lt;LI&gt;Get involved in other people’s problems. You’ll be amazed at how much you learn exploring data you’re not used to and questions you’ve never thought of how to answer before.&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Thu, 05 Aug 2021 15:10:56 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Steve-Hampton-of-PCC-Structurals-on-transitioning-from-Minitab/ba-p/406992</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-08-05T15:10:56Z</dc:date>
    </item>
    <item>
      <title>What's new in JMP Live 16.1</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/What-s-new-in-JMP-Live-16-1/ba-p/381309</link>
      <description>&lt;P&gt;We are committed to continually improving &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=jmplive&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt;, and &lt;A href="https://www.jmp.com/en_us/support/jmp-software-updates.html?utm_campaign=jmplive&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 16.1&lt;/A&gt; is no exception. In our latest release, we have focused on improving the experience around administrating your JMP Live instance. Outlined below is just a sampling of the great changes we have made to JMP Live.&lt;BR /&gt;&lt;FONT size="6"&gt;Download JMP Live content as a JMP Project&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;You can now download JMP Live content as a JMP Project, which allows you to download a report (or all the reports, if downloading a folder) and the data tables associated with the report at one time. When you open the downloaded file using JMP, you will find each report as tab in the Project. The Project also includes a script that allows you to quickly open the post back up on JMP Live. Note: The downloaded Project is only supported by JMP 16.0+.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="project.PNG" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32472i49E8D1878D5EE8F8/image-dimensions/751x594?v=v2" width="751" height="594" role="button" title="project.PNG" alt="project.PNG" /&gt;&lt;/span&gt;The Download as JMP Project button is found on the toolbar of a post:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="download_project.PNG" style="width: 756px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32483iAD2DB0EBEAFB54B3/image-dimensions/756x455?v=v2" width="756" height="455" role="button" title="download_project.PNG" alt="download_project.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="6"&gt;Display name sync&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Prior to JMP Live 16.1, you had to set your display name when logging into you account for the first time. Now, JMP Live provides an option to retrieve display names from the authentication provider. To turn on the feature, admins may now set the following option in the ENV file:&lt;/P&gt;
&lt;PRE&gt;AUTH_DISPLAY_NAME_SYNC = 1&lt;/PRE&gt;
&lt;P&gt;The display name sync has different restrictions depending on the authentication provider used with JMP Live. If the instance is authenticated using Direct AD, the display name sync will look for the field displayName as the assumed display name for the user and will use it if present. &lt;BR /&gt;Keycloak Authentication is a bit more flexible than Direct AD. Keycloak allows mapping attributes from authentication providers to a set of common attributes for JMP Live. Once the desired attribute is mapped to displayName within Keycloak, JMP Live will use that for display name syncing.&lt;/P&gt;
&lt;P&gt;Turning on display name sync disables a user’s ability to manually edit their display name in JMP Live. &lt;BR /&gt;&lt;FONT size="6"&gt;Import users from Active Directory&lt;/FONT&gt;&lt;BR /&gt;If your JMP Live instance is using Direct AD or Keycloak AD, you will now be able to import users directly from Active Directory using the JMP Live CLI.&lt;/P&gt;
&lt;PRE&gt;C:\Program Files\SAS\JMP Live\JMPLive&amp;gt; bin\jmplive-cli authImport -h
Imports different entities from the configured authentication service for use in JMP Live.

USAGE
  $ jmplive-cli authImport

OPTIONS
  -a, --all Import all entities from the authentication service
  -c, --count Count the number to process without importing
  -t, --type=users|groups (required) The type of entity to import&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size="6"&gt;Admin panel refresh&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;In JMP Live 16.1, we have refreshed the look and feel of the entire administration panel. We wanted to make accessing information about the JMP Live instance more intuitive and allow for a more optimized experience on both desktop and mobile based formats.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT size="5"&gt;Server status page&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The server information page is a new addition to JMP Live 16.1. We created this page to be the default landing area of the administration panel and to provide a new home for the configuration settings. Along the top of the page, we have highlighted the number of enabled users, a list of JMP Sessions currently in use across the pool and the number of reports in the regeneration queue. Other settings of note in the cards below are the SSL Certificate expiration date and the database connection status to help identify problems with the JMP Live instance.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="server_status.png" style="width: 772px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32484i11BB848F95E4A464/image-dimensions/772x573?v=v2" width="772" height="573" role="button" title="server_status.png" alt="server_status.png" /&gt;&lt;/span&gt; &lt;BR /&gt;&lt;BR /&gt;&lt;FONT size="5"&gt;Post access table&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The JMP Live admin panel also includes a new page that allows you to browse the view and download activity on every post in your JMP Live instance. Since this table is filterable, the admin can filter by users, access type, IP address and more, allowing an administrator to monitor more closely who is accessing resources on the JMP Live instance.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="post_access.PNG" style="width: 767px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32485iC36C34C1CB4C33BF/image-dimensions/767x503?v=v2" width="767" height="503" role="button" title="post_access.PNG" alt="post_access.PNG" /&gt;&lt;/span&gt;We also include a more limited version of the access table for individual posts in JMP Live, viewable by the post’s publisher. This table is found in the overflow menu of a post’s page.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT size="5"&gt;Refresh existing admin panel&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;In addition to adding new pages to the admin panel, we updated the existing pages to match the look and feel of the rest of JMP Live. Here are some of the highlights.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT size="5"&gt;User management&lt;/FONT&gt;&lt;BR /&gt;The user management page has gotten a totally new layout in JMP Live 16.1. Now we provide a list of users on the left-hand side of the page and allow you to filter down the list so you can find a specific user quickly. &lt;BR /&gt;Clicking on the user in the list brings up the details for that user on the right-hand side of the page. The first section lists basic information about the user and allows an administrator to update the user’s display name if applicable. The next section allows an admin to adjust the user’s permissions for JMP Live.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="user_management.png" style="width: 822px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32486i70BD96A98F318447/image-dimensions/822x588?v=v2" width="822" height="588" role="button" title="user_management.png" alt="user_management.png" /&gt;&lt;/span&gt; &lt;BR /&gt;&lt;FONT size="5"&gt;Group management&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Similar in design to the user management page, group management allows an administrator to adjust the settings for each group on JMP Live. After selecting a group in the list, an admin may adjust the basic information about a group or even delete the group if it is no longer needed. The next section allows you to manage the members of the group. You may add new members, delete existing ones, or adjust the permissions for individual members.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="group_management.png" style="width: 793px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32487iD6943CB83E4701D8/image-dimensions/793x616?v=v2" width="793" height="616" role="button" title="group_management.png" alt="group_management.png" /&gt;&lt;/span&gt; &lt;BR /&gt;&lt;FONT size="5"&gt;JMP Live settings&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;This page includes the runtime settings from the old admin settings page. The configuration settings are now surfaced on the new JMP Server Info page, which means that every setting listed on this page is editable while JMP Live is running. Each setting is individually editable and includes a pop-up description if necessary.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="settings.png" style="width: 809px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32488i55ABEB75B1C284CB/image-dimensions/809x668?v=v2" width="809" height="668" role="button" title="settings.png" alt="settings.png" /&gt;&lt;/span&gt; &lt;BR /&gt;&lt;FONT size="5"&gt;JMP Pool&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The new JMP Pool panel highlights some performance metrics along the top of the page so an admin may quickly assess the state of the pool. Each pool machine is listed in the table with a summary of information about the servers within. However, if you need to manage an individual server, the list may be found in the pool’s details panel.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pool.PNG" style="width: 760px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32490i18F74FDCD7CEEA3D/image-dimensions/760x593?v=v2" width="760" height="593" role="button" title="pool.PNG" alt="pool.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;Audit log&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The redesigned audit log panel allows you to explore the activity of the JMP Live instance. The filters are the same as the old audit log design, allowing admins to focus on specific activity, users, timestamps and more.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="audit_log.PNG" style="width: 796px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32491iBE62635D5EC3550A/image-dimensions/796x541?v=v2" width="796" height="541" role="button" title="audit_log.PNG" alt="audit_log.PNG" /&gt;&lt;/span&gt;We have also redesigned the details column to pop up a JSON viewer window so you can explore the full data associated with each entry.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="audit_log_details.png" style="width: 846px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32492i66C7C27CCE36327C/image-size/large?v=v2&amp;amp;px=999" role="button" title="audit_log_details.png" alt="audit_log_details.png" /&gt;&lt;/span&gt; &lt;BR /&gt;&lt;FONT size="6"&gt;Keycloak CLI&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;With the update to JMP Live 16.1, we have introduced a new command line tool to help manage a Keycloak installation. This tool is designed to be run on the Keycloak server by system administrators. This CLI makes it easier to manage database settings and HTTPS certificates. The CLI supports a help command and a -h argument to display help information for a given command.&lt;/P&gt;
&lt;PRE&gt;C:\Program Files\SAS\Keycloak\keycloak&amp;gt;keycloak-cli help
keycloak-cli can be used to configure your Keycloak instance using one of the
following commands. For more information about a command, you can use help with
the command name or use --help after the command name.

Usage: keycloak-cli [-h] &amp;lt;command&amp;gt;

Options:
  -h, --help Show this help message and exit.

Commands:
  database   Configures database settings for the Keycloak server.
  http       Configures HTTP settings for the Keycloak server.
  https      Configures HTTPS settings for the Keycloak server.
  help       Displays help information about the specified command

Exit Codes:
  2 Missing required command&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size="5"&gt;Database&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The database command helps an admin configure database settings for the Keycloak server. The connection command allows you to get the current connection information, set new connection information, and validate the connection. The create-schema command will create the Keycloak schema in the database.&lt;/P&gt;
&lt;PRE&gt;C:\Program Files\SAS\Keycloak\keycloak&amp;gt;keycloak-cli database help
Configures database settings for the Keycloak server.

Usage: keycloak-cli database [-h] &amp;lt;command&amp;gt;

Options:
  -h, --help Show this help message and exit.

Commands:
  connection      Configures database connection settings for the Keycloak
                    server.
  create-schema   Creates the Keycloak schema in the database.
  help            Displays help information about the specified command

Exit Codes:
  2 Missing required command&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size="5"&gt;HTTP/HTTPS&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The https command helps to manage the HTTPS settings for the Keycloak server. The bind-address command allows a user to update the IP address that Keycloak listens on for incoming connections. The certificates command allows a user to update the certificates used by the server and validate the new certificate files before replacing them. The port command allows the user to configure the port number that Keycloak listens on for HTTPS connections.&lt;/P&gt;
&lt;PRE&gt;C:\Program Files\SAS\Keycloak\keycloak&amp;gt;keycloak-cli https help
Configures HTTPS settings for the Keycloak server.

Usage: keycloak-cli https [-h] &amp;lt;command&amp;gt;

Options:
  -h, --help Show this help message and exit.

Commands:
  bind-address              Configures the IP address that Keycloak listens on
                              for incoming connections.
  certificates              Configures the HTTPS certificates for the Keycloak
                              server.
  port                      Configures the port number Keycloak listens on for
                              HTTPS connections.
  proxy-address-forwarding  Configures whether Keycloak accepts X-Forwarded-For
                              headers from proxies.
  help                      Displays help information about the specified
                              command

Exit Codes:
  2 Missing required command&lt;/PRE&gt;
&lt;P&gt;Like the port command on https, the http port command allows you to configure the port number that Keycloak listens on for HTTP connections.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jul 2021 19:01:42 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/What-s-new-in-JMP-Live-16-1/ba-p/381309</guid>
      <dc:creator>MichaelGoff</dc:creator>
      <dc:date>2021-07-30T19:01:42Z</dc:date>
    </item>
    <item>
      <title>Moving from Minitab  to JMP and JMP  Pro: A Transition Guide</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Moving-from-Minitab-to-JMP-and-JMP-Pro-A-Transition-Guide/ba-p/390756</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="CoverMinitabtoJMP.PNG" style="width: 309px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34255i3435F79A015BC6C6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="CoverMinitabtoJMP.PNG" alt="CoverMinitabtoJMP.PNG" /&gt;&lt;/span&gt;Easy to use statistical software has become a essential tool in almost all businesses as more companies seek to have their employees basing decisions on data. Comprehensive statistical analyses, building of sophisticated descriptive and predictive models, and mining data to discover insights are no longer just done by statisticians but by those across many functional areas within an organization. Academia is experiencing a similar need. There has been a substantial increase in the number of programs and courses across a wide range of disciplines exposing students to the tools and techniques of the statistical sciences. Interactive point-and-click software can greatly reduce the barrier for students to develop the necessary skills and enjoy the data exploration process without the need for programming.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This white paper explores two popular software packages – Minitab and JMP. Differences between the two will be illustrated with the goal of easing the transition for experienced Minitab users to move over to JMP. Focus is on the user interface, how tools are accessed, how analyses are performed, and the general workflow that a user follows to analyze data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Minitab is a graphical user interface-based (GUI) statistical software program first developed in 1978 as a computing tool to support introductory statistics courses. Minitab v19, released in June 2020, is the version featured in this white paper.&lt;/P&gt;
&lt;P&gt;JMP and JMP Pro are also GUI-based software, first developed by SAS in 1989 to support engineers, scientists and researchers in applying the tools of the statistical sciences in a nonprogramming, highly interactive environment. JMP and JMP Pro are used across a wide range of industries and academic disciplines. JMP 16 and JMP Pro 16, released in March 2021, are the versions featured in this paper.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As this is a transition guide rather than a comprehensive coverage of their individual capabilities, we are unable to cover all the differences between the two in this white paper. Visit&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.minitab.com/" target="_blank" rel="noopener"&gt;minitab.com&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/" target="_blank" rel="noopener"&gt;jmp.com&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to learn more.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Topics covered in this paper include:&lt;/P&gt;
&lt;P&gt;&lt;LI-TOC indent="5" liststyle="disc" maxheadinglevel="6"&gt;&lt;/LI-TOC&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The full text of the white paper appears below.&lt;BR /&gt;(Note: You can jump directly to a particular section by clicking on the hyperlinks above.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;HR /&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Introduction&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Easy to use statistical software has become a essential tool in almost all businesses as more companies seek to have their employees basing decisions on data. Comprehensive statistical analyses, building of sophisticated descriptive and predictive models, and mining data to discover insights are no longer just done by statisticians but by those across many functional areas within an organization. Academia is experiencing a similar need. There has been a substantial increase in the number of programs and courses across a wide range of disciplines exposing students to the tools and techniques of the statistical sciences. Interactive point-and-click software can greatly reduce the barrior for students to develop the necessary skills and enjoy the data exploration process without the need for programming.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This white paper explores two popular software packages – Minitab and JMP. Differences between the two will be illustrated with the goal of easing the transition for experienced Minitab users to move over to JMP . Focus is on the user interface, how tools are accessed, how analyses are performed, and the general workflow that a user follows to analyze data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Minitab is a graphical user interface-based (GUI) statistical software program first developed in 1978 as a computing tool to support introductory statistics courses. It gained much popularity in industry during the mid-to-late ‘90s as companies that were engaged in quality initiatives such as Six Sigma began using statistical techniques to improve the quality of their processes and products. Minitab v19, released in June 2020, is the version featured in this white paper.&lt;/P&gt;
&lt;P&gt;JMP and JMP Pro are also GUI-based software, first developed by SAS in 1989 to support engineers, scientists and researchers in applying the tools of the statistical sciences in a nonprogramming, highly interactive environment. JMP and JMP Pro are used across a wide range of industries and academic disciplines. JMP 16 and JMP Pro 16, released in March 2021, are the versions featured in this paper.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As this is a transition guide rather than a comprehensive coverage of their individual capabilities, we are unable to cover all the differences between the two in this white paper. Visit &lt;A href="http://www.minitab.com" target="_blank" rel="noopener"&gt;www.minitab.com&lt;/A&gt; and &lt;A href="http://www.jmp.com" target="_blank" rel="noopener"&gt;www.jmp.com&lt;/A&gt; to learn more.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Overview&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;While there are some similarities between Minitab and JMP, there are some fundamental differences that are important for one who is transitioning to JMP should know.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Interactive analysis output.&lt;/STRONG&gt; When performing an analysis in JMP, the output is presented in an interactive window. All the analysis output created, including what’s created across different platforms, are dynamically linked to each other and to the data table. This allows the user to interact directly with the analysis output. Changes such as removing/adding variables to a model, switching the role of a variable and subsetting the data can be done directly from the analysis output without the need to rerun an analysis. Changes can also be made to the data table (e.g., adding/deleting data) and all the output can be set to automatically update.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Minitab output is predominantly static and is not connected across different analysis tools. To remove a variable from a model, for example, the analysis tool would need to be relaunched, those changes specified, and then the analysis rerun. In many of Minitab’s tools, making changes to the data will not automatically update analysis results.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Contextual menus.&lt;/STRONG&gt; Each analysis output performed in JMP is connected with access to a set of tools related to that analysis. In this way, the approach to analyzing data is more exploratory and interactive in nature, with the results of one analysis guiding the user to a set of tools that are designed as next steps in the analysis workflow.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Minitab runs analyses in a more traditional batch mode, with the user often having to decide upon which analysis to perform entirely separate from seeing features in the data. When a tool is selected, a dialog box is open. Variables are assigned roles and options are chosen. Running the analysis produces a set of output that is typically static. The next step in a typical analysis workflow often requires a new tool to be launched requiring another round of specifying variable roles and options.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. Defining data to be used for analysis.&lt;/STRONG&gt; The typical approach in Minitab is to create a worksheet that contains all the data that a particular analysis will be based on. If it is desired, for example, to perform an analysis on a subset of that data, it is usually required to perform an operation (e.g., Subset, Split Worksheet, etc.) to create a new worksheet. If outliers are discovered an the analyst wishes to see the results without those data points, another new worksheet would typically need to be created and the analysis run again. This requires the need to manage many worksheets in a typical analysis session.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Though one is also able to work with multiple data tables in JMP, it can often be easiest to use Data Filters and Row State operations to define the data to base a specific analysis on. These data filters and row states can be saved and accessed at any time, which allows the analyst to have a single data table upon which all analyses on various subsets of that data can be performed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In addition, the Local Data Filter tool in JMP allows users to filter the data even after an analysis is performed. For example, a linear regression model can be create from all of the data in a data table. From within the &amp;nbsp;regression analysis output, a local data filter can be launched, which instantly changes all the results for different subsets of the data selected.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. Simultaneous multiple analyses.&lt;/STRONG&gt; A key feature of JMP is its ability to perform a large number of analyses simultaneously. In nearly all analysis platforms within JMP, a By Variable option is available, allowing analyses to be performed for each level of that variable. For example, if one wanted to perform separate hypothesis tests comparing two means for each of 10 different groups of a categorical variable, then that By Variable simply needs to be specified. Minitab would require running that analysis 10 separate times.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JMP platforms also allow you to run a large number of individual analyses together by simply selecting all the response variables and factors. For example, if one wanted to perform every possible one factor analysis for three different response variables and five different explanatory factors, all 3x5=15 different analyses can be performed in one step, including different one factor analysis techniques based on the data type for the response variables and factors. ANOVA, Linear Regression, Logistic Regression, and a Chi-Square Analysis can all be performed simultaneously with the results displayed in the same output window. Minitab would require running each of these analyses separately using different tools.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JMP has unique platforms designed for executing a very large number of analyses together with custom graphs and output created. For example, a multivariable capability analysis can be performed on 50 different process variables. In addition to producing output for 50 different individual capability analyses, unique graphs and numerical output will be created, standardizing all the individual results, to allow for easy comparisons across these 50 variables – a true multivariate analysis.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are also specialized platforms in JMP custom designed for applications when an extremely large number of analyses are needed. In certain scientific fields, it’s quite typical that one may have, for example, a thousand different response variables and a single explanatory factor. A response screening analysis can be performed resulting in 1,000 separate one-way ANOVAs. The results (statistically adjusted based of the number of analyses) are displayed together using a custom set of graphs and data tables designed for easy comparison and follow-up analyses.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. Integration.&lt;/STRONG&gt; JMP has the capability to integrate with external computational environments such as SAS, MATLAB, R and Python. Through JSL (JMP’s Scripting Language), an analyst can leverage the power of those tools while also being able to work within the interactive GUI of JMP. &lt;BR /&gt;Minitab currently has the ability to integrate solely with Python, but not SAS, R or MATLAB.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6. Publishing reports.&lt;/STRONG&gt; Both Minitab and JMP have tools to export and save reports outside of the software (e.g., .jpg, Microsoft PowerPoint and Word). JMP can also generate interactive .html reports, allowing others to view analysis reports outside JMP with interactive tools to drill down into the data further. Another product in the JMP suite of products is JMP Live, which provides additional capabilities for automating the generation and sharing of reports updating a dashboard as data and models change.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7. Statistical analysis techniques.&lt;/STRONG&gt; Though both software contain many of the more common statistical analysis tools, there are myriad more advanced statistical techniques and data management tools available in JMP and JMP Pro that are not available in Minitab. JMP also typically has more options and capabilities within a particular statistical analysis technique. Visit &lt;A href="http://www.jmp.com" target="_blank" rel="noopener"&gt;www.jmp.com&lt;/A&gt; to learn more.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Datasets&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Various datasets will be used throughout this guide. &lt;A href="https://community.jmp.com/t5/JMP-Sample-Data/Moving-from-Minitab-to-JMP-and-JMP-Pro-A-Transition-Guide/ta-p/384717" target="_self"&gt;They can be found here&lt;/A&gt;.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;File Format&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;One difference that an experienced Minitab user may first notice when learning JMP is that it is not necessary to work within a Project File structure.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Minitab Project File&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Users of Minitab are most familiar with Minitab Project Files denoted with the extension&amp;nbsp;.mpx. Within this Project File, multiple worksheets (i.e., data tables) can be imported or created. Figure 1 shows a sample Minitab Project File containing four worksheets. The&amp;nbsp;display is split into three panes. The bottom-right pane shows the active worksheet (Full 4 Data) along with tabs at the bottom for each of the worksheets. The left pane, known&amp;nbsp;as the Navigator, shows a list of the analyses and operations that have been performed&amp;nbsp;(e.g., Graphical Summary of Yield and Moisture Content, … , Split Worksheet). The&amp;nbsp;top-right pane is the output window displaying the particular analysis output that has been. There are three different views that can be chosen (Data and Output, Data only&amp;nbsp;and Output only). In this figure, Data and Output view was chosen.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_0-1626718807970.png" style="width: 386px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34263i2CAFBE05E55EA078/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_0-1626718807970.png" alt="Figure 1 Minitab: Project File" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 1 Minitab: Project File&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Any analysis or operation chosen is performed on the active worksheet. If a user wishes&amp;nbsp;to perform an analysis on a subset of the data, a new worksheet would need to be created&amp;nbsp;from the parent worksheet. Here a set of worksheets were created, one for each of the&amp;nbsp;four GeoLocations (A, B, C and D) using the Data&amp;gt;Split Worksheet command. To perform&amp;nbsp;an analysis on just one of the GeoLocations, that worksheet would first need to be&amp;nbsp;selected to make it the active worksheet before running the analysis.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;JMP Data Table File&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;JMP can also be used from within a Project File structure. First, let’s take a look at how JMP data table files work since many users opt to work from that type of file. JMP data table files are denoted with the extension .jmp.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Figure 2 shows a sample of a JMP data table file. There are four panes to the file. The data table is to the right, the Row Pane is in the lower-left and provides a summary of the rows in the data table, including the number of rows that have been selected, excluded or hidden. The Column Pane in the middle-left displays the variables in the data table, identifying properties for that variable, such as the modeling type and use of a label. The upper-left pane shows the scripts that have been saved to this data table file. The steps to run and save scripts will be shown in a later section.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The red triangles, seen in the different panes, access a variety of tools to perform operations on the data table, columns or rows. Columns can be reordered in the data table by clicking and dragging the columns list in the Columns Pane to the desired location. A more comprehensive list of tools and operations that can be performed on columns can be found under the Cols menu or by right-clicking on a column in the data table.&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="Larry_LaRusso_1-1626719173896.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34264iDF15C152306998D1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_1-1626719173896.png" alt="Figure 2 JMP: Data Table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 2 JMP: Data Table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;JMP has a collection of tools, which we will illustrate later, that allows users to perform analyses on specific subsets of the data. In many cases, you will find that working from one master data table in this way allows you to perform all the desired analyses without needing to create and manage multiple data tables, as is required in Minitab.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;JMP Project File&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;JMP Project files are another file structure that can be helpful to work from. Project files provide a single interface to JMP, acting as a container for many different project elements. It can contain (or reference) data tables, analysis scripts, JMP journals, reports, as well as non-JMP elements such as documents, data files, etc.&lt;/P&gt;
&lt;P&gt;Figure 3A is an example of a JMP Project file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this example, two panes are displayed on the left.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Contents:&lt;/STRONG&gt; List of all the files contained within the Project file such as folders, JMP data tables, and other non-JMP files (e.g., .xls, .csv, .doc. .ppt, .jpg, etc.). Here we have a folder, two JMP data tables, a JMP Journal, two excel files, and one word document.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Workspace:&lt;/STRONG&gt; Hierarchical list of the project contents that are currently being displayed. Here we have the JMP Journal and two JMP data tables along with an analysis report associated with a script in one of the JMP data tables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A tabbed collection of windows, one for each of the elements listed in the Workspace pane, is organized to the right. Here we have one of the data tables as the active window. You should recognize this as the JMP data table shown in Figure 2.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_2-1626719432857.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34265iD9A27352BB645AC2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_2-1626719432857.png" alt="Figure 3A JMP: Project File" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 3A JMP: Project File&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Each of the panes, including any of the tabs, can be moved to reconfigure the display to a desired view.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Figure 3B shows an example of the Project with the tabs having been arranged so that the two JMP data tables and Journal are placed directly to the right of the Workspace and Content panes with one of them selected to be displayed. On the right side are two analysis reports organized with one placed above the other.&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="Larry_LaRusso_3-1626719517299.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34266i7F79634411A673E4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_3-1626719517299.png" alt="Figure 3B JMP: Project File" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 3B JMP: Project File&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This tabbed configurable environment provides the user with the flexibility to reveal, hide, and display the contents of the project file in whatever way is best for the situation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Project files can be shared and all of the contents, including non-JMP files, will be included.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Visit jmp.com, &lt;A href="https://www.jmp.com/support/help/en/16.0/" target="_self"&gt;jmp.com/help&lt;/A&gt; or &lt;A href="https://community.jmp.com/" target="_self"&gt;community.jmp.com&lt;/A&gt; and search for “Projects” to see a list of resources, including recordings, tutorials, documentation and user discussions, to learn more about the functionality of JMP Projects.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Importing Data&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Often, data is produced within other applications, rather than inside statistical software. For example, an engineer may record data from an experiment in an Excel spreadsheet or a central database containing a large collection of customer behavior data from which certain subsets of that data need to be retrieved and analyzed. Both Minitab and JMP can open many different file types, including .csv, .txt, .xls, among others, and each is able to query a database via ODBC (Open Database Connectivity).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP is able to open other file types that Minitab cannot, such as SAS, R, MATLAB, .html, and .pdf files. JMP can also open tables that are built into web pages using the Internet Open functionality.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JMP also has added advantage of being able to import multiple files combining them into one data table. Figure 4 shows a folder containing a collection of different text files related to a survey along with the content of one of those files.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_0-1626719944743.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34267i66AFCF288E5AF1C4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_0-1626719944743.png" alt="Figure 4 JMP: Importing Multiple Files" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 4 JMP: Importing Multiple Files&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Selecting File &amp;gt; Open Multiple, will launch an import wizard that will guide you through the process of importing all of the data across these many files into one JMP data table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To import data you currently have in a Minitab file into JMP, it is best to first save the Minitab worksheet in a format such as .xls, .csv, or .txt. Then simply choose File &amp;gt; Open in JMP to import that data into a JMP data table. An import wizard will be launched to specify how the data is to be imported (e.g., choose the variables and rows to import, include/exclude variable names, etc.).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Cleaning and Formatting Data&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both Minitab and JMP have a collection of tools that allow the user to clean and format data to prepare it for analysis.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most of Minitab’s tools to format, clean and prepare data are found under the Data and Calc menus. Figure 5 shows the list of tools under those menus.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_1-1626720135341.png" style="width: 255px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34268i8856FFDA601327E4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_1-1626720135341.png" alt="Figure 5 Minitab: Data and Calc menus" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 5 Minitab: Data and Calc menus&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Once a tool is selected, a dialog box will appear, allowing variables to be placed into different roles to describe the specific set of operations to be performed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Figure 6 is an example of the dialog box for Minitab’s Sort Tool. Here we have chosen to sort all of the data in alphabetical ascending order based on the GeoLocation variable saving the data into the same worksheet (i.e., “In the original columns”).&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="Larry_LaRusso_2-1626720212459.png" style="width: 224px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34269i02F2A10F582B990C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_2-1626720212459.png" alt="Figure 6 Minitab: Sort Tool" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 6 Minitab: Sort Tool&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most of JMP’s tools to format, clean and prepare data for analysis are found under three different menus: Tables, Rows and Cols (shown in Figure 7).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_3-1626720290535.png" style="width: 380px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34270i4A489D64EDA74B9E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_3-1626720290535.png" alt="Figure 7 JMP: Tables, Rows and Cols Menus" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 7 JMP: Tables, Rows and Cols Menus&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 8 is an example of JMP’s Sort Tool. Though the dialog box has a difference appearance and uses different names for operations, the general procedure is quite similar.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_4-1626720334263.png" style="width: 248px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34271i5EB5D1F8D0F10334/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_4-1626720334263.png" alt="Figure 8 JMP: Sort Tool" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 8 JMP: Sort Tool&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;All of the data manipulation operations you’ve performed in Minitab will also be able to be performed in JMP. It will just take a little bit of practice to learn how the tools are accessed and how the desired operation is specified in the dialog box.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One JMP tool in the Tables menu (that is not available in Minitab) that can be quite useful in an initial examination of a data set is the Missing Data Pattern platform. This following example uses a small data set, but you’ll find this tool to be most valuable when examining large data sets. Figure 9 displays a data table with five variables, 25 rows and 18 missing values.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_0-1626720430626.png" style="width: 205px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34272i63185F8F58BE4EBA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_0-1626720430626.png" alt="Figure 9 JMP: Data Table with Missing Values" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 9 JMP: Data Table with Missing Values&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Missing Data Pattern tool under the Tables menu will summarize the “missingness” in the data via a new JMP data table. Figure 10 shows the resulting table along with the accompanying Cell Plot.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_1-1626720521514.png" style="width: 368px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34273iCAC7DE71744C9F7F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_1-1626720521514.png" alt="Figure 10 JMP: Missing Data Pattern" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 10 JMP: Missing Data Pattern&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_2-1626720534339.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34274i3913647BA743E8A4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_2-1626720534339.png" alt="Larry_LaRusso_2-1626720534339.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This new data table describes the Missing Data Pattern in the data. In particular, there are 15 rows with no missing values; one row has a missing value in variable Y5; four rows have one missing value in variable Y3; two rows have a missing value across 3 variables - Y3, Y4, and Y5 and so on. Highlighting a row in this Missing Data Pattern table will highlight all of those rows with that missing data pattern in the original data table. This allows you to hide and/or exclude that data from future analyses, or generate row states such as assigning unique symbols to be displayed in graphs. There is a related platform called Explore Missing Values under the in Analyze&amp;gt;Screening menu that offers additional tools for working with missing data, including statistical techniques to find commonalities between the missing pattern in the variables and rows as well the ability to impute the missing data replacing them with estimated values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Creating New Variables&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both Minitab and JMP allow the creation of new variables. These new variables can be, for example, simple arithmetic operations using other variables in the data table or a logic conditional argument.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;New variables are created in Minitab through the Calculator Tool under the Calc menu. Figure 11 illustrates how a new text variable was created based upon the value of the variable ‘Moisture Content’ with the results saved in Column C9.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_3-1626720683682.png" style="width: 239px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34275i100C8D7CF84C3EDA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_3-1626720683682.png" alt="Figure 11 Minitab: Calculator" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 11 Minitab: Calculator&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To create a new variable in JMP, access the formula tool for that new column by highlighting a column and choosing Cols&amp;gt;Formula. It can also be accessed by right-clicking on a column and selecting “formula” from the menu. In Figure 12, the formula tool was used to create the same text variable based upon a conditional argument. Note that there is a Preview function available that allows you to see the results of applying the formula as it’s being created.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_4-1626720775364.png" style="width: 366px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34276iFE50CBE32B8899CC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_4-1626720775364.png" alt="Figure 12 JMP: Formula" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 12 JMP: Formula&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;JMP’s Formula Tool is also where new variables can be created using a patterned sequence, a random sample from other columns or a specified probability distribution. In Minitab, other tools would need to be accessed to generate those types of operations.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Data Filter and Row States&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When performing an analysis in Minitab, a worksheet containing the data for that analysis is made active. If an analysis is to be performed on a subset of a parent data set, most likely a new worksheet will need to be created that contains only that subset of data. If outliers are identified and need to be excluded from future analyses, another new worksheet would need to be created without those data points. As a result, it is typical that one has to manage many worksheets within a project file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Multiple data tables can also be set up in a JMP Project file as was shown earlier. Data filters and row state operations can instead be used to define the specific data to base a particular analysis on resulting in many users opting to do all their analyses from one data table. These data filters and row states can be saved and accessed at any time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ll illustrate these analyses using the &lt;EM&gt;Grain Yield&lt;/EM&gt; data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Figure 13A shows the data table with GeoLocations and C selected. This was done by clicking on the small histogram icon in the upper left of the data table to turn on the Header Graph, and then simply selecting those GeoLocations. The Header Graph is a convenient tool that displays high level summary of a variable at the top of each column (e.g., histograms and min/max values for continuous variables, a bar chart for categorial variables). Figure 13B shows the the result when the tool Rows&amp;gt;Hide and Exclude is selected. Any analysis performed with this Row State active will not include GeoLocations A and C in the calculations nor appear in any graphical display. Other options include using selected data in calcuations but not displayed in a graph (Hide only) or display data in a graph but not used in calculations (Exclude only). This row state can be turned off by again selecting Rows&amp;gt;Hide and Exclude or Rows&amp;gt;Clear Row States.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_5-1626720967693.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34277i3C1338B0CDBDEA70/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_5-1626720967693.png" alt="Figure 13A JMP: Rows selected" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 13A JMP: Rows selected&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_6-1626721026038.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34278i4A647E5B69D10485/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_6-1626721026038.png" alt="Figure 13B JMP: Hide/Exclude" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 13B JMP: Hide/Exclude&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Global Data Filter is another useful tool for defining a subset of data. This tool is accessed by choosing Rows&amp;gt;Data Filer. Figure 14 shows the data filter open with the GeoLocations B and D selected. Here we turned on the check boxes Show and Include and then selected the GeoLocations we want to use. The data filter can include many variables, and both categorical and continuous variables can be used. This data filter can be saved to the data table, row states can be cleared and then accessed again at any time.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_7-1626721092256.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34279i70B650169C2385C7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_7-1626721092256.png" alt="Figure 14 JMP: Global Data Filter" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 14 JMP: Global Data Filter&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Other characteristics can be set up as row states. For example, you may want all the graphs produced in an analysis to use different colors for the different GeoLocations. This preference can be set up through Rows&amp;gt;Color or Mark by Column. Figure 15 is the resulting data table with the colors shown as row states. Any graphical display created with this row state active will use this color coding. This row can also be saved and accessed at any time.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_8-1626721283322.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34280iC17E7FDC391F6056/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_8-1626721283322.png" alt="Figure 15 JMP: Color Row State" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 15 JMP: Color Row State&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Local Data Filter in JMP provides another means to work with a subset of the data. This approach provides an interactive tool in which to see analysis results change instantly as different subsets of the data are chosen. The Local Data Filter is accessed under the top red triangle in an analysis report window. Figure 16 shows the results of a Regression Analysis using all the data (left), then that same output changing based upon selecting only GeoLocation A from the Local Data Filter. Note that the data points are using the color row state we had set up in Figure 15.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_9-1626721402109.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34281i5AE6EE98A261363A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_9-1626721402109.png" alt="Figure 16 JMP: Local Data Filter" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 16 JMP: Local Data Filter&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Descriptive Statistics&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both Minitab and JMP are able to calculate summary statistics that describing features in the data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ll illustrate some of these analyses using the &lt;EM&gt;Grain Yield &lt;/EM&gt;data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There are a few ways to generate descriptive statistics in Minitab (e.g, Display Descriptive Statistics, Store Descriptive Statistics and Graphical Summary under the Stat Menu). Descriptive statistics can also be generated using the Tables tool, which we’ll illustrate here. Figure 17 show the steps for calculating the sample mean and sample standard deviation for for Yield for each GeoLocation/Year combination and the resulting table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_10-1626721663939.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34282iED188062C133759F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_10-1626721663939.png" alt="Figure 17 Minitab: Descriptive statistics via Table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 17 Minitab: Descriptive statistics via Table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If different summary statistics are desired, or if different categorical and/or associated variables are to be used, the Tables&amp;gt;Descriptive Statistics tool is relaunched, the dialog box updated, and the analysis rerun.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP can also calculate descriptive statistics in a variety of ways, including the Distribution platform, Graph Builder, Column Viewer, and through column formulas. Similar to what was shown using Minitab, we illustrate how to calculate summary statistics through the Analyze&amp;gt;Tabulate platform.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Launching the Tabulate platform opens the window shown in Figure 18A. Variables are simply placed into different roles to create the table. Those variables can be moved to change the way the table is displayed. Variables can be removed, added, new statistics calculated, among other capabilities with the table updating the instant those changes are made. Think of it as a blank canvas that you create the desired table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_11-1626721797128.png" style="width: 260px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34283i8C4C0F9C2DDE3C7E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_11-1626721797128.png" alt="Figure 18A JMP: Descriptive Statistics via Tabulate" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 18A JMP: Descriptive Statistics via Tabulate&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 18B shows thes the steps to create the table displaying the mean and standard deviation of Yield for the 6 different combinations of Year and GeoLocation.&lt;/P&gt;
&lt;P&gt;We begin by placing Yield into the Resulting Cells Drop zone. The default is to display the sum (the default statistic) of that variable as a single cell (upper-left image in Figure 18B). Note: You can choose to also display the mean and standard deviation by default via preferences (JMP &amp;gt; Preferences &amp;gt; Platforms &amp;gt; Tabulate).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case we will replace the sum with the mean and standard deviation by dragging those two statistics from the list on top of the cell where the word sum is shown. The table will updated, replacing the sum statistic with the mean and standard deviation (upper-right image in Figure 18B).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The categorical variables (Year and GeoLocation) are simply dropped into the desired locations. Year is placed as the rows (lower-left image in Figure 18B) and GeoLocation as the columns (lower-right image).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_12-1626721872208.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34284i06D1D05E0500FC99/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_12-1626721872208.png" alt="Figure 18B JMP: Descriptive Statistics via Tabulate" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 18B JMP: Descriptive Statistics via Tabulate&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This table can be easily changed to create different views by moving variables into different drop zones. Figure 18C shows the resulting table when the variable GeoLocation is moved to be another row variable inside of Year.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_13-1626721972255.png" style="width: 313px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34285i942718BCBCCAA7A4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_13-1626721972255.png" alt="Figure 18C JMP: Descriptive Statistics via Tabulate" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 18C JMP: Descriptive Statistics via Tabulate&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This table of summary statistics can be made into a JMP data table for further analysis by selecting Make into Data Table under the red triangle. Figure 18D shows the resulting data table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_14-1626722018633.png" style="width: 350px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34286i73ADC125EF6BA56C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_14-1626722018633.png" alt="Figure 18D JMP: Descriptive statistics via Tabulate – Creating a Data Table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 18D JMP: Descriptive statistics via Tabulate – Creating a Data Table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Graphing&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Minitab and JMP approach graphing data very differently; it is one of the more significant differences between the two software that a new JMP user will experience.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ll illustrate some of these analyses using the &lt;EM&gt;Grain Yield &lt;/EM&gt;data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To create a graph in Minitab, one must first decide which graph is needed and then select it from the Graph menu. Figure 19 shows a list of the graphs available under that menu.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_15-1626722139743.png" style="width: 121px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34287i86F62A492890BB89/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_15-1626722139743.png" alt="Figure 19 Minitab: Graph menu" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 19 Minitab: Graph menu&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We’ll illustrate the process of creating a graph in Minitab by creating a scatterplot. When the scatterplot tool is launched, a screen appears (left image in Figure 20A). At that point, the user must pick one of the scatterplot options. In this example, Simple was chosen. A dialog box then appears to enter the variables to be plotted on the Y and X axes (right image in Figure 20A).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_16-1626722200746.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34288i1799E8BD84E331C6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_16-1626722200746.png" alt="Figure 20A Minitab: Scatterplot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 20A Minitab: Scatterplot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The buttons Scale, Labels, Data View, Multiple Graphs and Data Options provide additional options. Figure 20B shows the resulting graph if no additional options are chosen.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_17-1626722249150.png" style="width: 301px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34289i59DAC837B43F4A58/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_17-1626722249150.png" alt="Figure 20B Minitab: Scatterplot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 20B Minitab: Scatterplot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;A few elements of the graph can be edited (e.g., changing the color of the points) by launching the Edit Graph tool under the drop-down menu in the upper right.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To make the scatterplot shown in Figure 20C that has a separate regression line for each of the 4 GeoLocations would require creating an entirely new graph. This would be done by relaunching the Scatterplot tool and selecting the “With Regression and Groups” from the dialog box shown in Figure 20A.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_0-1626722359775.png" style="width: 296px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34290i0A57521ADC901875/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_0-1626722359775.png" alt="Figure 20C Minitab: Scatterplot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 20C Minitab: Scatterplot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To create an entirely different type of graph with the same data (e.g., comparative box plots, etc.), then the user would return to the Graph menu, launch that specific graphing tools and specify the appropriate options. Each iteration of exploring the data graphically typically requires this approach until the desired graph is produced.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP approaches creating graphs very differently than Minitab. Though there are tools to create graph across every analysis platform in JMP, we’ll illustrate creating visualizations via the powerful Graph Builder platform. This tool has been designed to match the typical way in which one would explore and analyze data in practice. Upon launching the Graph Builder platform (Graph &amp;gt; Graph Builder), the display starts with what can be thought of as a blank canvas and a graph palette (Figure 21A).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_1-1626722433799.png" style="width: 328px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34291i67FF56EC98B6AC2E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_1-1626722433799.png" alt="Figure 21A JMP: Graph Builder" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21A JMP: Graph Builder&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;A graph is created by placing variables into different roles and selecting the desired graphical display. For example, if the variable Moisture Content is dropped into the Y zone, JMP will begin by displaying a dot plot (Figure 21B).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_2-1626722485797.png" style="width: 333px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34292i40B2DC2B8AE843C5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_2-1626722485797.png" alt="Figure 21B JMP: Graph Builder – Dotplot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21B JMP: Graph Builder – Dotplot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If instead of a dot plot, a different graph is desired (e.g., box plot), simply select that option from the graph palette at the top and the graph instantly changes. Figure 21C shows a graph where both a dot plot and box plot were selected.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_3-1626722533740.png" style="width: 334px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34293iF0054EF7484E9D2D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_3-1626722533740.png" alt="Figure 21C JMP: Graph Builder – Dotplot and Boxplot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21C JMP: Graph Builder – Dotplot and Boxplot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If another continuous variable is dropped in the X zone, JMP will automatically change the graph to a scatterplot. Figure 21D shows an example of such a graph with a regression line included.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_4-1626722605895.png" style="width: 358px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34294i2DEE4B67D4F77BDF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_4-1626722605895.png" alt="Figure 21D JMP: Graph Builder – Scatterplot with regression line" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21D JMP: Graph Builder – Scatterplot with regression line&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;For each type of graph selected, tools and options are displayed on the left to alter or augment the graph even more. For example, the equation, 95% Confidence Interval and RSquared value was added to the graph.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Each one of these graphs created during this process can be saved to the data table if desired. Alternatively, the analyst can continue visually exploring the data. Figure 21E shows how the graph would change if the variable GeoLocation were dropped into the Wrap drop zone.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_5-1626722671317.png" style="width: 358px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34295i4D6F89AB6139F2DE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_5-1626722671317.png" alt="Figure 21E JMP: Graph Builder – Individual scatterplots with regression lines" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21E JMP: Graph Builder – Individual scatterplots with regression lines&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If GeoLocation were moved from the Wrap drop zone to the Overlay drop zone, and the option to display the equation and RSquared were turned off, the graph would change to that shown in Figure 21F.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_6-1626722739629.png" style="width: 358px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34296i49A6BEC8C3A793D7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_6-1626722739629.png" alt="Figure 21F JMP: Graph Builder – Scatterplot with overlaid regression lines" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 21F JMP: Graph Builder – Scatterplot with overlaid regression lines&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Floating the cursor over one of the axes, the pointer changes to a hand symbol, allowing a simple way to move and/or rescale the axes. Double-clicking on an axis brings up a set of tools to alter the graph even further such as changing from a linear scale to a log scale for example.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Right-clicking on the graph brings up a menu of additional tools to alter the display, such as changing the colors and symbols used.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This process illustrates the fundamental difference in how each software approaches graphical analyses. In Minitab, graph types are chosen and options selected without seeing what those choices will do. In JMP, you build graphs interactively seeing how each choice would change and enhance the graph. This results in a much more efficient and richer exploration of data allowing you to quickly generate myriad graphs to uncover features in the data and to create the visualizations that best communicate your findings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Two very powerful tools that can greatly enhance visually exploring data is JMP’s Local Data Filter and Column Switcher. Illustrated with the &lt;EM&gt;Advertising Experiment&lt;/EM&gt; data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With JMP’s dynamically linked data, new variables can be switched and/or the data filtered, and the graph will instantly update to reflect those changes. Figure 22 shows a comparative dot plot for the variable WS1with 95% confidence intervals for four different categories of the variable Ad Style. The Column Switcher, seen in the upper-left, was set up so that the analyst can simply select (or play through) 9 other possible outcome variables to display on the Y axis. The Local Data Filter was also set up using the explanatory factors Promotion (three levels) and Time Period (10 levels). The analyst can subset the data by these variables. For each selection, the graph will instantly update to display the selected variable for the Y axis and to include only the data as chosen with the Local Data Filter. In Minitab, a new graph would have to be created separately for each possible combination of these variables.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_7-1626722842473.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34297i1F51D6155D7C7792/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_7-1626722842473.png" alt="Figure 22 JMP: Column Switcher and Local Data Filter" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 22 JMP: Column Switcher and Local Data Filter&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;JMP contains many graphical tools not currently available in Minitab. These greatly expand your ability to explore and present data. Figure 23A-J show some of these visualizations.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_9-1626722984604.png" style="width: 169px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34299iF6F65A7AD87CE5C7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_9-1626722984604.png" alt="Figure 23A JMP: Hover Graphlet" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23A JMP: Hover Graphlet&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_10-1626723011981.png" style="width: 170px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34300i2F766637853DD3FE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_10-1626723011981.png" alt="Figure 23B JMP: Image Labels" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23B JMP: Image Labels&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_11-1626723039315.png" style="width: 170px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34301i6C6FC2B4BC2C6B4C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_11-1626723039315.png" alt="Figure 23C JMP: Geographic Maps" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23C JMP: Geographic Maps&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_12-1626723068720.png" style="width: 169px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34302iF1901729FB8B80A1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_12-1626723068720.png" alt="Figure 23D JMP: Motion Bubble Plot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23D JMP: Motion Bubble Plot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_13-1626723093412.png" style="width: 170px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34303iCFD5C8CFD715F4D9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_13-1626723093412.png" alt="Figure 23E JMP: Correlation Color Map" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23E JMP: Correlation Color Map&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_14-1626723119387.png" style="width: 170px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34304i7BC92F4F9717D2C4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_14-1626723119387.png" alt="Figure 23F JMP: Shape Based Heat Maps" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23F JMP: Shape Based Heat Maps&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_17-1626723255324.png" style="width: 169px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34307iFD691D0B4B432AD0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_17-1626723255324.png" alt="Figure 23G JMP: Density Contour Plot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23G JMP: Density Contour Plot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_18-1626723290358.png" style="width: 358px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34308i680F9F00D0FAEC38/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_18-1626723290358.png" alt="Figure 23H JMP: Word Cloud" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23H JMP: Word Cloud&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_19-1626723323865.png" style="width: 169px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34309iE7333DDBF32C2804/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_19-1626723323865.png" alt="Figure 23I JMP: Comparative Histograms" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23I JMP: Comparative Histograms&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_20-1626723354315.png" style="width: 358px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34310iB9D9826CDD45F725/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_20-1626723354315.png" alt="Figure 23J JMP: Scaled Parallel Plots" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23J JMP: Scaled Parallel Plots&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_21-1626723378025.png" style="width: 266px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34311iAFF12796E972F356/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_21-1626723378025.png" alt="Figure 23K JMP: Mosaic Plot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23K JMP: Mosaic Plot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_22-1626723399134.png" style="width: 267px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34312i61549D3202058DEB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_22-1626723399134.png" alt="Figure 23L JMP: Nonlinear Functional Fit" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 23L JMP: Nonlinear Functional Fit&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Univariate Analyses&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Minitab and JMP approach running statistical analyses quite differently. We’ll step through the analysis of a single continuous variable for each software to demonstrate these differences.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ll illustrate these analyses using the &lt;EM&gt;Yogurt Production&lt;/EM&gt; data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Minitab, the Graphical Summary tool is a useful way to analyze a single variable. To run this analysis, select this tool in the Stat menu. A dialog box appears to select the variable upon which to perform the analysis. Figure 24A show the steps to run the analysis and 24B displays the resulting output. The normal distribution curve that is shown on the graph is the only distribution that can be displayed in this output. Using other probability distributions would require a different tool in Minitab.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_23-1626723548950.png" style="width: 248px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34313i82C1F3FFFBA6509D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_23-1626723548950.png" alt="Figure 24A Minitab: Graphical Summary" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 24A Minitab: Graphical Summary&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_24-1626723579789.png" style="width: 347px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34314iFD342F12B326FC5C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_24-1626723579789.png" alt="Figure 24B Minitab: Graphical Summary" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 24B Minitab: Graphical Summary&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If different statistics other than those displayed were desired, a different tool would need to be launched (Stat &amp;gt; Basic Statistics &amp;gt; Display Descriptive Statistics) and those options selected. Steps and output now shown.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Graphical Summary displays the results of the Anderson-Darling normality test. If you wanted to examine a probability plot and/or an empirical Cumulative Distribution Function graph to accompany the test, it would need to be done using two different additional tools (Stat&amp;gt;Basic Stat&amp;gt;Normality Test and Graph&amp;gt;Empirical CDF). The procedure is similar to running any other analysis. A dialog box appears upon launching the tool for the user to specify the variable to run the analysis on and to select options. Figure 25A shows the steps to run the normality test analysis and 25B shows the resulting output.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_25-1626723647008.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34315i55C306B1BC07FA72/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_25-1626723647008.png" alt="Figure 25A Minitab: Normality test" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 25A Minitab: Normality test&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_26-1626723678715.png" style="width: 224px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34316i4BD50E30372F4DD7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_26-1626723678715.png" alt="Figure 25B Minitab: Normality test" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 25B Minitab: Normality test&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To create the CDF plot, a different tool (Graph&amp;gt;Empirical CDF) would be launched and the analysis run (steps and output now shown).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If, for example, the normal distribution was not a good model to use for a variable, other distributions may need to be evaluated. This evaluation is performed in a different tool (Stat&amp;gt;Quality Tools&amp;gt;Individual Distribution Identification) (steps and output not shown).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let’s say the next step in the analysis is to perform a hypothesis test for the population mean. To do so would require accessing yet another tool (Stat &amp;gt; Basic Stat &amp;gt; 1-sample t) (steps and output not shown). To perform a hypothesis test regarding the variance, this same procedure of using a new tool (Stat &amp;gt; Basic Stat &amp;gt; 1 variance)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Other analyses common to analyzing a single continuous variable are: Equivalence Test, Tolerance Interval, Prediction Interval, Capability Analysis, among others. Each would require a different tool in Minitab and each producing a separate output. Current, Minitab does not have the capability to produce a prediction interval so this would actually require manually creating a formula.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP approaches univariate analyses very differently and is more aligned to the natural work flow of exploring and analyzing data. JMP has a single platform (Analyze &amp;gt; Distribution) that can perform all the analyses mentioned in the previous section. The platform is accessed by selecting it from a menu and completing a dialog box, as demonstrated in Figure 26A. Figure 26B displays the initial output.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_27-1626723804379.png" style="width: 287px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34317i53ACA870F3BE8C98/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_27-1626723804379.png" alt="Figure 26A JMP: Distribution" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 26A JMP: Distribution&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_28-1626723833882.png" style="width: 344px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34318i8F52C45550CED731/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_28-1626723833882.png" alt="Figure 26B JMP: Distribution" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 26B JMP: Distribution&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The initial output provides both a graphical and numerical display of the data, including a histogram, box plot, summary statistics and a confidence interval for the mean. Clicking on the red triangle at the top of the summary statistics table provides access to a set of tools to change the statistics that are displayed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All the analyses mentioned among many others can be conducted from within this one report window. These are all accessed via the red triangle next to the variable name. These contextual menus provide you with a set of analyses that would be next to consider in your analysis workflow. Figure 27 shows that menu along with the Continuous Fit&amp;gt;Normal analysis selected.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_29-1626723904662.png" style="width: 338px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34320i0E08091124702506/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_29-1626723904662.png" alt="Figure 27 JMP: Distribution" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 27 JMP: Distribution&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 28A through 28K show results from the Continuous Fit and all the other univariate analyses performed on these data with each new set of output added to the one report window allowing for easy comparison.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_30-1626723976295.png" style="width: 204px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34321iF16F45CE6C0DBF27/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_30-1626723976295.png" alt="Figure 28A JMP: Quantile Plot and Distribution Fit" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28A JMP: Quantile Plot and Distribution Fit&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_31-1626724007200.png" style="width: 236px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34322iE608B74D51C41BBC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_31-1626724007200.png" alt="Figure 28B JMP: Goodness of Fit" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28B JMP: Goodness of Fit&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_32-1626724034552.png" style="width: 185px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34323i1645936008E620C4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_32-1626724034552.png" alt="Figure 28C JMP: CDF Plot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28C JMP: CDF Plot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_33-1626724059937.png" style="width: 185px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34324i47E560CFA3D6E4C2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_33-1626724059937.png" alt="Figure 28D JMP: Interactive Distribution Profiler" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28D JMP: Interactive Distribution Profiler&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_34-1626724087048.png" style="width: 177px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34325i92F6EDF5538A6F88/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_34-1626724087048.png" alt="Figure 28E JMP: Interactive Quantile Profiler" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28E JMP: Interactive Quantile Profiler&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_35-1626724110995.png" style="width: 150px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34326i4613685D80E8A6ED/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_35-1626724110995.png" alt="Figure 28F JMP: Test Mean" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28F JMP: Test Mean&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_36-1626724136173.png" style="width: 155px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34327iC4DA0F4F0130C056/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_36-1626724136173.png" alt="Figure 28G JMP: Test Standard Deviation" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28G JMP: Test Standard Deviation&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_37-1626724162284.png" style="width: 224px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34328i01D3A6988F3A0618/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_37-1626724162284.png" alt="Figure 28H JMP: Prediction Interval" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28H JMP: Prediction Interval&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_38-1626724183253.png" style="width: 186px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34329i83B0CF915E115BA2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_38-1626724183253.png" alt="Figure 28I JMP: Tolerance Interval" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28I JMP: Tolerance Interval&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_39-1626724206206.png" style="width: 319px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34330i48F7DF8EFBA781D7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_39-1626724206206.png" alt="Figure 28J JMP: Equivalence Test" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28J JMP: Equivalence Test&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_40-1626724245402.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34331i89B9E9596AFC53C8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_40-1626724245402.png" alt="Figure 28K JMP: Capability Analysis" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 28K JMP: Capability Analysis&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Additional interactive tools are available bringing an extra level of analysis capabilities via “what-if” scenarios. Figure 29A – 29C show three of these (p-value animation, power animation, and capability animation). In addition to helping better understand the process being studied, these interactive tools provide a great way to understand or teach statistical concepts.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_41-1626724312053.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34332i7D00EF468EDE61FC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_41-1626724312053.png" alt="Figure 29A JMP: p-value Animation" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 29A JMP: p-value Animation&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_42-1626724319685.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34333iEFD6CB407C9C56A3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_42-1626724319685.png" alt="Figure 29B JMP: Power Animation" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 29B JMP: Power Animation&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_43-1626724335753.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34334i92EEF75BAA96A233/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_43-1626724335753.png" alt="Figure 29C JMP: Interactive Capability Plot" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 29C JMP: Interactive Capability Plot&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Local Data Filter and Column Switcher is also available within this interactive report. Figure 30 shows the Column Switcher set up for the 7 production lines and the Local Data Filter set up for Batch Number. You can now choose the production line and the batches to include in the analysis and all of the numerical and graphical output is instantly updated. With Minitab, each outcome variable and/or subset of the data one wishes to analyze would require rerunning each and every analysis across all the various tools creating a substantial amount of reports to manage.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_44-1626724422867.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34335i50C37C205D8AEDAC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_44-1626724422867.png" alt="Figure 30 JMP: Column Switcher and Local Data Filter" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 30 JMP: Column Switcher and Local Data Filter&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Saving and Sharing Results&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Each time an analysis is performed in Minitab, the output will be placed in the Navigator pane as a separate element. Saving the Project File will save all those output elements along with all the worksheets into the Project File. Individual output can also be saved as an image file (e.g., .png, .jpg) and placed into other applications.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There are many ways to save your analysis results in JMP. These include saving as an interactive .html file, to a JMP Journal file, as an image file placed into other applications, and even published to a private secure dashboard via. JMP Live providing the ability to view and interact with reports outside of JMP. We will illustrate saving reports as a script to the data table as that is the most common way you will save your analysis work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From within a report, choose Save Script &amp;gt; To Data Table under the Red Triangle in the top left of the report window (Figure 31A).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_0-1626792906435.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34356i7024EEF2A8E1EF90/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_0-1626792906435.png" alt="Figure 31A JMP: Saving a script to data table" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 31A JMP: Saving a script to data table&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The saved scripts will appear in the top-left pane of the data file window (Figure 31B).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_1-1626792975639.png" style="width: 295px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34357iDEFE96D70387F115/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_1-1626792975639.png" alt="Figure 31B JMP: Saved Scripts" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 31B JMP: Saved Scripts&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Clicking the green triangle will rerun the saved script to perform all the analyses associated with that report. This allows you to rerun a full set of analyses on a modified data set (e.g., removing/adding data, recoding values, subsetting via the global data filter, new row states). Scripts can be reorded in the pane or grouped together to aid in management of your analysis work.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;One-Factor Analysis&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both Minitab and JMP have tools to perform one-factor analyses (e.g., simple linear &lt;BR /&gt;regression, simple logistic regression, one-way ANOVA, and Chi-square test for &lt;BR /&gt;comparing proportions). Similar to univariate analyses, they approach how the &lt;BR /&gt;analyses are performed very differently.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;We’ll illustrate some of these analyses using the Tablet Production data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When performing a one-factor analysis in Minitab, the appropriate tool is launched (Stat&amp;gt;Regression&amp;gt;Fitted Line Plot, for example). The appropriate variables are specified within the dialog box and other options chosen. Output is generated and placed in the output window. Consider upon examining the the output of a simple linear regression for example, it is desired to add a confidence interval to the graph, or to examine residual plots, or perhaps it’s desired to change the scale of one of the variables from linear to log or perhaps use a different response or predictor variable all together. The fitted line plot tool would need to be relaunched, the options changed, and then a new set of output created. Each set of output in Minitab is primarily static, allowing only a few alterations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Different one-factor analyses (e.g., logistic regression, ANOVA, chi-square test) require the use of other tools.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In JMP, all one-factor analyses are performed from one platform, Analyze&amp;gt;Fit Y by X.&amp;nbsp; Figure 32A shows the dialog box for this platform. When the Y, Response Variable and X, Factor is chosen, JMP automatically determines the correct analysis.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To illustrate how JMP can perform multiple analyses simultaneously, we have chosen two variables for the Y, Response (Dissolution, a continuous variable; Lot Acceptance, a binary variable) and two variables for the Factor (API Particle Size, a categorical variable with three levels; Mill Time, a continuous variable).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JMP will create four different analyses:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;One-way ANOVA for Dissolution vs API Particle Size.&lt;/LI&gt;
&lt;LI&gt;Simple linear regression for Dissolution vs Mill Time.&lt;/LI&gt;
&lt;LI&gt;Contingency table analysis for Lot Acceptance vs. API Particle Size.&lt;/LI&gt;
&lt;LI&gt;Simple logistic regression for Lot Acceptance vs. Mill Time&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_2-1626793191169.png" style="width: 254px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34358i14EB81132956ECFB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_2-1626793191169.png" alt="Figure 32A JMP: Fit Y by X" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 32A JMP: Fit Y by X&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;As in many other platforms in JMP, Fit Y by X has the capability for the analysis to include a categorical By Variable, running a separate analysis for each level of that variable. The models can also be fit assigning weighted values for the observations. The platform can also be used on data that is in summarized Frequency/Table format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The initial output for these four analyses is shown in Figure 32B. Note: Row states were set up so that lots meeting the specification of dissolution ≥70 are color coded green and those &amp;lt; 70 are color coded red.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next to each analysis is a red triangle hot spot that reveals a contextual menu with the tools JMP recommends as possible next steps in the overall analysis. As there are four different statistical analysis techniques performed, there are four different sets of tools under each menu. Figure 33 shows each of these contextual menus. You are now ready to choose the next step in the analysis workflow. Each subsequent analysis produces another set of output added to the report with a new red triangle hot spot providing additional options.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_3-1626793251621.png" style="width: 392px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34359i8D23EB4DD26E089A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_3-1626793251621.png" alt="Figure 32B JMP: Fit Y by X Report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 32B JMP: Fit Y by X Report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_4-1626793284434.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34360iFC70DF57931AEAD3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_4-1626793284434.png" alt="Figure 33 JMP: Fit Y by X Contextual Menus" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 33 JMP: Fit Y by X Contextual Menus&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To illustrate how an analysis might unfold in the Fit Y by X platform, the Fit Line option under the red triangle for the Bivariate Fit of Dissolution by Mill Time was selected. Figure 34 shows the output that now gets added to the report based on that selection.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_5-1626793330775.png" style="width: 281px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34361iAB57FFA068EBB166/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_5-1626793330775.png" alt="Figure 34 JMP: Linear Regression Fit" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 34 JMP: Linear Regression Fit&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice that a new red triangle hot spot has appeared next to the chosen linear fit. Figure 35 shows the options available under that contextual menu. Here you see the option to add confidence or prediction intervals to the graph, create residual plots, save values to the data table, among others.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_6-1626793407181.png" style="width: 115px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34362i2150C71D70E516D2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_6-1626793407181.png" alt="Figure 35 JMP: Linear Fit Contextual Menus" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 35 JMP: Linear Fit Contextual Menus&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;As shown in the Bivariate Fit menu in Figure 33, other models can be fit and compared. For example: polynomials, splines, orthogonal, non-parametric densities, and robust regression. Transformation are available under Fit special. Figure 36 shows those options.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_7-1626793445946.png" style="width: 226px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34363iB0982CD02E2995FA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_7-1626793445946.png" alt="Figure 36 JMP: Transformation" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 36 JMP: Transformation&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Each model fit being considered can be added or removed from the report as you explore and compare different model choices finding the one best for the data. Figure 37 shows the display with a quadratic fit and non-parametric density added.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_8-1626793485659.png" style="width: 195px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34364i9003F35735E72B4A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_8-1626793485659.png" alt="Figure 37 JMP: Comparing Models" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 37 JMP: Comparing Models&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Local Data Filter and Column Switcher can be accessed if you wish to change the variables used or select a subset of the data to base the analyses on. All the output will instantly update to reflect those choices. It’s not necessary to subset the data into a new data table and rerun the analysis as it is with Minitab.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As this example again illustrates, analyzing data in JMP is much more than simply performing a particular statistical technique on a dataset and observing a static collection of output. The platforms are designed to follow a natural analysis workflow aligned with how you would analyze data in practice. You explore, interact with the data and results, change variables, filter the data, try different model options, with each result leading to the next logical step in a sequence of analysis steps.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Multivariable Statistical Models&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Building statistical models that involve many variables is probably the most powerful and frequently needed type of analysis. There is usally four purposes for building these models:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;For testing specific hypotheses.&lt;BR /&gt;Example:&lt;EM&gt; Does Drug Treatment A reduce the recovery rate by at least 15% for males over 70 years of age as compared to a placebo? Is the effect the same for females?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Finding the few variables out of many that are most correlated with an outcome.&lt;BR /&gt;Example:&lt;EM&gt; What are the key socio-economic conditions most correlated with poor health outcomes for a community?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Quantitatively describing the relationships between variables.&lt;BR /&gt;Example&lt;EM&gt;: How much does viscosity of a solution decrease when the processing temperature increases by 5 &lt;SUP&gt;0&lt;/SUP&gt;C and the processing time increases by 10 minutes?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Create a method on which to predict an outcome.&lt;BR /&gt;Example: &lt;EM&gt;What is the likelihood a customer would be interested in learning about a new mortgage refinance program based upon characteristics of the customer and their current mortgage?&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The primary goal for a model may be just one of these, some or even all of them. The modeling technique chosen is often driven by which of these goals are most important.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Minitab&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Minitab v19 has three multivariable modeling techniques:&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generalized Linear Models (e.g., ANOVA, Linear Regression, Logistic Regression)&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Classification and Regression Trees&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Discriminant Analysis&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similar to performing a one-factor analysis, building a multivariable statistical model requires first choosing a modeling type appropriate for the situation (Stat&amp;gt;ANOVA&amp;gt;General Linear Model, for example). Within the dialog box, the user then specifies the variables to be included and any other relevant options.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The output is generated upon running the analysis and placed in the output window. In the process of building a statistical model, an analyst typically needs to fit many different models, with each including a different set of variables and model terms until a final model is determined. If it is decided to remove a variable or term from the model, the dialog box is relaunched, changes made, and the analysis is rerun. Each possible model considered must be run separately each producing a different set of output. As is most analysis results in Minitab, the numerical and graphical output is mostly static with just a few options to make changes. If one wishes to remove some observations from the data, for example, a new worksheet must be created and all of the models run again.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP and JMP Pro&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP and JMP Pro v16 have the following multivariable modeling techniques along with many variants within each.&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generalized Linear Models (e.g., ANOVA, Linear Regression, Logistic Regression)&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Partition (Decision Tree)&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Neural Network&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Discriminant Analysis&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bootstrap Forest *&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Boosted Trees *&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; K Nearest Neighbors *&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Naïve Bayes *&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Support Vector Machines *&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;* JMP Pro Only&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are other modeling techniques in JMP and JMP Pro beyond these. They are typically used for more specialized applications vs. for general modeling purposes and thus not listed above (e.g., Structural Equation Models in social sciences; Uplift, Choice, and MaxDiff for consumer research; Functional Data Explorer to model data that are functions, signals, or series).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Each of JMP’s modeling platforms also has many options regarding estimation methods and model fitting specifications. These provide the ability to generate even more models to consider and allow for greater capabilities in handling complex situations (e.g., Weighted Least Squares, Penalized Regression, Informative Missing, K-Fold Cross Validation to name a few).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ll illustrate the model building process in JMP Pro by fitting a Logistic Regression Model using the &lt;EM&gt;Mortgage Refinance Outreach&lt;/EM&gt; data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Logistic Regression Model:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In JMP, all linear models are created using the Fit Model platform under the Analyze menu. This one platform allows you to choose from a variety of model forms and model fitting techniques by selecting the desired option under the Personality drop down menu. Figure 38 shows the options available in JMP (left) and JMP Pro (right).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_9-1626794041711.png" style="width: 156px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34369iE25209CB127875FF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_9-1626794041711.png" alt="Figure 38 JMP and JMP Pro: Fit Model – Personalities" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 38 JMP and JMP Pro: Fit Model – Personalities&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_10-1626794049593.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34370iD79A33B8AAC8A005/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_10-1626794049593.png" alt="Larry_LaRusso_10-1626794049593.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 39A shows the dialog box for the Fit Model platform with the outcome variable and model terms added. Here we are fitting a main effects only model. The option to include interaction terms, quadratic effects, defining terms as: (crossed or nested) and (fixed or random) are available. We have also included a validation column. This column has random allocated the data into: 75% training and 25% validation. JMP will use only the training data to fit the model. The validation data will be used to evaluate the predictive ability of the fitted model. This approach can help avoid the undesired result of a model overfitting the data.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_11-1626794115116.png" style="width: 367px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34371i13CB687BC2A2D4F2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_11-1626794115116.png" alt="Figure 39A JMP Pro: Fit Mode" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 39A JMP Pro: Fit Mode&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Upon running the analysis, JMP will produce the nominal logistic regression report.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As in all of JMP’s analysis output, it’s best to think of a report as an interactive platform vs. static output. For example, model terms can be removed from the fitted model without the need to return to the Fit Model dialog box, making the changes, and rerunning the analysis. Figure 39B shows the Effect Summary table from the report with the variable &lt;EM&gt;Age&lt;/EM&gt; selected.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_12-1626794184458.png" style="width: 254px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34372iEFC1FC4387E33DE1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_12-1626794184458.png" alt="Figure 39B JMP Pro: Fit Model – Effect Summary for Nominal Logistic Regression" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 39B JMP Pro: Fit Model – Effect Summary for Nominal Logistic Regression&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 40 shows options that are available under the top red triangle.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_13-1626794225071.png" style="width: 153px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34373i4384BB4D2EF1CAB9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_13-1626794225071.png" alt="Figure 40 JMP Pro: Fit Model – Contextual Menu in Nominal Logistic Regression report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 40 JMP Pro: Fit Model – Contextual Menu in Nominal Logistic Regression report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 41A – 41D shows some of the common types of output that is examined when building a logistic regression model added to the report.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_14-1626794274234.png" style="width: 261px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34374i3669F22C5828004B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_14-1626794274234.png" alt="Figure 41A JMP Pro: Fit Model – Confusion Matrix in Nominal Logistic Regression report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 41A JMP Pro: Fit Model – Confusion Matrix in Nominal Logistic Regression report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_15-1626794281398.png" style="width: 316px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34375i97768084C85FF1A0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_15-1626794281398.png" alt="Figure 41B JMP Pro: Fit Model – ROC Curve in Nominal Logistic Regression report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 41B JMP Pro: Fit Model – ROC Curve in Nominal Logistic Regression report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_16-1626794288593.png" style="width: 316px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34376i2826CF6EC25860D5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_16-1626794288593.png" alt="Figure 41C JMP Pro: Fit Model – Lift Curve in Nominal Logistic Regression report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 41C JMP Pro: Fit Model – Lift Curve in Nominal Logistic Regression report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_17-1626794296568.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34377iC3D8BA6229629642/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_17-1626794296568.png" alt="Figure 41D JMP Pro: Fit Model – Profiler in Nominal Logistic Regression report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 41D JMP Pro: Fit Model – Profiler in Nominal Logistic Regression report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When the primary objective of a statistical model is for prediction only and it’s not necessary that the equation has a simple form with interpretable coefficents, other more complex models should be explored. JMP Pro has a very powerful platform called Model Screening that will fit many different models using various techniques presenting the result together in one report. Figure 42 shows the dialog box for that platform with the variables assigned to their roles and a set of model types selected.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_18-1626794406328.png" style="width: 385px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34378iF0FA77171574E620/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_18-1626794406328.png" alt="Figure 42 JMP Pro: Model Screening" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 42 JMP Pro: Model Screening&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Figure 43 shows some of the summary results produced in the report allowing for you to easily see and compare model performance. Notice that the Boosted Neural Network model has the lowest overall error rate on the validation data (16.0%) with the Nominal Logistic Regression at 19.2%.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Figure 44 displays the Decision Threshold tool which can be important to evaluate when predicting a categorical outcome as we are doing here. This tool provides an interactive means to evaluate how the error rates change for each model as you consider different probability threshold values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Each of the model platforms can be launched from this report providing access to the full set of tools available for each.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_19-1626794477570.png" style="width: 331px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34379iD2C072C681783CD6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_19-1626794477570.png" alt="Figure 43 JMP Pro: Model Screening – Model Summary" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 43 JMP Pro: Model Screening – Model Summary&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Larry_LaRusso_20-1626794516451.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34380i0F8023BED1CF4510/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Larry_LaRusso_20-1626794516451.png" alt="Figure 44 JMP Pro: Model Screening – Decision Threshold" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 44 JMP Pro: Model Screening – Decision Threshold&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;Conclusion&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both Minitab and JMP offer users an easy to use point-and-click environment to analyze data. Though they both contain many of the same statistical techniques, you access and use them in different ways. For example: most univariate analyses in JMP are performed within the Distribution platform where in Minitab, many different tools are used depending upon the specific data type being analyzed and the statistical technique to be chosen. In JMP, the output from each univariate analysis can be added to the same report window.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;As was illustrated in this transition guide, the data tables, graphs, and reports are dynamically linked in JMP providing you with a more interactive environment to explore and analyze data. This capability allows you to conduct an entire set of analyses on various subsets of data using only one data table and one set of analysis reports. In contrast, a typical analysis session in Minitab requires you to manage many different worksheets and a large collection of analysis output.&lt;BR /&gt;&lt;BR /&gt;JMP’s approach to visually exploring data via the Graph Builder is a very different paradigm than how Minitab approaches graphing data. As we demonstrated in the guide, JMP’s Graph Builder allows you to see how each option you are considering changes the visualization providing you with a dynamic way to discover features and patterns in the data.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Visit &lt;A href="https://www.jmp.com/en_us/home.html" target="_self"&gt;jmp.com&lt;/A&gt; to learn more about JMP’s capabilities and to find learning resources such as books, webinars, white papers, courses, among others.&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;U&gt;About the Author&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Larry_LaRusso_0-1626794915932.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34381iDC174165EB7198D3/image-size/large?v=v2&amp;amp;px=999" role="button" title="Larry_LaRusso_0-1626794915932.png" alt="Larry_LaRusso_0-1626794915932.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Jul 2021 17:35:51 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Moving-from-Minitab-to-JMP-and-JMP-Pro-A-Transition-Guide/ba-p/390756</guid>
      <dc:creator>Larry_LaRusso</dc:creator>
      <dc:date>2021-07-26T17:35:51Z</dc:date>
    </item>
    <item>
      <title>Self-described “analytics evangelist” Craig DePorter of Omya discusses why analytics enablement means learning more with less</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Self-described-analytics-evangelist-Craig-DePorter-of-Omya/ba-p/400191</link>
      <description>&lt;P&gt;Craig DePorter is Head of Advanced Mineral Development at Omya, a leading global producer of industrial calcium carbonate and dolomite derivatives. A polymer chemist with more than 20 years of industry experience, Craig has throughout his career promoted data-driven approaches in the pursuit of both business and scientific objectives.&lt;/P&gt;
&lt;P&gt;A Lean Six Sigma Black Belt, he has long applied industrial statistics to challenges spanning the entire product pipeline from new product development to commercialization to quality assurance in Europe, the Middle East and North America. Craig is also a prolific inventor – he holds 19 US patents – and is deeply engaged with talent recruitment and forging industry-academia partnerships.&lt;/P&gt;
&lt;P&gt;I asked &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/29694" target="_blank" rel="noopener"&gt;.@CraigD&lt;/A&gt; about his evangelism for analytics, not just at Omya but throughout his career.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="IMG_0023 Cropped.jpg" style="width: 314px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/34081i62165EADA730A5B4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="IMG_0023 Cropped.jpg" alt="Craig DePorter, Head of Advanced Mineral Development at Omya, says analytics increases an organization's efficiency." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Craig DePorter, Head of Advanced Mineral Development at Omya, says analytics increases an organization's efficiency.&lt;/span&gt;&lt;/span&gt;&lt;/STRONG&gt;&lt;STRONG&gt;Meg: How has your advocacy for analytics transformation impacted your career trajectory?&amp;nbsp;Have you encountered career opportunities that might not have been available to you before?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Craig:&lt;/STRONG&gt; I am an analytics evangelist, specifically because the technique (which is not software-specific) has been proven countless times to allow more efficient research. People are able to learn more by doing less, even though they get scared of design sizes when they start. For example, I’ve seen very, very few people make a real effort to &lt;A href="https://community.jmp.com/t5/Phil-Kay-s-Blog/Why-You-Should-Use-Design-of-Experiments-A-3-part-Video-Series/ba-p/379696" target="_blank" rel="noopener"&gt;use design of experiments (DOE)&lt;/A&gt; and decide to go back to “the old way.”&lt;/P&gt;
&lt;P&gt;Have I been offered any new job opportunities because of it? Not explicitly, but perhaps indirectly since I’ve increased the efficiency of the organizations I worked for.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: And surely that efficiency can only be scaled up as you bring colleagues on board with data-driven approaches. That being said, introducing statistical methods to a previously statistics naïve organization can be disruptive. What, in your experience, has been the best way to grow support for data initiatives? Were there setbacks?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Craig:&lt;/STRONG&gt; It’s all about learning more with less effort – and being able to back up those discoveries with sound statistics instead of techno-jargon and scientific supposition.&amp;nbsp;My efforts at my current company, Omya, have been very successful in engaging a growing community of users who see the benefits of analytics. Though I am on the heels of at least two (if not three) prior attempts to do so that were not really as successful.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: One of the most common objections we hear from newcomers to &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; is that some fear statistical approaches will supplant domain expertise. From your perspective as a polymer chemist, how has having JMP changed the way you apply domain knowledge?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Craig:&lt;/STRONG&gt; This is something that I make sure I cement into my user group: that domain expertise is even more important when using DOE, since the planning aspects are the most critical steps. What combinations won’t work? Can you expand the ranges? Does this encompass what you “think” will be the best setting? And so on.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Tell me about your relationship with JMP as an organization. What are the benefits to connecting with users outside of Omya, for example at a Discovery Summit?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Craig:&lt;/STRONG&gt; The JMP organization is top notch, even back to the 1990s when I started using the software and did training at SAS headquarters in Cary. And expanding JMP to other companies that I have worked for has always been with great support from the commercial and technical teams.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMP-Discovery-Summit-Series/ct-p/discovery" target="_blank" rel="noopener"&gt;Discovery Summits&lt;/A&gt; are superb at growing the community of statistically-minded people. No hard-sell of JMP. It certainly does not hurt that JMP is the best overall tool I have found for the sorts of things that I do, but the feel of the Summit is about espousing the concept of using statistics in your day-to-day work.&amp;nbsp;Creation of this mindset prevails ... and it just so happens that everyone uses JMP. It’s just a tool.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone who is just starting out with JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Craig:&lt;/STRONG&gt; Try it, and have a mentor help you get going. Start small.&lt;/P&gt;</description>
      <pubDate>Tue, 13 Jul 2021 20:23:50 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Self-described-analytics-evangelist-Craig-DePorter-of-Omya/ba-p/400191</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-07-13T20:23:50Z</dc:date>
    </item>
    <item>
      <title>Add() vs. + vs. Sum(): What’s the difference?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Add-vs-vs-Sum-What-s-the-difference/ba-p/396932</link>
      <description>&lt;P&gt;Ever been confused by the result when trying to add numeric values using a plus (+) operator? Maybe you discovered the Sum() function to get around the problem but never really understood why it worked. In this blog post, I explain the Add() function, plus (+) operator, and the Sum() function to help you get the results you need from your script or column formula.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Formula.png" style="width: 405px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/33984i5027AAEA0D52D577/image-dimensions/405x349?v=v2" width="405" height="349" role="button" title="Formula.png" alt="Formula.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Let’s start with the Add() function. Did you know that plus (+) is the symbolic representation of the Add() function? It is! That means that the following two expressions are exactly the same:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;1 + 2;  //Returns 3
Add( 1, 2 );  //Returns 3&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The Add() function and the plus operator add values to calculate a total value. The arguments can be numbers, matrices or lists of numbers.&lt;/P&gt;
&lt;P&gt;But what if one of the values is a numeric missing (.)? The Add() function will return missing if any of the arguments is a missing value.&lt;/P&gt;
&lt;P&gt;In the previous example, the result was 3 for either expression. Building on that, if a missing value was one of the arguments, then it would return missing, rather than 3.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;1 + . + 2;  //Returns missing
Add( 1, ., 2 );  //Returns missing
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;So how do you still obtain a total value excluding the missing values? This is where the Sum() function comes in. The Sum() function will also add values to calculate a total value, however, it &lt;EM&gt;ignores&lt;/EM&gt; missing values.&lt;/P&gt;
&lt;P&gt;Below is the syntax for the Sum() function. Notice the arguments are separated by commas and the total value of all non-missing arguments is calculated.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( 1, ., 2 );  //Returns 3&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Can Sum() ever return missing? Well, yes, it can. When the argument(s) supplied to the Sum() function are &lt;EM&gt;all&lt;/EM&gt; missing values, the result will also be missing. In this example, the value of both x and y is missing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;x = y = .;
Sum( x, y );  //Returns missing
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And don’t get tripped up thinking that you can use the plus operator to specify the arguments.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( 1 + . + 2 ); );  //Returns missing&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;When you do that, &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; sees this as one argument that uses the Add() function. And remember that the Add() function returns missing when any of the arguments is a missing value:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( Add( 1, ., 2 ) );  //Returns missing&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Which is essentially the same as this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( . );  //Returns missing&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you changed that example to include two arguments, such as:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( 100, 1 + . + 2 );  //Returns 100&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result is 100 because the arguments are 100 and missing, as in:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Sum( 100, . );  //Returns 100&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I hope this helps to clarify the uses of Add(), plus (+), and Sum().&lt;/P&gt;</description>
      <pubDate>Wed, 07 Jul 2021 13:00:00 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Add-vs-vs-Sum-What-s-the-difference/ba-p/396932</guid>
      <dc:creator>Wendy_Murphrey</dc:creator>
      <dc:date>2021-07-07T13:00:00Z</dc:date>
    </item>
    <item>
      <title>John Szarka on JMP Pro, reproducibility and why being active in the JMP Community and Early Adopter program helps users at W. L. Gore get more from their investment in the software</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/John-Szarka-on-JMP-Pro-reproducibility-and-why-being-active-in/ba-p/397967</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="virtualbooth.jpg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/33951i3EB8967ACC1296DC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="virtualbooth.jpg" alt="W. L. Gore's John Szarka says the Early Adopter program lets users have a voice in the development process." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;W. L. Gore's John Szarka says the Early Adopter program lets users have a voice in the development process.&lt;/span&gt;&lt;/span&gt;Statistician John Szarka supports regional and global new product development and process improvement for W. L. Gore &amp;amp; Associates’ Core Technology group. His work integrates many areas of industrial statistics, including design and analysis of experiments, statistical process control, measurement systems analysis and sampling plan developments. He is a champion and core team member for Gore’s analytics initiatives establishing best practices and training curriculums across the enterprise.&lt;/P&gt;
&lt;P&gt;I spoke with &lt;A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/4320" target="_blank" rel="noopener"&gt;@jszarka&lt;/A&gt; about how W. L. Gore has cultivated a dynamic analytics culture, standardizing around JMP Pro and engaging with all the available resources to keep learning and improving.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Many people think of W. L. Gore as something of a pioneer in analytics transformation, given the company’s long history with data-d&lt;/STRONG&gt;&lt;STRONG&gt;riven approaches. But keeping that analytics culture in a state of evolution is no doubt an ongoing process. What kinds of ROI or improvements have helped you and your colleagues to sustain momentum – and keep innovating – when it comes to analytics at Gore?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;John:&lt;/STRONG&gt; I feel very fortunate that statistics and analytics are rooted in the founding of our enterprise. Our co-founder, Bill Gore, wrote the book &lt;EM&gt;Sta&lt;/EM&gt;&lt;EM&gt;tistical Methods for Chemical Experimentation&lt;/EM&gt; back in 1952 while still at DuPont, before the company was started in 1958. Our investment in having a global statistics team has been highly valued by our technical leaders across the organization.&lt;/P&gt;
&lt;P&gt;With such an explosion of "big data" and modeling advances, one thing I feel we’ve recently taken very seriously at Gore is valuing our data as an asset. Having the right people and systems in place to enable us to extract the most value from our data is essential for us now and moving forward.&lt;/P&gt;
&lt;P&gt;We want to ensure that we are using the right data to answer the right questions. That remains at the front end of our conversations when we’re exploring projects using big data for new product development or process improvement studies. In many instances, we can use JMP Pro to meet our needs on the data and analysis side to provide insights and help in making decisions. Our investment in JMP Pro – up from the base version of JMP – has made this type of modeling much easier for our associates.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: One of the most common objections we hear from newcomers to &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; is that some fear statistical approaches will supplant domain expertise. How has having &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Pro&lt;/A&gt; changed the way domain experts at Gore apply their knowledge and skills?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;John:&lt;/STRONG&gt; It’s never an either-or argument when it comes to using data from the process versus domain expertise. We make the best combined inferences when we bring this information together. There is a strong culture of experimentation at Gore. We may have information from the past around how we think a certain experiment may work out. In some instances, the actual data agree with those prior beliefs, and in other instances they don’t.&lt;/P&gt;
&lt;P&gt;One of the key points is to remind the group around the reproducibility of the experiment. We are likely to build on the work of one experiment with a follow-up experiment. And if we continue to see a particular signal, we can be more certain that it’s true. If it falls off, then perhaps not. Over time we build robust knowledge from the science and the data together.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Tell us about your relationship with the JMP organization. What value do you get from participating in Discovery Summits, users’ groups, training, STIPS, the online JMP Community, etc.?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;John:&lt;/STRONG&gt; The online JMP Community is a vibrant space that I try to visit at least once a week. It has been a great place to learn new tips, read discussions on various issues and get a sense for how others are leveraging JMP for their organizations. I’ve probably contributed the most myself in the "&lt;A href="https://community.jmp.com/t5/JMP-Wish-List/idb-p/jmp-wish-list" target="_blank" rel="noopener"&gt;wish list&lt;/A&gt;" category – mostly based on observations that could improve the JMP experience for our users at Gore even more.&lt;/P&gt;
&lt;P&gt;This past year, we as a statistics group at Gore looked at modifying our in-person trainings for the virtual environment. Utilizing &lt;A href="https://www.jmp.com/en_us/online-statistics-course.html?utm_campaign=stips&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;STIPS&lt;/A&gt; has been great for us because it gives rich context in the type of problems our technical associates are trying to solve. The content is framed with the user in mind – how they can answer their questions using statistical techniques. Many software vendors would have a series of "click here" steps that you follow, but I was really impressed with the production quality of many of the STIPS modules.&lt;/P&gt;
&lt;P&gt;The online &lt;A href="https://community.jmp.com/t5/JMP-Discovery-Summit-Series/ct-p/discovery" target="_blank" rel="noopener"&gt;Discovery Summit conferences&lt;/A&gt; in the Americas 2020 and Europe 2021 were the first I attended. I gravitated to the presentations from industry, as the problems they were working on were interesting. One of my favorite presentations was &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2020/Statistical-Process-Control-for-Process-Variables-that-have-a/ta-p/281548" target="_blank" rel="noopener"&gt;&lt;EM&gt;Statistical Process Control for Process Variables that have a Functional Form&lt;/EM&gt;&lt;/A&gt;. Profile monitoring in the SPC literature has existed for some time, but I really liked how easily we can use platforms like Functional Data Explorer and the Model Driven Multivariate Control Chart to easily implement them in practice.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: &lt;/STRONG&gt;&lt;STRONG&gt;Tell us about your relationship to the JMP software developers. How do you go about providing feedback, and do you feel that feedback helps influence new JMP releases? Does your ability to maintain a collaborative relationship with JMP Development have an impact ultimately on the value you get from JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;John:&lt;/STRONG&gt; The JMP software developers are a fantastic group of people to interact with! I’ve made connections with JMP associates over the years through external conferences along with JMP Discovery Summit. That led me to use the Early Adopter program to get a sense of the direction of future releases and have a voice into that process.&lt;/P&gt;
&lt;P&gt;The developers are great listeners and really seek to understand our problems and the solutions that will help us the most in future JMP releases. This has also led to joint meetings between members of Gore and JMP to discuss targeted areas. I’ve seen multiple instances where specific requests I’ve made have been implemented, which is proof that this process works.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What advice would you give to someone who is just starting out with JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;John:&lt;/STRONG&gt; Partner with those in your organization already using JMP or reach out to your peers in quality organizations you’re a part of to see the areas they get the most value out of JMP. I would personally start in the graphing menus, especially Graph Builder. There is tremendous power in storytelling with graphs and I find that I can tell a lot of stories by utilizing the many features within Graph Builder. As many users start learning more about the various models you can build in JMP, they sometimes get away from being as good at graphing, but I would get into the habit of centering your focus on graphing from the onset.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 14:48:49 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/John-Szarka-on-JMP-Pro-reproducibility-and-why-being-active-in/ba-p/397967</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-07-06T14:48:49Z</dc:date>
    </item>
    <item>
      <title>New features in Process Screening for JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-features-in-Process-Screening-for-JMP-16/ba-p/384147</link>
      <description>&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/Stability-and-Capability-for-hundreds-or-thousands-of-processes/ba-p/31200" target="_self"&gt;Process Screening&lt;/A&gt; enables you to explore a large number of processes across time. Several new features were added to this platform in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_self"&gt;JMP 16&lt;/A&gt;. This blog post details the new features for Process Screening that were introduced in JMP 16.&lt;/P&gt;
&lt;H3&gt;XBar and IMR charts in a single launch&lt;/H3&gt;
&lt;P&gt;Companies often have many ongoing processes. Some processes have more than one observation per subgroup and require an XBar chart, while other processes may have a single observation per subgroup and require an IMR chart. Beginning with JMP 16, you can get both chart types with a single Process Screening launch.&lt;/P&gt;
&lt;P&gt;Consider the following data table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=New Table( "Process Data",
	Add Rows( 24 ),
	New Column(
		"wafer", 
		Numeric( 1 ),
		"Nominal",
		Set Values(
			[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
			11, 12]
		),
		Set Display Width( 0 )
	),
	New Column(
		"Y1", 
		Numeric,
		"Continuous",
		Format( "Best", 10 ),
		Set Property(
			"Spec Limits",
			{LSL( 104.41 ), USL( 131.89 ), Target( 118.15 )}
		),
		Set Values(
			[114.555760105678, 113.52359591958, 114.946183872216, 116.25374611217,
			110.287898508744, 119.847995090729, 113.877878795723, 113.106755626713,
			114.832071507276, 115.737338527253, 120.193341974807, 113.425287275443,
			., ., ., ., ., ., ., ., ., ., ., .]
		),
		Set Display Width( 0 )
	),
	New Column(
		"Y2",
		Numeric,
		"Continuous",
		Format( "Best", 10 ),
		Set Property(
			"Spec Limits",
			{LSL( 164.39 ), USL( 429.65 ), Target( 297.02 )}
		),
		Set Values(
			[322.616751775796, 323.833298568833, 301.607366273833, 278.646245766939,
			469.298298488357, 332.715779503856, 346.462173291699, 213.59945858556,
			291.464226219377, 345.449129206092, 242.233144838257, 423.564714196848,
			291.370833295888, 333.921504947116, 288.644927205998, 258.806219486679,
			263.935377860945, 276.312880747942, 322.144968498633, 341.978235063698,
			316.143895248667, 302.164492808713, 319.751938178979, 269.802897971304]
		),
		Set Display Width( 0 )
	),
	Group Columns( "Processes", :Y1, 2 )
);  &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This table contains data from two processes. The first process (Y1) has one observation per wafer. The second process (Y2) has two observations per wafer. Therefore, the control chart type should be XBar for Y2 and IMR (Individual and Moving Range) for Y1.&lt;/P&gt;
&lt;P&gt;To create this analysis, select Analyze-&amp;gt;Screening-&amp;gt;Process Screening. Assign Y1 and Y2 to Process Variables. Assign wafer to Subgroup. Change the chart type to XBar and R.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PSDialog.png" style="width: 578px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32744i03159FD342F13559/image-size/large?v=v2&amp;amp;px=999" role="button" title="PSDialog.png" alt="PSDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively, you can run the following JSL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;obj=dt&amp;lt;&amp;lt; Process Screening(
	Process Variables( :Y1, :Y2 ),
	Control Chart Type( "XBar and R" ),
	Subgroup( :wafer )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;After clicking OK, you will find the following analysis:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PSSwitcth.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32745i60E3BCC60D120FC5/image-size/large?v=v2&amp;amp;px=999" role="button" title="PSSwitcth.png" alt="PSSwitcth.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;An XBar and R chart type was applied to Y2. An Individual Measurement and Moving Range chart type was applied to Y1.&lt;/P&gt;
&lt;H3&gt;Color Out of Spec Values&lt;/H3&gt;
&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Coming-in-JMP-12-Process-Capability/ba-p/30503" target="_self"&gt;Process Capability&lt;/A&gt; and &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Manipulating-and-managing-your-specification-limits/ba-p/48718" target="_self"&gt;Manage Spec Limits&lt;/A&gt; already provided methods to color values that are out of the specification limits.&amp;nbsp; This functionality was added to Process Screening JMP 16.&lt;/P&gt;
&lt;P&gt;Run the following code to open Semiconductor Capability.jmp and run the Process Screening script attached to the table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
obj=dt&amp;lt;&amp;lt;Run Script("Process Screening");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;To color the out of spec values in your data table, select the red triangle next to Process Screening and choose Show Capability-&amp;gt;Color Out of Spec Values.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="color.png" style="width: 921px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32747i58DF4C6D9351272F/image-size/large?v=v2&amp;amp;px=999" role="button" title="color.png" alt="color.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In the data table, cells with observations that fall below the lower spec limit are colored red. Cells with observations above the upper specification limit are colored blue.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="coloredTable.png" style="width: 716px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32748iDA950C8B11BDED7C/image-size/large?v=v2&amp;amp;px=999" role="button" title="coloredTable.png" alt="coloredTable.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Ability to specify K for K Sigma&lt;/H3&gt;
&lt;P&gt;Process monitoring is often plagued by too many false alarms. This can lead to the alarms being ignored. The K Sigma option, introduced in JMP 16, gives users the ability to specify K. Recall the limits are calculated using +/- K * Sigma, and increasing K will widen the limits. This gives you a way of making alarms less sensitive, producing fewer false alarms.&lt;/P&gt;
&lt;P&gt;As an example, run the following:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
obj=dt&amp;lt;&amp;lt;Process Screening(
	Process Variables( :A2P1 ),
	Control Chart Type( "Indiv and MR" ),
	Subgroup( :Wafer ID in lot ID )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="3sigma.png" style="width: 841px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32752iAD7F7B389914E9A2/image-size/large?v=v2&amp;amp;px=999" role="button" title="3sigma.png" alt="3sigma.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that there are 9 Test 1 violations. After investigations, it was determined that these were all false alarms. To make the alarms less sensitive, K Sigma can be adjusted. Select Analyze-&amp;gt;Screening-&amp;gt;Process Screening. Select A2P1 as Process Variables. Select Wafer ID in lot ID as Subgrouping.&amp;nbsp; In the bottom left of the dialog, change KSigma to 4.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ksigmadialog.png" style="width: 504px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32753iF7B79A41254D7C07/image-size/large?v=v2&amp;amp;px=999" role="button" title="ksigmadialog.png" alt="ksigmadialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ksigmaresults.png" style="width: 843px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32754i7AE0D33439DB1844/image-size/large?v=v2&amp;amp;px=999" role="button" title="ksigmaresults.png" alt="ksigmaresults.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;A KSigma of 4 causes the control limits to be wider (center line +/- 4*sigma) as compared to a KSigma of 3 (center line +/- 3*sigma).&amp;nbsp; This example now has no test 1 violations as all observations fall within the 4 sigma limits.&lt;/P&gt;
&lt;P&gt;Three key new features were added to Process Screening in JMP 16.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The ability to have XBar and IMR control charts in a single launch.&lt;/LI&gt;
&lt;LI&gt;The ability to color and select out of spec values.&lt;/LI&gt;
&lt;LI&gt;The ability to alter KSigma to make alarm tests more or less sensitive.&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Mon, 28 Jun 2021 22:14:04 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-features-in-Process-Screening-for-JMP-16/ba-p/384147</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-06-28T22:14:04Z</dc:date>
    </item>
    <item>
      <title>Procter &amp; Gamble's Zhiwu Liang explains how nurturing a dynamic relationship with JMP Development helps the company get more from its investment in a software that is constantly being improved</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Procter-amp-Gamble-s-Zhiwu-Liang-explains-how-nurturing-a/ba-p/394101</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="zhiwu-liang.jpg" style="width: 271px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/33640iE58B8FC0AFA4E307/image-size/medium?v=v2&amp;amp;px=400" role="button" title="zhiwu-liang.jpg" alt="Zhiwu Liang of P&amp;amp;G says JMP makes it so easy to show results to managers." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Zhiwu Liang of P&amp;amp;G says JMP makes it so easy to show results to managers.&lt;/span&gt;&lt;/span&gt;Zhiwu Liang is Principal Statistician at Procter &amp;amp; Gamble, based in Brussels. With nearly 20 years of experience working in the consumer goods industry, Liang is skilled in design of experiments, non-linear model and prediction, statistical modeling, decision trees, time series analysis and prediction. He holds a PhD in Mathematical Demography from the University of Groningen in the Netherlands.&lt;/P&gt;
&lt;P&gt;In a recent conversation,&amp;nbsp;&lt;LI-USER uid="5759"&gt;&lt;/LI-USER&gt; and I discussed the course of his career, communicating data with non-statisticians and the many reasons he sees to nurture a collaborative relationship with &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; software developers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: In your role at P&amp;amp;G, you do a lot to promote analytics enablement through teaching and consulting as well as doing your own work with more complex modeling and experimental design. How has your advocacy for analytics transformation within P&amp;amp;G affected your career trajectory?&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Zhiwu:&lt;/STRONG&gt; Advocating for analytical methods is my job! But it has also definitely helped me to gain recognition within P&amp;amp;G. And a huge part of that is having a suitable tool with which I can easily communicate with non-statisticians. By teaching JMP skills at P&amp;amp;G, I’ve come to be known not only as a statistician but also as a JMP expert. Whenever my colleagues have questions about JMP – no matter whether it is stat-related or not – they come to me. And I can often find some issues related to their design and data analysis, figure out the problem and help them to use the correct tool for design of experiments (DOE) or modeling (data analysis). Often before they even realize they’ve used the incorrect method.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: Tell me more about using JMP on a day-to-day basis. Are there ways in which the software makes your standard processes – or even your job as a whole – easier? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Zhiwu:&lt;/STRONG&gt; For me, JMP is not only a tool for data analysis; it is also a communication method with which to transfer difficult statistical thinking to a simple graph or profiler and enable others – especially non-statisticians – to understand the data and models. The tool I use most often in JMP is DOE, and it’s much better than other software. At P&amp;amp;G, we have many statistical courses which require participants to use JMP. You can see people’s excitement and satisfaction when they get the correct results so easily for even the most complex models. In fact, my colleagues are also now using JMP on a daily basis. They like the visibility function in JMP because it makes it so easy to show the results to their manager.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: One thing that is relatively unique about the JMP organization is that we see relationship-building as a way for our customers to optimize the benefits they get from their investment in JMP. Can you talk a bit about how you engage with the JMP organization and the broader network of users? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Zhiwu:&lt;/STRONG&gt; There are a lot of forums in &lt;A href="https://community.jmp.com/" target="_blank" rel="noopener"&gt;community.jmp.com&lt;/A&gt; that we utilize for sharing information and asking questions about JMP. But I personally prefer Discovery Summits because at Discovery, you can always learn new things – whether it’s a new method, new tool, new application. Also you can easily c&lt;SPAN style="font-family: inherit;"&gt;onnect to other users and the JMP software developers. By talking to the architects of the software, you can develop an even better understanding of the methods y&lt;/SPAN&gt;ou have access to in JMP. And you can suggest they add new features for a specific model in upcoming version releases.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: That’s interesting. Why is it so valuable to be able to provide this kind of feedback to JMP software developers? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Zhiwu:&lt;/STRONG&gt; It is very important for P&amp;amp;G to cultivate this kind of collaborative relationship. We have thousands of people using JMP on a daily basis. Different functions and categories have different needs. Sometimes we even have to combine Excel tools with JMP to solve some particularly tough questions. So we need to provide timely feedback to JMP about any existing features that do not work in specific situations. We then ask JMP developers to improve the software or provide suggestions on how P&amp;amp;G might build a JMP add-in tool (which, I have to say, might only work for the current version). But that’s the way we can let JMP make people’s lives better at P&amp;amp;G.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg: What is the future of JMP at P&amp;amp;G?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Zhiwu:&lt;/STRONG&gt; With data science and machine learning booming at P&amp;amp;G, we expect JMP can embed more machine learning techniques, such as convolutional neural networks, LightGBM, Catboost and NPL tools – just like you did for XGboost – to make our lives easier and solve most of our problems within just one tool.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Jun 2021 19:50:08 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Procter-amp-Gamble-s-Zhiwu-Liang-explains-how-nurturing-a/ba-p/394101</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-06-23T19:50:08Z</dc:date>
    </item>
    <item>
      <title>New features in CUSUM control charts for JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-features-in-CUSUM-control-charts-for-JMP-16/ba-p/382920</link>
      <description>&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/How-to-detect-small-shifts-in-Control-Charts/ba-p/49452" target="_self"&gt;Cumulative Sum (CUSUM) control charts&lt;/A&gt; enable you to detect small shifts in a process. They are useful in detecting shifts that occur over time, such as a gradual drift, and that are not necessarily accompanied by a sudden shift.&amp;nbsp; This post details the new features for CUSUM Control Charts that are available in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 16&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Test Beyond Limits and Alarm Scripts&lt;/H3&gt;
&lt;P&gt;The existing CUSUM Control Chart made it easy to visualize when points fell beyond limits. However, there was not a straightforward way to take additional action with this information. JMP 16 introduces two new options: Test Beyond Limits and Alarm Scripts.&lt;/P&gt;
&lt;P&gt;Run the following for an example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Engine Temperature Sensor.jmp");
obj=dt&amp;lt;&amp;lt;Run Script("CUSUM Control Chart");
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Notice there are points that fall beyond the control limits. From the red triangle next to CUSUM Control Chart – Y, select “Alarm Script”. Alarm scripts enable you to write and run a script that indicates when the data fail special causes tests. Results can be written to the log or spoken aloud, and there is an option to include an explanation of why the test failed. You can also send results to an email or file.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="alarmscriptCUSUMDialog.png" style="width: 377px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32648i5D0E1544428BDD26/image-size/large?v=v2&amp;amp;px=999" role="button" title="alarmscriptCUSUMDialog.png" alt="alarmscriptCUSUMDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The default option is “Write with explanation”. This will write the test failures and an explanation of the test failures to the log. Click OK to choose this option.&lt;/P&gt;
&lt;P&gt;From the red triangle next to CUSUM Control Chart – Y, select “Test Beyond Limits”. This causes the points that fall beyond the control limits to be flagged.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="testbeyondLimits.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32649i7F36B613B452E6F8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="testbeyondLimits.png" alt="testbeyondLimits.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Additionally, the following information will be written to the log since we turned on the Alarm Script option.&lt;/P&gt;
&lt;P&gt;“Out of Control for test 15 in column Y in sample 39.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 40.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 43.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 44.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 45.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 46.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 47.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 48.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 49.&lt;/P&gt;
&lt;P&gt;Out of Control for test 15 in column Y in sample 50.”&lt;/P&gt;
&lt;H3&gt;Show Excluded Region&lt;/H3&gt;
&lt;P&gt;Show Excluded Region specifies that subgroups that are entirely excluded are shown on the horizontal axis in the CUSUM control chart.&lt;STRONG&gt;&amp;nbsp; &lt;/STRONG&gt;This option is applicable only when an X variable is specified.&lt;/P&gt;
&lt;P&gt;To see an example, run the following JSL to open the Oil1 Cusum sample data table and exclude rows 33-40.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp");
dt&amp;lt;&amp;lt;Select Rows({33,34,35,36,37,38,39,40})&amp;lt;&amp;lt;exclude;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;CUSUM Control Chart.&amp;nbsp; Notice the new option in the bottom left for “Show Excluded Region”.&amp;nbsp; This option is turned off by default.&amp;nbsp; In previous versions of JMP, excluded points would always show on CUSUM Control Charts (unless they were also hidden).&lt;/P&gt;
&lt;P&gt;Specify weight as Y.&amp;nbsp; Specify hour as X.&amp;nbsp; Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="excluded.png" style="width: 406px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32656i29D182A5A0BAE6EE/image-size/large?v=v2&amp;amp;px=999" role="button" title="excluded.png" alt="excluded.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice that subgroups 9 and 10 (Excluded) are not shown on the graph.&lt;/P&gt;
&lt;H3&gt;Tune Chart&lt;/H3&gt;
&lt;P&gt;The Tune Chart option shows a control that enables you to set an acceptable range for the Y variable (practical significance). This is particularly helpful when the testing interval is more frequent, which can result in a much shorter practical average run length.&lt;/P&gt;
&lt;P&gt;For an example, run the following:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Oil2 Cusum.jmp");
obj=dt&amp;lt;&amp;lt;CUSUM Control Chart( Y( :weight ), X( :hour ) );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;From the red triangle next to CUSUM Control Chart – weight, select Tune Chart. You can use the slider or the number edit boxes to set known acceptable values. Set the minimum to 8.05 and the maximum to 8.15.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="tunechart.png" style="width: 564px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32657i7B56B60BB04EB9BD/image-size/large?v=v2&amp;amp;px=999" role="button" title="tunechart.png" alt="tunechart.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click Done. The value for k changes from .5 to 2.1756. Because we are not using the data units option, this value is calculated as (Maximum-Minimum)/2/sigma. If we were using the data units option, this value would be calculated as (Maximum-Minimum)/2.&lt;/P&gt;
&lt;P&gt;Version 16 introduced several new features for CUSUM Control Charts. The new features are&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Test Beyond Limits and Alarm Script&lt;/LI&gt;
&lt;LI&gt;Show Excluded Region&lt;/LI&gt;
&lt;LI&gt;Tune Chart&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 08 Jun 2021 21:01:16 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-features-in-CUSUM-control-charts-for-JMP-16/ba-p/382920</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-06-08T21:01:16Z</dc:date>
    </item>
    <item>
      <title>JMP 16 new features in Control Chart Builder – part 2</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-16-new-features-in-Control-Chart-Builder-part-2/ba-p/382769</link>
      <description>&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Control-Charts-are-easy-in-JMP-10/ba-p/30100" target="_self"&gt;Control Chart Builder&lt;/A&gt; is an interactive workspace which allows you monitor process variation. This blog post details the new features introduced for Control Chart Builder in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_self"&gt;JMP 16&lt;/A&gt; that specifically deal with tests and alarms. To see other new Control Chart Builder features that do not deal with tests or alarms, please see my previous blog post &lt;LI-MESSAGE title="JMP 16 new features in Control Chart Builder – part 1" uid="382579" url="https://community.jmp.com/t5/JMPer-Cable/JMP-16-new-features-in-Control-Chart-Builder-part-1/m-p/382579#U382579" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-blog-thread lia-fa-icon lia-fa-blog lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;.&lt;/P&gt;
&lt;H3&gt;One-sided charts with one-sided alarms&lt;/H3&gt;
&lt;P&gt;One-sided charts are frequently used with attribute control charts. If the number of defects is high, you want an alarm to display. Conversely if the number of defects is low, you do not want an alarm to display. Low defects are good. The “Show Limits” option has been replaced with “Show Upper Limit” and “Show Lower Limit.” If one limit is turned off (either upper or lower), the tests associated with the hidden limit which apply solely to the limits (Test Beyond Limits and Test 1) will not alarm.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Run the following for an example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=New Table( "C Chart Data",
	Add Rows( 20 ),
	New Column( "Subgroup",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Values(
			[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
		)
	),
	New Column( "Subgroup Size",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Values(
			[59, 57, 43, 54, 58, 52, 51, 62, 48, 46, 55, 52, 58, 55, 55, 53, 51, 61,
			55, 57]
		)
	),
	New Column( "Defects",
		Numeric,
		"Continuous",
		Format( "Best", 12 ),
		Set Values(
			[110, 101, 94, 101, 53, 93, 132, 104, 121, 118, 112, 91, 98, 92, 126,
			122, 112, 97, 115, 90]
		)
	)
);
obj=dt&amp;lt;&amp;lt;Control Chart Builder(
	Class( Shewhart Attribute ),
	Variables( Y( :Defects ), n Trials( :Subgroup Size ) ),
	Chart(
		Points( Statistic( "Count" ) ),
		Limits( Sigma( "Poisson" ) ),
		Warnings(
			Test 1( 1 ),
			Test 2( 1 ),
			Test 3( 1 ),
			Test 4( 1 ),
			Test 5( 1 ),
			Test 6( 1 ),
			Test 7( 1 ),
			Test 8( 1 )
		)
	)
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code creates a data table and the associated C Chart with the Western Electric Tests turned on.&lt;/P&gt;
&lt;P&gt;Notice that there is a point that falls below the lower control limit that is flagged. The company is not concerned with a low defect count. They do not want to be notified when the defect count falls below the lower control limit. To solve, this issue, uncheck the box in the control panel (lower left) for “Show Lower Limit”.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lowerLimit.png" style="width: 840px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32638i5E080C3B0479EB01/image-size/large?v=v2&amp;amp;px=999" role="button" title="lowerLimit.png" alt="lowerLimit.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The lower control limit is removed from the graph. The point that falls below the lower limit is no longer flagged.&lt;/P&gt;
&lt;H3&gt;Zones, Shade Zones and Alarms for Individual on Group Standard Deviation Charts&lt;/H3&gt;
&lt;P&gt;In previous versions of JMP, Control Chart Builder did not provide the Zones, Shade Zones, or Alarm test options for Individual on Group Standard Deviation charts. These have been added to JMP 16.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To see an example, run the following:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
obj=dt&amp;lt;&amp;lt;Control Chart Builder(
	Show Control Panel( 0 ),
	Variables( Subgroup( :Sample ), Y( :Weight ) ),
	Chart(
		Position( 1 ),
		Points( Statistic( "Standard Deviation" ) ),
		Limits( Sigma( "Moving Range" ) )
	),
	Chart(
		Position( 2 ),
		Points( Statistic( "Moving Range on Std Dev" ) ),
		Limits( Sigma( "Moving Range" ) )
	)
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The code above, opens the Coating sample data table and creates an Individual on Group Std Dev &amp;amp; Moving Range on Group Std Devs chart. Right-clicking inside this graph will yield several new options. The Zones and Shade Zones options have been added to the Limits menu. Customize Tests, Tests, and Westgard Rules have been added to the Warnings menu.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="indongroupoptions.png" style="width: 812px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32639i374ED3AD2629A21B/image-size/large?v=v2&amp;amp;px=999" role="button" title="indongroupoptions.png" alt="indongroupoptions.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Choose the Zones, Shade Zones, and Tests-&amp;gt;All Tests options.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="indzones.png" style="width: 582px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32641iAE669250FA618EB6/image-size/large?v=v2&amp;amp;px=999" role="button" title="indzones.png" alt="indzones.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that no points were flagged because there were no Western Electric test violations for this data.&lt;/P&gt;
&lt;H3&gt;Test Excluded Subgroups&lt;/H3&gt;
&lt;P&gt;Sometimes you may not be interested in flagging excluded observations as test violations. A new option has been added called Test Excluded Subgroups. By default, this option is turned on so that it matches previous versions of JMP.&lt;/P&gt;
&lt;P&gt;Run the following JSL to see an example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Washers.jmp");
dt&amp;lt;&amp;lt;Select Rows(9)&amp;lt;&amp;lt;exclude;
obj=dt&amp;lt;&amp;lt;Control Chart Builder(
	Show Control Panel( 0 ),
	Class( Shewhart Attribute ),
	Variables( Subgroup( :Lot ), Y( :"# defective"n ), n Trials( :Lot Size ) ),
	Chart(
		Points( Statistic( "Proportion" ) ),
		Limits( Sigma( "Binomial" ) ),
		Warnings(
			Test 1( 1 ),
			Test 2( 1 ),
			Test 3( 1 ),
			Test 4( 1 ),
			Test 5( 1 ),
			Test 6( 1 ),
			Test 7( 1 ),
			Test 8( 1 )
		)
	)
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens the Washers sample data table and excludes the 9&lt;SUP&gt;th&lt;/SUP&gt; row of the data table. A P Chart is then created with Western Electric Tests turned on. Notice that there are two Test 1 violations. The 2&lt;SUP&gt;nd&lt;/SUP&gt; Test 1 violation is for the excluded point.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From the red triangle next to Control Chart Builder, deselect the option Test Excluded Subgroups.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="testexcluded.png" style="width: 583px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32644i28FD814570AEA2C6/image-size/large?v=v2&amp;amp;px=999" role="button" title="testexcluded.png" alt="testexcluded.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice that only one point is flagged as a Test 1 violation. The second point is no longer flagged because this observation has been excluded and we turned off Test Excluded Subgroups. This option has also been added to Control Chart Builder preferences.&lt;/P&gt;
&lt;H3&gt;Alarm Script Dialog Improvements&lt;/H3&gt;
&lt;P&gt;The Alarm Script dialog has been overhauled for JMP 16. You can find this option by clicking on the red triangle next to Control Chart Builder (after creating a report) and select Alarm Script.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlarmScriptDialog.png" style="width: 382px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32643i3D9552684AD06817/image-size/large?v=v2&amp;amp;px=999" role="button" title="AlarmScriptDialog.png" alt="AlarmScriptDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Text has been added to the top of the dialog that describes how to use these features. The default selection has been altered from Write to Log to Write with explanation. Three new selections have been added: “Write to File”, “Email”, and “None.” The example script for Write to File will write the test failures to a file in your TEMP folder called test log.txt. The example script for Email will send an email for each test failure encountered. The None option, essentially turns the alarm scripts off.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Additionally, a new reserved variable was created ^QCPHASE. This variable can be used to obtained phase information for your test failures. This new reserved variable can be seen in the Write to Log and Email sample scripts.&lt;/P&gt;
&lt;P&gt;New features for tests and alarms that were introduced in version 16 for Control Chart Builder are as follows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One-sided charts with one-sided alarms&lt;/LI&gt;
&lt;LI&gt;Zones, Shade Zones and Alarms for Individual on Group Standard Deviation Charts&lt;/LI&gt;
&lt;LI&gt;Test Excluded Subgroups&lt;/LI&gt;
&lt;LI&gt;Alarm Script dialog improvements&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Other new features for Control Chart Builder in JMP 16 that were detailed in my &lt;A href="https://community.jmp.com/t5/blogs/blogworkflowpage/blog-id/jmper-cable/article-id/596?prePageCrumb=BlogDashboardPage" target="_self"&gt;previous blog post&lt;/A&gt; are as follows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Show Limit Labels&lt;/LI&gt;
&lt;LI&gt;KSigma&lt;/LI&gt;
&lt;LI&gt;Remove Location Chart and Remove Dispersion Chart right-click options&lt;/LI&gt;
&lt;LI&gt;Graph Spacing&lt;/LI&gt;
&lt;LI&gt;Subgroup role for Levey Jennings charts&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 14 May 2021 17:13:14 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-16-new-features-in-Control-Chart-Builder-part-2/ba-p/382769</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-05-14T17:13:14Z</dc:date>
    </item>
    <item>
      <title>BIOTRONIK's Gerd Kopp talks advocating for analytics, overcoming internal hurdles and building a relationship with the JMP organization</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/BIOTRONIK-s-Gerd-Kopp-talks-advocating-for-analytics-overcoming/ba-p/384654</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="gerd-kopp.jpg" style="width: 250px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32806iFD4163AD343BB5D2/image-size/large?v=v2&amp;amp;px=999" role="button" title="gerd-kopp.jpg" alt="&amp;quot;Advocating for analytics was an expectation of my role from the very start,&amp;quot; says Gerd Kopp of Berlin-based BIOTRONIK." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;"Advocating for analytics was an expectation of my role from the very start," says Gerd Kopp of Berlin-based BIOTRONIK.&lt;/span&gt;&lt;/span&gt;Gerd Kopp is Quality Management and Reliability Statistician at multinational biomedical technology innovator &lt;A href="https://www.biotronik.com/en-us" target="_blank" rel="noopener"&gt;BIOTRONIK&lt;/A&gt;, based in Berlin. In addition to providing technical consulting in reliability analysis, design of experiments, measurement systems analysis, predictive modeling, process control, sample size determination and statistical SOPs for quality management, he also heads the company’s &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; training program.&lt;/P&gt;
&lt;P&gt;I recently sat down with &lt;LI-USER uid="5545"&gt;&lt;/LI-USER&gt;&amp;nbsp;to discuss BIOTRONIK's analytics transformation and his work to promote widespread analytics capability.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg:&lt;/STRONG&gt; &lt;STRONG&gt;We often hear that having access to JMP saves time and reduces costs – both important benefits obviously, but benefits that are framed in terms of the company and its business goals. On a personal level, how does having access to JMP affect your job satisfaction on a day-to-day basis? Have you noticed any changes in morale among your colleagues after they’ve switched to JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Gerd:&lt;/STRONG&gt; When you work with any kind of software on a daily basis, it’s important that it’s not just a means to an end. You want the way to produce results to be effortless or even fun. With JMP that’s absolutely the case for me, and for my colleagues. In the ‘Using JMP’ courses [I run at BIOTRONIK], I&amp;nbsp;often notice that new users are surprised how easily graphs can be created and rearranged in a drag-and-drop manner. This not only saves time, but it also helps with the perception of statistics as being an asset rather than an obstacle.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg:&lt;/STRONG&gt; &lt;STRONG&gt;Speaking of obstacles, what were some of the key hurdles you’ve had to overcome to convince stakeholders to expand access to JMP? How did you demonstrate to your leadership that the value of JMP could be scaled up with an expanded license structure?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Gerd:&lt;/STRONG&gt; For stakeholders who don’t anticipate using JMP as often as I do, cost can be an issue. In such cases, it’s important to demonstrate that necessary tasks can be handled more efficiently and more nimbly in JMP. When we introduced JMP almost 10 years ago, I held a course on DOE and statistical modeling with two software packages side by side – JMP and another tool we were using at the time. JMP was not only faster to use for every task, but when I showed how nuisance factors such as component measurements could easily be included in a DOE as covariates, this boosted our already existing efforts to make processes&amp;nbsp;even more robust. So JMP was not only more efficient, but it added new possibilities for analysis.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg:&lt;/STRONG&gt; &lt;STRONG&gt;What do you see as the key benefit of getting involved in the JMP community outside of your organization, whether through regional users groups or Discovery Summits?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Gerd:&lt;/STRONG&gt; There are several aspects to this. The user community at community.jmp.com is the gateway to JMP experts all over the world. When I’m looking for&amp;nbsp;&lt;SPAN style="font-family: inherit;"&gt;h&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;elp on JMP JSL programming, for example, I usually find my answers there. The regional [Germany-Austria-Switzerland] users group puts me in touch with people in my position at other companies. Seeing how certain challenges are handled elsewhere can help a great deal when I’m looking to find a way to master my o&lt;/SPAN&gt;wn similar challenges. Discovery Summits extend this to the international stage, but most importantly, these conferences present an opportunity to meet JMP developers. They are an excellent source&amp;nbsp; to explain what happens in JMP platforms behind the scenes, and they’re always interested in users’ ideas for new functionality in JMP.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg:&lt;/STRONG&gt; &lt;STRONG&gt;An excellent point. Our developers are very focused on introducing new JMP features that users actually want, and we rely on your feedback to understand how to improve future versions. You could say that listening is a big part of our development process. What do you see as the main advantages to cultivating this kind of collaborative relationship with JMP?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Gerd:&lt;/STRONG&gt; Having a collaborative relationship with JMP means having better access to JMP related information and JMP staff. With technical issues, it’s always an option to contact the very helpful JMP support team, but when I’m looking for specific advice on a JMP platform, it’s also great to know the respective developers. I’ve asked [our regional] system engineers for hints on occasion. They’re always happy to help if they can – JMP staff in general are very nice people.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Meg:&lt;/STRONG&gt; &lt;STRONG&gt;How has your advocacy for analytics transformation within BIOTRONIK impacted your career trajectory? &amp;nbsp;Do you feel that becoming an advocate for analytics – or change agent – has helped you to gain recognition?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Gerd:&lt;/STRONG&gt; Advocating for analytics was an expectation of my role from the very start. After holding courses on Statistics 101 and design of experiments, colleagues started contacting me about all kinds of statistical applications in engineering. This led me to develop trainings on special topic areas like measurement systems analysis, process capability and reliability. With a growing number of JMP users in the organization, serving as a JMP administrator then became a more substantial part of my job. Last year we implemented our first BIOTRONIK JMP add-ins to standardize and accelerate recurring analyses, which broadened my role to include statistical programming. So over the years I think it’s fair to say that my job description has grown to be multifaceted, and all of it is tied closely to BIOTRONIK’s emphasis on analytics and our usage of JMP.&lt;/P&gt;</description>
      <pubDate>Wed, 12 May 2021 19:55:22 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/BIOTRONIK-s-Gerd-Kopp-talks-advocating-for-analytics-overcoming/ba-p/384654</guid>
      <dc:creator>Meg_Eberle</dc:creator>
      <dc:date>2021-05-12T19:55:22Z</dc:date>
    </item>
    <item>
      <title>Data import, reporting and scheduled publication in JMP Public or JMP Live</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Data-import-reporting-and-scheduled-publication-in-JMP-Public-or/ba-p/382158</link>
      <description>&lt;P&gt;I like when my JMP reports are updated daily and published automatically without having to press any keys. So, to demonstrate what I mean, I will use a case study that should be of interest to most people. Starting in 2020, I wanted to look at the evolution of the pandemic to predict whether or not future lockdowns will happen in specific countries.&lt;/P&gt;
&lt;P&gt;First, I had to look for a good and reliable data source. After researching the different publicly available databases, I chose the &lt;A href="https://coronavirus.jhu.edu/" target="_self"&gt;Johns Hopkins Coronavirus Resource Center&lt;/A&gt;. My next step was to import three different data sources into &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; to analyze daily cases, daily deaths and daily recoveries. I selected Internet Open in the file menu, which made it easy and straightforward to import the data. Below is an example of confirmed COVID-19 cases.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_0-1620114166178.png" style="width: 609px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32564i746261F397A0E89D/image-dimensions/609x212?v=v2" width="609" height="212" role="button" title="eurvan1_0-1620114166178.png" alt="eurvan1_0-1620114166178.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To get this into a script, I had to convert this manual import step for the three data sets, as shown below. Here an example of the data set for the confirmed COVID-19 cases:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Open(
	"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv",
	HTML Table( 1, Column Names( 1 ), Data Starts( 2 ) ));
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The main syntax that I used is the “Open()” function, which opens tables and scripts, as well as data from the internet! This statement is much simpler than the one automatically written to the table.&lt;/P&gt;
&lt;P&gt;Next, the data is imported into JMP:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_1-1620114304957.png" style="width: 688px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32565iA9496122FAF1117F/image-dimensions/688x253?v=v2" width="688" height="253" role="button" title="eurvan1_1-1620114304957.png" alt="eurvan1_1-1620114304957.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now we are ready to take the next steps to get the data ready for analysis.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Stack the dates into one column with generic referenced columns names (since the data get updated daily). The Stack option is a fantastic platform in the Tables menu that enables this task to be performed manually.&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_5-1620114712270.png" style="width: 827px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32569iD9B338E2EB73163D/image-dimensions/827x496?v=v2" width="827" height="496" role="button" title="eurvan1_5-1620114712270.png" alt="eurvan1_5-1620114712270.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;Rename the Columns in Cumulative Cases, Cumulative Deaths and Cumulative Recovery.&lt;/LI&gt;
&lt;LI&gt;Join the three data sets: daily cases, daily deaths and daily recovery.&lt;/LI&gt;
&lt;LI&gt;Change the Date Format into Numeric and Continuous and set Date Format.&lt;/LI&gt;
&lt;LI&gt;Create three new columns using formulas for daily new cases, daily new deaths and daily new recoveries without negative values by using the Dif formula function for each column.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The negative values appeared when the location was switched in the data set (see below), which, of course, does not make any sense. Therefore, I had to create three new columns to replace the negative values with a 0 (by using the Max formula function for each column).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_6-1620114819597.png" style="width: 772px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32570i5B9E668B62EAEAB6/image-dimensions/772x230?v=v2" width="772" height="230" role="button" title="eurvan1_6-1620114819597.png" alt="eurvan1_6-1620114819597.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The final data set is now ready for analysis.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_7-1620114841740.png" style="width: 792px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32571iB51FB172EE225CF5/image-dimensions/792x256?v=v2" width="792" height="256" role="button" title="eurvan1_7-1620114841740.png" alt="eurvan1_7-1620114841740.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To get this automated at this stage, all the different steps for the data preparation have been scripted. And thanks to &lt;A href="https://youtu.be/Xc8hJjsyXWU" target="_blank" rel="noopener"&gt;Action Recording&lt;/A&gt; in the log, which is new in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt;, my life is now so much easier. I can now easily extract the different scripted data manipulation steps from the Action Recording itself and insert them in the final script.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_8-1620114886545.png" style="width: 723px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32572iA011672A9D29122B/image-dimensions/723x567?v=v2" width="723" height="567" role="button" title="eurvan1_8-1620114886545.png" alt="eurvan1_8-1620114886545.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now that I have the script for all the data import and preparation steps, I can use Graph Builder to visualize and analyze the data in a useful manner, as in the example below:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_9-1620114910632.png" style="width: 674px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32573i19FEA37637713F15/image-dimensions/674x352?v=v2" width="674" height="352" role="button" title="eurvan1_9-1620114910632.png" alt="eurvan1_9-1620114910632.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The top half of the graph contains the worldwide cumulative cases, deaths and recoveries. The bottom half has the worldwide daily new cases, deaths and recoveries. I added a Local Data Filter, which allows me to filter on a specific country. I added the graph script to the final script.&lt;/P&gt;
&lt;P&gt;As last step, I want to publish this to JMP Live or JMP Public. Below is the &lt;A href="https://public.jmp.com/packages/HxdxmWDVQQ6kxfqjL1rlX%20 " target="_blank" rel="noopener"&gt;published web report on JMP Public&lt;/A&gt;, the public version of JMP Live:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/packages/HxdxmWDVQQ6kxfqjL1rlX/embed" width="800" height="600" style="margin: 0.8em 0px;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since publishing in JMP 16 has changed quite a bit, here’s how you can use a script to publish from JMP 16 into JMP Public. First a JMP Live connection using desktop JMP needs to be created.&amp;nbsp;In JMP 16, go to File -&amp;gt; Publish -&amp;gt; Manage Connections. Add a new connection. Next, specify the URL and API Key. To get the API Key, generate it from the JMP Public or JMP Live account settings.&lt;/P&gt;
&lt;P&gt;In the JSL, use that connection to publish to JMP Live.&amp;nbsp;Here an example of the script to publish the analysis to JMP Public (where graph1 is the report to be published). I set it public so that everybody can consume the report).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;webreport = New Web Report();
webreport &amp;lt;&amp;lt; Add Report( graph1, title( "Graph1 Title" ) );
use_data = "true";

jmplive = New JMP Live( Connection( "JMP Public" ), Prompt( If Needed ));

jmpliveresult = jmplive &amp;lt;&amp;lt; Publish ( webreport, Public (1));
report = jmpliveresult &amp;lt;&amp;lt; As Scriptable;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since this report is updated daily with new data, the existing reports need to be replaced. &amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;jmpliveresult = jmplive &amp;lt;&amp;lt; Replace( webreport, ID( "website ID" ) );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The website ID is the code after public.jmp.com/packages/ (see below), which enables you to replace the content of the existing report rather than having to create a new report with updated content.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_0-1620394616065.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32663i81868DC931503B9A/image-dimensions/800x141?v=v2" width="800" height="141" role="button" title="eurvan1_0-1620394616065.png" alt="eurvan1_0-1620394616065.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;So far so good! To get this published on a daily basis, I use the Windows Task Scheduler. In the Task Scheduler, I select a Basic Task, create a name for the task, and then have it triggered it so that it publishes the report every day at 8:00 a.m.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_1-1620394656743.png" style="width: 709px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32664i719D75B3E6E23AA9/image-dimensions/709x144?v=v2" width="709" height="144" role="button" title="eurvan1_1-1620394656743.png" alt="eurvan1_1-1620394656743.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The last step is to tell the Task Scheduler which program to open and which action to take. Therefore, I defined the JMP16.exe path and the JSL script to be used.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="eurvan1_2-1620394684984.png" style="width: 778px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32665i48E0E41B8317FC3D/image-dimensions/778x134?v=v2" width="778" height="134" role="button" title="eurvan1_2-1620394684984.png" alt="eurvan1_2-1620394684984.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Et voilà, now my report will be published and updated every day without pressing any keys. You will find &lt;A href="https://public.jmp.com/packages/HxdxmWDVQQ6kxfqjL1rlX" target="_blank" rel="noopener"&gt;the published report at JMP Public&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 07 May 2021 14:20:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Data-import-reporting-and-scheduled-publication-in-JMP-Public-or/ba-p/382158</guid>
      <dc:creator>eurvan1</dc:creator>
      <dc:date>2021-05-07T14:20:27Z</dc:date>
    </item>
    <item>
      <title>JMP 16 new features in Control Chart Builder – part 1</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-16-new-features-in-Control-Chart-Builder-part-1/ba-p/382579</link>
      <description>&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Control-Charts-are-easy-in-JMP-10/ba-p/30100" target="_self"&gt;Control Chart Builder&lt;/A&gt; is an interactive workspace which allows you to monitor process variation. This blog post details the new features introduced for Control Chart Builder in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_self"&gt;JMP 16&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Control Limits Labeled in the Graph&lt;/H3&gt;
&lt;P&gt;We had requests from users for the ability to label the control limits in the graph. This can be useful when the Limits Summary table is not displayed. “Show Limit Labels” has been added to JMP 16. To see an example of this, run the following JSL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Shirts.jmp");
obj=dt&amp;lt;&amp;lt;Run Script("Control Chart Builder");
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens the Shirts sample data table and creates a C Chart. From the red triangle menu next to Control Chart Builder, select Show Limit Labels.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="limitLabelsResults.png" style="width: 585px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32618i529371F1D79AA524/image-size/large?v=v2&amp;amp;px=999" role="button" title="limitLabelsResults.png" alt="limitLabelsResults.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The control limits are now labeled on the right side of the graph.&lt;/P&gt;
&lt;H3&gt;K Sigma option&lt;/H3&gt;
&lt;P&gt;Process monitoring is often plagued by too many false alarms. This can lead to the alarms being ignored. The K Sigma option, introduced in JMP 16, gives users the ability to specify K. You can find this option in preferences. Choose File-&amp;gt;Preferences.&amp;nbsp; From Preference Group, select Platforms.&amp;nbsp; From Platforms, select Control Chart Builder.&amp;nbsp; In the Options section, near the bottom on the left side you will find K Sigma. Check the box and change 3 to 5.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="kSigmaPreference.png" style="width: 941px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32619iF663DE3CBFD5A231/image-size/large?v=v2&amp;amp;px=999" role="button" title="kSigmaPreference.png" alt="kSigmaPreference.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;As an example, run the following JSL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Diameter.jmp");
obj=dt&amp;lt;&amp;lt;Run Script("Control Chart Builder");
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This script opens the Diameter sample data table and creates an XBar and R chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CCBKSigmaResults.png" style="width: 936px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32622i4ED1E6E78F8C6910/image-size/large?v=v2&amp;amp;px=999" role="button" title="CCBKSigmaResults.png" alt="CCBKSigmaResults.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The control limits have been calculated using +/- 5*sigma rather than +/- 3*sigma. This makes the control limits wider and can reduce the number of false alarms.&lt;/P&gt;
&lt;H3&gt;Remove Location Chart and Remove Dispersion Chart have been added to the right-click menu&lt;/H3&gt;
&lt;P&gt;In previous versions of JMP, you could remove location or dispersion charts by right-clicking on the Y axis and choosing the appropriate remove option. Additionally, you could simply grab the Y axis label for the frame of interest and drag it out of the graph. A third method has been added to JMP 16. Now you can right-click in the graph and choose Remove Location Chart or Remove Dispersion Chart. We are committed to providing our customers with options so they can find the method that works best with their workflow.&lt;/P&gt;
&lt;P&gt;As an example, run the following:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Pickles.jmp");
obj=dt&amp;lt;&amp;lt;Control Chart Builder(
	Variables( Y( :Acid ) ),
	Chart( Position( 1 ), Limits( Sigma( "Levey Jennings" ) ) )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens the Pickles data table and creates a Levey Jennings &amp;amp; Moving Range chart. Typically, a dispersion chart is not shown with a Levey Jennings chart. To remove the dispersion chart, right-click in the Moving Range chart and select Remove Dispersion Chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="removeDispersion.png" style="width: 558px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32623i3ECA5C6CFF0CB4C8/image-size/large?v=v2&amp;amp;px=999" role="button" title="removeDispersion.png" alt="removeDispersion.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You are left with only the Levey Jennings chart.&lt;/P&gt;
&lt;H3&gt;Graph Spacing option to control the spacing between charts&lt;/H3&gt;
&lt;P&gt;Users had differing opinions about how much spacing they wanted to see between charts. A Graph Spacing option has been added to JMP 16.&lt;/P&gt;
&lt;P&gt;For an example, run the following JSL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Diameter.jmp");
obj=dt&amp;lt;&amp;lt;Run Script("Control Chart Builder");
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This JSL opens the Diameter sample data table and creates an XBar and R chart. From the red triangle next to Control Chart Builder, select Graph Spacing. In the dialog, change the value from 2 to 5 and click OK.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="thickerLine.png" style="width: 584px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32625i55A0CA73668FAB7B/image-size/large?v=v2&amp;amp;px=999" role="button" title="thickerLine.png" alt="thickerLine.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice that the line separating the location chart from the dispersion chart is thicker. This option is also available in Control Chart Builder preferences.&lt;/P&gt;
&lt;H3&gt;Ability to create a Levey Jennings chart with more than 1 observation per subgroup&lt;/H3&gt;
&lt;P&gt;Previous versions of JMP did not allow a Levey Jennings chart if there was more than one observation per subgroup in Control Chart Builder. This functionality has been added in JMP 16.&lt;/P&gt;
&lt;P&gt;As an example, run the following JSL to open the Diameter sample data table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Diameter.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;Levey Jennings Control Chart. Notice that a subgroup role has been added to this dialog.&amp;nbsp; Specify DIAMETER as Y. Specify DAY as Subgroup.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="leveyJenningsDialog.png" style="width: 391px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32626iE39A6B5B104B38DA/image-size/large?v=v2&amp;amp;px=999" role="button" title="leveyJenningsDialog.png" alt="leveyJenningsDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK. A Levey Jennings Chart is created.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LeveyJenningsResults.png" style="width: 582px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32627i2C5C846FD0819BA6/image-size/large?v=v2&amp;amp;px=999" role="button" title="LeveyJenningsResults.png" alt="LeveyJenningsResults.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This blog post details the following new features for Control Chart Builder in JMP 16:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Show Limit Labels&lt;/LI&gt;
&lt;LI&gt;K Sigma&lt;/LI&gt;
&lt;LI&gt;Remove Location Chart and Remove Dispersion Chart right-click options&lt;/LI&gt;
&lt;LI&gt;Graph Spacing&lt;/LI&gt;
&lt;LI&gt;Subgroup role for Levey Jennings charts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Part 2 of this blog series will be coming soon in which I cover JMP 16 new features for tests and alarms in Control Chart Builder.&lt;/P&gt;</description>
      <pubDate>Thu, 13 May 2021 19:41:54 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-16-new-features-in-Control-Chart-Builder-part-1/ba-p/382579</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-05-13T19:41:54Z</dc:date>
    </item>
    <item>
      <title>New features for Distribution in JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-features-for-Distribution-in-JMP-16/ba-p/382244</link>
      <description>&lt;P&gt;The Distribution platform can be used to explore the distribution of a single variable. This is a rich platform that allows many different visuals, statistics, and tests on variables. This blog post details the new features to the Distribution platform in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Student's&amp;nbsp;&lt;EM&gt;t&lt;/EM&gt; Distribution&lt;/H3&gt;
&lt;P&gt;The &lt;A href="https://www.jmp.com/en_us/statistics-knowledge-portal/t-test/t-distribution.html" target="_self"&gt;Student’s &lt;EM&gt;t&lt;/EM&gt; distribution&lt;/A&gt; has been added to the list of available continuous distributions that can be fit to variables. The Student’s &lt;EM&gt;t&lt;/EM&gt; distribution is a robust option that spans the space between a normal distribution and a Cauchy distribution. As the degrees of freedom in the Student’s &lt;EM&gt;t&lt;/EM&gt; distribution approach infinity, the distribution is equivalent to the normal. When the degrees of freedom in the Student’s &lt;EM&gt;t&lt;/EM&gt; distribution equals 1, the distribution is equivalent to the Cauchy. The default behavior is to estimate the degrees of freedom for the Student's&amp;nbsp;&lt;EM&gt;t&lt;/EM&gt; distribution. As an alternative, you can choose to use the Fix Parameters option to specify a particular DF (degrees of freedom).&lt;/P&gt;
&lt;P&gt;As an example, run the following JSL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Body Fat.jmp");
obj=dt&amp;lt;&amp;lt;Distribution( Continuous Distribution( Column( :"Neck circumference (cm)"n ) ) );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens the Body Fat sample data table and performs a distribution analysis on Neck circumference (cm). From the red triangle next to Neck circumference (cm), select Continuous Fit-&amp;gt;Fit Student’s t.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="studentst.png" style="width: 435px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32580i23E8A40A1A341562/image-size/large?v=v2&amp;amp;px=999" role="button" title="studentst.png" alt="studentst.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="studentstresults.png" style="width: 459px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32581iCF0986949A467085/image-size/large?v=v2&amp;amp;px=999" role="button" title="studentstresults.png" alt="studentstresults.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Better broadcast functionality for prediction intervals, tolerance intervals, and custom quantiles&lt;/H3&gt;
&lt;P&gt;In previous versions when &lt;A href="https://www.jmp.com/en_us/whitepapers/jmp/statistical-intervals.html" target="_self"&gt;prediction intervals&lt;/A&gt;, &lt;A href="https://www.jmp.com/en_us/whitepapers/jmp/statistical-intervals.html" target="_self"&gt;tolerance intervals&lt;/A&gt;, and custom quantiles were broadcast across responses and by groups, you would get multiple dialogs for every response and grouping.&amp;nbsp; Beginning with JMP 16, you get a single dialog that applies to all groups.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;As an example, run the following code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Cities.jmp");
obj=dt&amp;lt;&amp;lt;Distribution(
	Continuous Distribution( Column( :POP ) ),
	Continuous Distribution( Column( :OZONE ) ),
	By( :Region )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens Cities.jmp. It performs a distribution analysis for POP and OZONE by Region. Hold down the Ctrl key while clicking on the red triangle next to POP and select Prediction Interval. Click OK. In previous versions of JMP, you would have been presented with 12 dialogs (one for each response and by level combination). You would have had to click OK on each dialog. Now, the single dialog applies to all 12 combinations.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="predictionInterval.png" style="width: 683px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32582i2806D323FC4474D6/image-size/large?v=v2&amp;amp;px=999" role="button" title="predictionInterval.png" alt="predictionInterval.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In addition to prediction intervals, this functionality was added to tolerance intervals and custom quantiles.&lt;/P&gt;
&lt;H3&gt;Show Within Capability option and preference&lt;/H3&gt;
&lt;P&gt;Users requested the ability to obtain a capability analysis in Distribution that by default does not show the Within Sigma Capability report. In JMP 16, a Show Within Capability check box was added to the Process Capability dialog and a Show Within Capability option was added to Distribution preferences.&lt;/P&gt;
&lt;P&gt;To see an example, run the following code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Cities.jmp");
obj=dt&amp;lt;&amp;lt;Distribution(
	Continuous Distribution(
		Column( :OZONE ),
		Fit Normal
	)
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This code opens the Cities sample data table and fits a normal distribution to OZONE. From the red triangle next to Fitted Normal Distribution, choose Process Capability.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ProcessCapabilityDialog.png" style="width: 327px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32585iF8CD50F405C19438/image-size/large?v=v2&amp;amp;px=999" role="button" title="ProcessCapabilityDialog.png" alt="ProcessCapabilityDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Enter 0.075 for LSL.&amp;nbsp; Enter 0.15 for Target.&amp;nbsp; Enter 0.25 for USL. Click on the open/closure icon next to Process Capability Options. Uncheck the box for Show Within Capability. Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nowithin.png" style="width: 653px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/32587i18B57D90CE351851/image-size/large?v=v2&amp;amp;px=999" role="button" title="nowithin.png" alt="nowithin.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Capability analysis is added to the report window, but the Within Sigma Capability section of the report is not shown.&lt;/P&gt;
&lt;P&gt;JMP 16 introduced three main new features for the Distribution platform:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The Student’s &lt;EM&gt;t&lt;/EM&gt; distribution.&lt;/LI&gt;
&lt;LI&gt;Better broadcast functionality for prediction intervals, tolerance intervals, and custom quantiles.&lt;/LI&gt;
&lt;LI&gt;Options to get a capability analysis with no within sigma capability statistics by default.&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Thu, 13 May 2021 19:43:54 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-features-for-Distribution-in-JMP-16/ba-p/382244</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2021-05-13T19:43:54Z</dc:date>
    </item>
    <item>
      <title>Deprecating the Name() parser directive in JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Deprecating-the-Name-parser-directive-in-JMP-16/ba-p/374401</link>
      <description>&lt;P&gt;Beginning in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt;, JMP ceases to promote the Name() parser directive commonly used to reference variable names that break typical syntax rules for &lt;A href="https://www.jmp.com/support/help/en/16.0/?os=win&amp;amp;source=application&amp;amp;utm_source=helpmenu&amp;amp;utm_medium=application#page/jmp/names.shtml" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Names&lt;/SPAN&gt;&lt;/A&gt; in JMP.&lt;/P&gt;
&lt;P&gt;This change comes in response to many customer complaints that the syntax, use cases, and functionality for the Name() parser directive was confusing.&lt;/P&gt;
&lt;P&gt;Instead, &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; will advocate for the use of a new syntax form with the name quoted as a string and followed by the character “n”.&lt;/P&gt;
&lt;P&gt;Here are a couple of examples of variable names and column names with illegal characters and how they are referenced with the old Name() parser directive compared to the new syntax:&lt;/P&gt;
&lt;H3&gt;Old:&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Name( "taxable income( 2011 )" ) = 456000;
tax = .25;
Print( tax * Name( "taxable income( 2011 )") );
//114000
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;New:&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;"taxable income( 2011 )"n = 456000;
tax = .25;
Print( tax * "taxable income( 2011 )"n) ;
//114000
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;Old:&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open("$SAMPLE_DATA/Body Fat.jmp");
dt:Name("Age(years)") &amp;lt;&amp;lt; Set Modeling Type(Ordinal);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;New:&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open("$SAMPLE_DATA/Body Fat.jmp");
dt:"Age(years)"n &amp;lt;&amp;lt; Set Modeling Type(Ordinal);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;To clarify any confusion, this new syntax was added to JMP a few releases ago and, if you prefer, you can still use the classic Name() parser directive for the time being. However, since Name() is being deprecated, it will &lt;EM&gt;eventually &lt;/EM&gt;be removed in a future version of JMP and no longer recognized. In JMP 16, the new syntax is documented and used in scripts generated by JMP.&lt;/P&gt;
&lt;P&gt;Keep in mind that, in most cases, it may likely be easier to use functions like Column() and As Column() to reference data table columns as strings, but the "colName"n syntax is a great option for variable names that break the typical syntax rules.&lt;/P&gt;
&lt;H3&gt;Examples using Column() and As Column() to reference “Age(years)”:&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt = Open("$SAMPLE_DATA/Body Fat.jmp");

//Change the modeling type of "Age(years)" column
Column(dt,"Age(years)") &amp;lt;&amp;lt; Set Modeling Type(Ordinal);

//Add 10 years to each age
For Each Row(dt,
	age10 = As Column("Age(years)") + 10;
	Show(age10);
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Please reach out to &lt;A href="https://www.jmp.com/en_us/support/technical-support-services.html" target="_blank" rel="noopener"&gt;JMP Technical Support&lt;/A&gt; if you have any questions or concerns!&lt;/P&gt;</description>
      <pubDate>Tue, 06 Apr 2021 19:48:17 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Deprecating-the-Name-parser-directive-in-JMP-16/ba-p/374401</guid>
      <dc:creator>nickholmes13</dc:creator>
      <dc:date>2021-04-06T19:48:17Z</dc:date>
    </item>
    <item>
      <title>Hover labels: Understanding the extensions framework</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Hover-labels-Understanding-the-extensions-framework/ba-p/368238</link>
      <description>&lt;P&gt;In a previous &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Hover-Labels-Codeless-customizations/ba-p/352681" target="_blank" rel="noopener"&gt;post&lt;/A&gt;, you learned about graphlet presets and the Paste Graphlet command. We showed you how they support context-aware, clickable visualization thumbnails in hover labels. These commands implement the "porcelain" aspect of the JMP 15 hover labels extensions feature, providing a user-friendly interface that doesn’t require any coding skills.&lt;/P&gt;
&lt;P&gt;In this post, you’ll get a better look at the underlying "plumbing" layer that powers the porcelain layer. This layer is designed as a framework that can also be accessed directly by the user, allowing the implementation of requirements that aren’t covered by the porcelain features.&lt;/P&gt;
&lt;H3&gt;The hover label extensions framework&lt;/H3&gt;
&lt;P&gt;A framework is a combination of basic services and extension points. From the point of view of the framework, presets and custom graphlets are identical, so the only difference is that &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; provides the preset definitions as a convenience to users.&lt;/P&gt;
&lt;P&gt;At the framework level, all graphlets – including presets – use the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels-using-graphlets.shtml" target="_blank" rel="noopener"&gt;Set Graphlet&lt;/A&gt; command, but each preset initializes the framework with a different set of arguments. These arguments include JSL script fragments, later used as callbacks. The framework evaluates these callbacks in response to user interactions, such as hovering over a visual element or the clicking on a hover label thumbnail.&lt;/P&gt;
&lt;P&gt;Callback evaluation happens inside an &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/work-with-the-hover-label-execution-context.shtml" target="_blank" rel="noopener"&gt;Hover Label Execution Context&lt;/A&gt; (HLEC), which captures contextual information about the underlying visual element. Callbacks can take advantage of this contextual information to implement dynamic behavior. Take, for example, the Histogram preset. After looking at the context to find the baseline visualization Y role assignment, it then reuses that column for its own Y role assignment.&lt;/P&gt;
&lt;P&gt;Other entry points to the hover label extensions framework include &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels.shtml" target="_blank" rel="noopener"&gt;Paste Graphlet&lt;/A&gt; (a wrapper for Set Graphlet), &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-rich-text-to-hover-labels-using-textlets.shtml" target="_blank" rel="noopener"&gt;Set Textlet&lt;/A&gt;, and &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/update-hover-label-grid-entries.shtml" target="_blank" rel="noopener"&gt;Set Gridlet&lt;/A&gt;. In this post, we’ll use the Set Graphlet command as an example, but the same principles apply to the others as well.&lt;/P&gt;
&lt;P&gt;The best way to create custom graphlets is to use the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/edit-hover-labels.shtml" target="_blank" rel="noopener"&gt;Hover Label Editor&lt;/A&gt; dialogue. You can also use the Hover Label Editor to inspect how a graphlet preset is defined. Preset definitions provide great examples of how to use the framework capabilities.&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-center" image-alt="LisaG_0-1615904589430.png" style="width: 899px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31268iFC4E057C2C13DD4E/image-dimensions/899x674?v=v2" width="899" height="674" role="button" title="LisaG_0-1615904589430.png" alt="LisaG_0-1615904589430.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Graphlet callbacks&lt;/H3&gt;
&lt;P&gt;The Hover Label Editor Graphlet panel exposes a few script arguments, the most important ones being Picture and Click. The framework will call them at runtime in response to the following events:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Hovering:&lt;/STRONG&gt; When the user positions the mouse pointer over a visual element for a short period of time, like when the user pauses the mouse over a bar in a bar chart, &amp;nbsp;the Picture script fragment is executed. Doing so results in producing either a PictureBox (a &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/display-functions.shtml" target="_blank" rel="noopener"&gt;display box&lt;/A&gt; that contains a graphics picture object) or a &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/display-trees.shtml" target="_blank" rel="noopener"&gt;display tree&lt;/A&gt; that contains a PictureBox. If the script calls for the execution of a Platform, it will be launched inside an invisible window. The framework will then traverse the display tree of the result and then capture and scale down a screenshot of the first PictureBox encountered. That image becomes the thumbnail displayed inside the hover label.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Clicking:&lt;/STRONG&gt; When the user left-clicks on the hover label graphlet thumbnail, the optional Click argument is triggered. If it’s not present then the Picture script is reused, but the execution of a contained Platform results in a visible window. This is how presets launch their visualizations.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The Click callback can execute arbitrary JSL scripts. For example, it can open web pages, make REST calls, load files from disk and update tables. It allows integration with external data, systems, and other advanced scenarios.&lt;/P&gt;
&lt;P&gt;As mentioned before, the evaluation of callbacks happens inside execution contexts, which have two components:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A Local Data Filter that subsets the rows to match the visual element data.&lt;/LI&gt;
&lt;LI&gt;A Local Namespace that captures the visual element attributes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Local Data Filter&lt;/H3&gt;
&lt;P&gt;Each visual element in a graph corresponds to a subset of the original data. For example, let’s look at a bar chart showing the average of students’ height by sex. The first bar corresponds to the female students; the second one is for the males. This implicit grouping happens during the definition of a visualization.&lt;/P&gt;
&lt;P&gt;The framework makes grouping explicit through an equivalent &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/local-data-filter.shtml" target="_blank" rel="noopener"&gt;Local Data Filter&lt;/A&gt; (LDF), which is used to restrict the data table rows visible during the execution of the callback. The LDF definition is based on:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The baseline visualization graph type.&lt;/LI&gt;
&lt;LI&gt;The columns assigned to its grouping roles (X, Group X/Y, Overlay, etc.).&lt;/LI&gt;
&lt;LI&gt;The values associated with these columns.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In the example below, the baseline graph is a small multiples bar chart. The framework maps it to an LDF based on its two grouping variables:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The one assigned to the X role (age).&lt;/LI&gt;
&lt;LI&gt;The one assigned to Group Y (sex).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Note how the hovered bar and the panel that contains the chart generate the filter values.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_1-1615904589440.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31269iA76060479A2A9F02/image-size/large?v=v2&amp;amp;px=999" role="button" title="LisaG_1-1615904589440.png" alt="LisaG_1-1615904589440.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Additional control over column inclusion is possible through the &lt;A href="https://www.jmp.com/support/help/en/15.2/#page/jmp/add-graphs-or-images-to-hover-labels.shtml" target="_blank" rel="noopener"&gt;Skip Filters&lt;/A&gt; attributes. While it is rarely necessary, it can be useful if you want to display more data than is usually associated with the underlying visual element.&lt;/P&gt;
&lt;P&gt;The core mechanism behind &lt;A href="https://community.jmp.com/t5/Tutorials/Creating-Custom-Drill-Down-Graphs-to-Enhance-Interactive/ta-p/274781" target="_blank" rel="noopener"&gt;drill-downs&lt;/A&gt; is the ability to launch Platforms with context-based LDFs in response to user interactions.&lt;/P&gt;
&lt;H3&gt;Local namespace&lt;/H3&gt;
&lt;P&gt;The second component of the HLEC is a &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/local-namespaces.shtml" target="_blank" rel="noopener"&gt;local namespace&lt;/A&gt;. Its main purpose is to expose context information to the graphlet, which allows the graphlet to exhibit dynamic, context-aware behavior. The framework wraps each graphlet callback in a local namespace before executing it.&lt;/P&gt;
&lt;P&gt;The graphlet local namespace is populated by the framework with local variables. These &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/work-with-the-hover-label-execution-context.shtml" target="_blank" rel="noopener"&gt;context variables&lt;/A&gt; follow a naming convention, meaning their names must always start with an underscore. They capture information from different sources associated with the current execution context:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hovered visual element type (bar, marker, etc.).&lt;/LI&gt;
&lt;LI&gt;Index of the first row of the associated data.&lt;/LI&gt;
&lt;LI&gt;Number of observations in the associated data.&lt;/LI&gt;
&lt;LI&gt;Hover label grid entries (one variable for each entry).&lt;/LI&gt;
&lt;LI&gt;Type of callback (Picture, Click, etc.).&lt;/LI&gt;
&lt;LI&gt;LDF where clause.&lt;/LI&gt;
&lt;LI&gt;Drill-down levels count.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;An easy way &amp;nbsp;to check a new graphlet’s values when debugging it is to use the Textlet context preset, which adds the values as text to the hover label itself, as seen below:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_2-1615904589448.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31270i91FC3139F201469D/image-size/large?v=v2&amp;amp;px=999" role="button" title="LisaG_2-1615904589448.png" alt="LisaG_2-1615904589448.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Putting it all together&lt;/H3&gt;
&lt;P&gt;The following diagram shows how the different parts of the framework come together in the execution of a graphlet preset. In a custom graphlet, the user provides the graph template using the Picture script argument.&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-center" image-alt="LisaG_3-1615904589455.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31271i31FF66BFB34B56CE/image-size/large?v=v2&amp;amp;px=999" role="button" title="LisaG_3-1615904589455.png" alt="LisaG_3-1615904589455.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First, the framework captures a graph template and other arguments at configuration time. Later, in response to user interactions, it creates the filter and namespace that are part of the HLEC. It instantiates the template inside the HLEC to generate the hover label thumbnail image. If the user clicks on that image, it launches the associated platform on its own window.&lt;/P&gt;
&lt;H3&gt;A custom graphlet example&lt;/H3&gt;
&lt;P&gt;Now that you understand the mechanics, here’s an example of how accessing the underlying graphlet framework helped a user solve a real problem.&lt;/P&gt;
&lt;P&gt;Not too long ago, a user asked a question here in the &lt;A href="https://community.jmp.com/t5/Discussions/Hover-label/td-p/287358" target="_blank" rel="noopener"&gt;JMP User Community&lt;/A&gt;. She had a folder with image files (specifically, high-resolution pictures) of her experiments. She wanted to display the image associated with an experiment in the hover label, but the images were too large to store in her JMP tables. Was it possible to load them from the disk on demand?&lt;/P&gt;
&lt;P&gt;There were a few obstacles to making this happen. It didn't align with any of the existing presets, it wasn't a good fit for Paste Graphlet since it required dynamic behavior, and the filename for the displayed image had to calculated on demand.&lt;/P&gt;
&lt;P&gt;The solution was to create a custom graphlet by extending the framework with callbacks based on JSL file primitives.&lt;/P&gt;
&lt;P&gt;The principles of that solution are shown below in an example based on the Iris dataset. The critical part of this example is showing how the image can be loaded directly from the disk. The filename is based on one of the HLEC local namespace variables. As a bonus, you can see how to open a related web page in response to the user clicking on the displayed image.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Set Graphlet(
	// Value from hover label grid entry (labeled column)
	Picture(
		Picture Box( Open( img_dir || local:_Species || ".jpg", "jpg" ) )                                                                                       
	), 
	// Value from data table using column reference for visualized row
	Click(
		Web( "https://en.wikipedia.org/wiki/Iris_" || Column( "Species" )[local:_firstRow] )
	)
)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_4-1615904589466.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31272i2BEC499A6B52CDAA/image-size/large?v=v2&amp;amp;px=999" role="button" title="LisaG_4-1615904589466.png" alt="LisaG_4-1615904589466.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;While we hope that you are always able to use presets and paste graphlets to implement the majority of your requirements, we realize that’s not always possible. By using the framework, you can create your own custom hover label extensions whenever you have a special need.&lt;/P&gt;
&lt;P&gt;If you have questions, want to share your creations, or just see what other users are coming up with, please join us here in the &lt;A href="link:https://community.jmp.com/t5/tag/graphlets/tg-p" target="_blank" rel="noopener"&gt;JMP User Community&lt;/A&gt;. We look forward to seeing your next cool graphlet!&lt;/P&gt;</description>
      <pubDate>Tue, 06 Apr 2021 18:44:11 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Hover-labels-Understanding-the-extensions-framework/ba-p/368238</guid>
      <dc:creator>LisaG</dc:creator>
      <dc:date>2021-04-06T18:44:11Z</dc:date>
    </item>
    <item>
      <title>New features in the Column Switcher for JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-features-in-the-Column-Switcher-for-JMP-16/ba-p/365930</link>
      <description>&lt;P&gt;The Column Switcher lets you quickly analyze different variables without having to re-create your analysis. &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt; includes several usability and functional improvements to the Column Switcher. Below are some of the highlights.&lt;/P&gt;
&lt;H3&gt;Improved Launcher Dialog&lt;/H3&gt;
&lt;P&gt;There is now a single dialog for configuring the Column Switcher. The dialog includes two lists.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="paul_vezzetti_0-1615153933225.png" style="width: 238px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31071iCC3EB0B4A81C81B7/image-dimensions/238x433?v=v2" width="238" height="433" role="button" title="paul_vezzetti_0-1615153933225.png" alt="paul_vezzetti_0-1615153933225.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The top list contains the columns used in the platform which are available for switching. Only one column in this list can be selected at a time. This is called the initial column.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The bottom list contains the columns from the data table which can be switched into the platform. These are the replacement columns and this list supports multiple selections. The bottom list is dynamic as the contents might change depending on the initial column selected. Both lists support various filtering and sorting operations under the red triangle menu.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are additional options available under the Options outline. The Title allows you to set the title for the outline around the Column Switcher. The Column Switcher can also be launched in the closed position by checking the Close Outline checkbox.&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Column Switcher Improvements&lt;/H3&gt;
&lt;P&gt;If you forgot a column when creating the Column Switcher or added a new column to the data table after creating the Column Switcher, you can now add (or remove) columns from the column switcher list after creation. There are add (+) and remove (-) buttons next to the Column Switcher list which launch separate dialogs to manipulate the column list. The add dialog will only allow new columns which are suitable for the current platform and switch column.&lt;/P&gt;
&lt;H3&gt;Animation Looping&lt;/H3&gt;
&lt;P&gt;There is a new button shown below in the animation controls which controls whether the animation continuously loops over the available replacement column or if it stops when it gets to the bottom of the list. By default, looping is enabled. However, toggling the button will disable the looping. This can be useful if you are recording the animation and you only want to capture one pass through the columns.&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="ColumnSwitcherLoopControl.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31359i7C4CDD6C12506FBA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ColumnSwitcherLoopControl.png" alt="ColumnSwitcherLoopControl.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;H3&gt;Retaining Axis Settings&lt;/H3&gt;
&lt;P&gt;By default, most platforms reset the axes when switching columns. This makes sense if the data on the axis is significantly different between columns and you want to see the full extent of the data for each column. However, there are times when you want the axis range (and potentially other options like reference lines) to remain so that you can compare the columns in the same context.There is a new setting under the red triangle menu called Retain Axis Settings. This is &lt;EM&gt;off&lt;/EM&gt; by default. If turned on and there is some customization of the axis such as setting the scale or adding a reference line, then those settings will not be lost when switching between columns.&lt;/P&gt;
&lt;P&gt;Here is an example where the axis range and reference line are locked while the Column Switcher is running. This allows the user to see how the data changes over time without losing the context on the y-axis.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6237803283001" width="934" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/6067aa49-2ecb-4b60-9edf-54376e8e3554/main/160x90/19s600ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Linking Multiple Platforms to the same Column Switcher&lt;/H3&gt;
&lt;P&gt;This is a more advanced feature that is only supported currently through JSL and in the Dashboard Builder. It allows a single Column Switcher to control multiple platforms. This creates some complexity as all of the platforms must contain the same initial switching column and must support the list of replacement columns.&lt;/P&gt;
&lt;P&gt;The process of linking a platform to an existing Column Switcher is relatively easy. You just need a reference to a Column Switcher and a reference to a platform and then use the Link Platform command. The platforms don’t need to be in the same window although it is often easier to track the interaction if they are.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Example Linking Two Platforms in Separate Windows:&lt;/EM&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// Open the data table
dt = Open( "$SAMPLE_DATA/Process Measurements.jmp" );
// Create a distribution platform
dist = dt &amp;lt;&amp;lt; Distribution(
	Continuous Distribution(
		Column( :Process 1 ),
		Always use column properties( 1 ),
		Process Capability( 0 )
	),
	Histograms Only
);
// Add a column switcher to the distribution
cs = dist &amp;lt;&amp;lt; Column Switcher(
	:Process 1,
	{:Process 1, :Process 2, :Process 3, :Process 4, :Process 5, :Process 6,
	:Process 7}
);
// Create a Fit Y by X platform
biv = Bivariate( Y( :Process 1 ), X( :Process 2 ) );
// Link the platform to the column switcher
cs &amp;lt;&amp;lt; Link Platform(biv);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;Example Combining the Platforms into a Single Window:&lt;/EM&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// Open the data table
dt = Open( "$SAMPLE_DATA/Process Measurements.jmp" );
// Create a new window to hold the platforms and column switcher
New Window( "Multiple Platforms with one Column Switcher",
	H List Box(
		V List Box (
			dist = dt &amp;lt;&amp;lt; Distribution( 
				Continuous Distribution(
					Column( :Process 1 ), 
					Always use column properties( 1 ),
					Process Capability( 0 )
				),
				Histograms Only),
			biv = Bivariate( Y( :Process 1 ), X( :Process 2 ) )
		),
		cs = dt &amp;lt;&amp;lt; Column Switcher( 
		:Process 1,
		{:Process 1, :Process 2, :Process 3, :Process 4, :Process 5, :Process 6,
		:Process 7} )
	)
);
cs &amp;lt;&amp;lt; Link Platform( dist );
cs &amp;lt;&amp;lt; Link Platform( biv );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I've attached an example of a linked Column Switcher in a dashboard to this article. This example uses the Process Measurements.jmp data file from the Samples directory.&lt;/P&gt;
&lt;H3&gt;Preferences&lt;/H3&gt;
&lt;P&gt;There are now Preferences that can be set for the Column Switcher. These are intended to make it easier to create new Column Switchers.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Always include switch column in replacement list&lt;/EM&gt;&lt;BR /&gt;A common mistake when creating a Column Switcher is to forget to include the initial switch column in the list of replacement columns. As a result, once you switch away from the initial configuration you can’t get back because that column is not in the list. With the improvements in JMP 16, you could use the Add button to add the initial column to the list. However, this is extra work. Also, the launch dialog now prompts you if you don’t include the switch column in the replacement list so this is less likely to happen. This preference makes it even easier since it will automatically include the initial column in the replacement list even if you don’t include it and it won’t prompt you to add it during the launch.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Retain axis settings when switching&lt;/EM&gt;&lt;BR /&gt;This preference changes the default for Retain Axis Settings from OFF to ON.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Run Animation in loop&lt;/EM&gt;&lt;BR /&gt;This changes the default for the animation loop button.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Default Outline Title&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;By default, the outline title for the Column Switcher is “Column Switcher”. This can be changed during the launch in the Options section. The preference can be used to change it for all new switchers.&lt;/P&gt;
&lt;P&gt;These are some of the highlights of the new features in Column Switcher. There have also been numerous bug fixes and other improvements.&lt;/P&gt;</description>
      <pubDate>Fri, 19 Mar 2021 19:31:29 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-features-in-the-Column-Switcher-for-JMP-16/ba-p/365930</guid>
      <dc:creator>paul_vezzetti</dc:creator>
      <dc:date>2021-03-19T19:31:29Z</dc:date>
    </item>
    <item>
      <title>The Enhanced Log in JMP 16: This changes everything</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-Enhanced-Log-in-JMP-16-This-changes-everything/ba-p/367555</link>
      <description>&lt;P&gt;The JMP log has received a major upgrade in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt;. If you’ve never had a reason to look at the JMP log before, you do now: The new Enhanced Log functions as a living record of your current JMP session.&lt;/P&gt;
&lt;P&gt;Here’s how it works. Launch &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; and go about your point-and-click business as usual: Import data, clean it up, examine distributions, make graphs, do some analysis. When you’re done, open the Enhanced Log from the View menu. You’ll find a replayable, archivable record of your work. Let’s look at an example:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Jordan_Hiller_0-1615569640906.png" style="width: 837px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/31209i88C4EDE46768B1B1/image-dimensions/837x740?v=v2" width="837" height="740" role="button" title="Jordan_Hiller_0-1615569640906.png" alt="Jordan_Hiller_0-1615569640906.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The Enhanced Log window is divided into two panels. The top panel has a list of actions that were performed; the bottom panel contains the corresponding JSL code.&lt;/LI&gt;
&lt;LI&gt;Each action captured has information about the origin (usually what data table the action was performed on) and the result. There’s also a timestamp.&lt;/LI&gt;
&lt;LI&gt;Different data tables and report windows are color-coded to aid with navigation. Click on one of the color-coded blocks to bring forward the corresponding window.&lt;/LI&gt;
&lt;LI&gt;Search for specific steps using the Filter box at the top of the Enhanced Log window.&lt;/LI&gt;
&lt;LI&gt;Any superfluous actions can be deleted if desired: Click on the row to select it, then choose “Clear” from the red triangle menu or right-click context menu.&lt;/LI&gt;
&lt;LI&gt;Many JMP platforms will generate two recorded actions: one capturing the platform launch dialog choices, and a second snapshot generated automatically when the resulting report is closed. The snapshot helpfully captures any details that were added to the report later from red-triangle options.&lt;/LI&gt;
&lt;LI&gt;To save the actions as a JSL script, choose “Save Script &amp;gt; To Script Window” in the red triangle menu.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The Enhanced Log is something we'll be &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-new-thing-I-m-going-to-show-people-when-they-start-scripting/ba-p/284724" target="_blank" rel="noopener"&gt;showing everyone who starts scripting in JMP&lt;/A&gt;&amp;nbsp;.&lt;/P&gt;
&lt;H3&gt;Why is this such a game changer? Two main reasons:&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Documentation:&lt;/STRONG&gt; By capturing the code corresponding to the most important point-and-click actions, the log serves as a record of your work. Save the log code to document your work.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Repeatability&lt;/STRONG&gt;: When your data is updated with new values, you can replay the previous data cleaning and analysis steps quickly and accurately.&lt;/P&gt;
&lt;P&gt;We hope you’ll explore the Enhanced Log in &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-new-thing-I-m-going-to-show-people-when-they-start-scripting/ba-p/284724" target="_blank"&gt;JMP 16&lt;/A&gt;, and let us know what you think!&lt;/P&gt;</description>
      <pubDate>Thu, 18 Mar 2021 19:23:34 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-Enhanced-Log-in-JMP-16-This-changes-everything/ba-p/367555</guid>
      <dc:creator>Jordan_Hiller</dc:creator>
      <dc:date>2021-03-18T19:23:34Z</dc:date>
    </item>
    <item>
      <title>Discovery Summit Online: The most interactive conference you'll find</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Discovery-Summit-Online-The-most-interactive-conference-you-ll/ba-p/364081</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="virtual DSE space.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30884i33E24050FF4B044C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="virtual DSE space.png" alt="We've built a beautiful virtual conference space so that we can all be together." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;We've built a beautiful virtual conference space so that we can all be together.&lt;/span&gt;&lt;/span&gt;This time last year, only a couple of weeks before &lt;A href="https://discoverysummit.jmp/en/2021/europe/home.html" target="_blank" rel="noopener"&gt;Discovery Summit Europe&lt;/A&gt;, a conference we hold annually for &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; users, we had to cancel the in-person event. A global pandemic was here, and we didn’t want to be part of spreading COVID-19.&lt;/P&gt;
&lt;P&gt;We quickly pivoted&amp;nbsp;– scheduling a couple of our plenary speakers and a handful of papers from our user program to present at our first virtual conference. It was not nearly the equivalent of the in-person conference we had planned, but we felt pretty good about doing something in such a short time.&lt;/P&gt;
&lt;P&gt;As soon as we were done with the frenzy of reworking that conference, we had six months to plan for the next one. And now this is our third one.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We have successfully designed a conference that is different from every other virtual conference.&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;The Discovery Summit difference&lt;/H3&gt;
&lt;P&gt;I should give you a little background on Discovery Summit. We like to think of it as the embodiment of the values represented in our software – interactive, highly visual, full of statistics know-how and fun. We bring together the most curious scientists and engineers; the best analytical minds; and JMP staff, developers, testers, and regional experts to spend three or four days immersed in conversations and explorations about how to build a culture of analytics within organizations and methods to solve engineering challenges.&lt;/P&gt;
&lt;P&gt;Of course, like other conferences, there are keynote talks from experts and thought leaders. And we recruit a robust program of presentations from our users and staff. But it doesn’t end there.&lt;/P&gt;
&lt;P&gt;Our attendees regularly call Discovery Summit the best conference they’ve ever attended. What sets Discovery Summit apart? The emphasis on interaction between attendees and with our staff. We want the value from the conference to come not only from the stages, but also from the audience. We plan for plenty of time for questions from the audience in our breakout talks, and we encourage the audience to challenge the speakers with tough problems.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We place demo pedestals prominently, where we station our staff of experts to engage with our users. We give advice on how to use JMP effectively and solicit feedback on how to improve the software to make it even more valuable. These conversations happen in the expo hall where users from various companies and industries can listen in and help each other.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;During lunch and break times, we designate tables with special interest topics where like-minded individuals can meet each other and share stories and advice. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;We plan social hours at the end of each day to give people a chance to relax and get to know each other as people outside of the analytic challenges we’re all trying to solve.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;This adds up to an experience that is unique in the world of conferences. It’s exciting, exhilarating and exhausting, but so worth it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;What is a virtual Discovery Summit?&lt;/H3&gt;
&lt;P&gt;That brings me to what we’ve done to recreate this experience online. You see, we take pride in the atmosphere of our conference. So, we’ve thought hard about how to bring the things we value to a virtual conference.&lt;/P&gt;
&lt;P&gt;We know that you are tired of virtual meetings and watching videos on your computer, so we don’t simply want to be another source of “content” to be consumed. We want the time you spend with us to be interactive and exhilarating. We want you to be an active participant in the conference, not a passive viewer.&lt;/P&gt;
&lt;P&gt;For this reason, we use a conferencing platform that allows us to see and hear each other. We encourage&amp;nbsp;– but don’t require&amp;nbsp;– attendees to turn on their cameras, so you can see who’s “there” and interact with them as if you were physically together. We want you to know that we’re real people. We want to have a human connection with you.&lt;/P&gt;
&lt;P&gt;However, we recognize that some of the content from the conference, specifically the user presentation program, benefits from asynchronous consumption. That is, it is good reference material and meant to be watched at your leisure and when you need it. As such, we have pre-recorded &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Europe-2021/tkb-p/discovery-eu-2021-content" target="_blank" rel="noopener"&gt;those presentations&lt;/A&gt; and made them available two weeks before the conference and beyond. These are stellar presentations that deserve to be watched, re-watched and shared.&lt;/P&gt;
&lt;P&gt;During the four scheduled days of the conference, we put the emphasis on the content that benefits from an audience engaged with each other:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Keynote presentations &lt;/STRONG&gt;that are meant to inspire and put you in the right frame of mind to tackle the challenges you face. For that reason, we deliver these in real-time. You’ve got to show up to hear these speakers. We will open the floor for questions, giving you the &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;chance to challenge the speakers – just like you would in person.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;"Semi-live" presentations&lt;/STRONG&gt; from users and JMP experts, where the recorded presentation is played and the author stands by to answer questions (either in chat or verbally) during and after the presentation. Again, if you want the chance to hear from the speaker directly, you’ve got to show up to participate.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Meet the Developers&lt;/STRONG&gt; with live video and screen sharing gives you the opportunity to get to know our expert staff. Take this time to present them with the challenges you face and get advice from the people who know analytics and JMP the best.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Birds of a Feather sessions&lt;/STRONG&gt; facilitate the happenstance networking that occurs when you bump into a fellow attendee. We host breakout rooms with live video and audio for the most curious, brightest engineers and scientists from many industries and companies to gather based on common interests. Again, this interaction is only available during the conference.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Social hours&lt;/STRONG&gt; are designed to help you unwind after a full day of interaction and learning. Again, the networking opportunities here give you a chance to put a human face with other users and experts in the JMP community.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Finally, we’ve built a beautiful, virtual conference center to help put everyone in the same “place” at the same time. Easily navigate to the plenary sessions or the breakout talks. Find the Birds of a Feather and Meet the Developers sessions just as you would in person. It’s a small touch, but it helps to ground you and let you know you’re not the only person at this virtual conference.&lt;/P&gt;
&lt;P&gt;We know that Discovery Summit is a different kind of conference – and we want you to see that too. &lt;A href="https://discoverysummit.jmp/en/2021/europe/home.html" target="_blank" rel="noopener"&gt;Join us&lt;/A&gt; and experience it for yourself.&lt;/P&gt;</description>
      <pubDate>Tue, 02 Mar 2021 14:32:03 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Discovery-Summit-Online-The-most-interactive-conference-you-ll/ba-p/364081</guid>
      <dc:creator>Jeff_Perkinson</dc:creator>
      <dc:date>2021-03-02T14:32:03Z</dc:date>
    </item>
    <item>
      <title>Sharing is caring: A few reasons to fit structural equation models in JMP Pro 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Sharing-is-caring-A-few-reasons-to-fit-structural-equation/ba-p/357484</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;“There is no delight in owning anything unshared”&lt;/P&gt;
&lt;P&gt;&lt;FONT face="book antiqua,palatino"&gt;&lt;EM&gt;Lucius Annaeus Seneca the Younger, Roman Stoic Philosopher&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;When you’re involved in a really fun project or know a really cool trick, you want to share it with the world…especially when you believe this knowledge will help others. My really fun project and collection of exciting tricks are embodied in the structural equation modeling platform in JMP Pro. Sharing the unique features of our structural equation models (SEM) platform brings me absolute joy! Why? Because I spent countless hours, spanning more than 10 years, fitting SEMs in difficult-to-use software; believe me when I say that I know the many pain points alleviated by the SEM platform in JMP Pro.&lt;/P&gt;
&lt;P&gt;As a statistical software developer, I’ve been privileged with the opportunity to revamp SEM software, to rethink the approach of fitting SEMs and to facilitate the process of doing so. After a little more than two years of development work with an outstanding team, I couldn’t be happier with the outcome! And best of all, we are just getting started.&lt;/P&gt;
&lt;P&gt;I’ve written before about the unique advantages of fitting &lt;A href="http://j.mp/2JB41IP" target="_blank" rel="noopener"&gt;SEMs in JMP Pro 15&lt;/A&gt;, but with the release of JMP Pro 16, there’s a lot more to celebrate:&lt;/P&gt;
&lt;H3&gt;What’s the buzz about?&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Efficiency is everything.&amp;nbsp;&lt;/STRONG&gt;There are major gains in workflow when models are collected in one place. Statistical comparisons, tweaks in specification, and side-by-side comparison of results are just some of the things you can do much more efficiently in JMP Pro, especially when paired with interactive shortcuts. Say goodbye to folders with dozens of individual model output files. Preview some of the time savings you can enjoy in this video.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;LI-VIDEO vid="6235781190001" align="center" size="medium" width="400" height="250" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/8aab8912-5703-4178-9605-be25058883e2/main/160x90/48s773ms/match/image.jpg"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Path Diagram functionality is unparalleled.&lt;/STRONG&gt;&amp;nbsp;If you’re like me, the insights your models unveil are more important than the path diagrams that illustrate them. But JMP’s outstanding path diagrams are likely to make you cherish them just as much because they convey insights like no other! Indeed, I felt compelled to write a whole other blog post (with cool demo videos) just on this topic: &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Can-your-SEM-path-diagrams-do-this/ba-p/357489" target="_blank" rel="noopener"&gt;Can &lt;EM&gt;your&lt;/EM&gt; SEM path diagrams do this?&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PathDiagram_Estimates_Features.png" style="width: 738px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30789iD93930510BDCCA69/image-dimensions/738x452?v=v2" width="738" height="452" role="button" title="PathDiagram_Estimates_Features.png" alt="PathDiagram_Estimates_Features.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Visualizations speak louder than words.&lt;/STRONG&gt; Whether you’re seeking to explain SEM results to students, to stakeholders in your company, or to a funding agency, good visualizations will always help you make your case. The SEM platform in JMP Pro has powerful visualizations peppered around multiple statistics – from residuals to effect profiling to measures of reliability and validity for surveys and tests.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Visualizations_Report.PNG" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30790iA265775A00442C35/image-dimensions/850x475?v=v2" width="850" height="475" role="button" title="Visualizations_Report.PNG" alt="Visualizations_Report.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Alerting you to trouble…before it happens.&lt;/STRONG&gt; After fitting a model, nobody likes reading obscure error messages that require difficult (and time-consuming!) detective work to resolve. The SEM platform in &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Pro&lt;/A&gt; has a dynamic status indicator to alert you – during model specification – to potential trouble down the road, saving you lots of time and headaches. Check out this video for a taste of how we help you avoid common mistakes.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;LI-VIDEO vid="6235809885001" width="864" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/1a2a81a7-1156-4a9e-bcf5-90ca6804a94f/main/160x90/1m3s379ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;So now that I’ve revealed our great collection of tricks, don’t hold back on the delight of sharing them with others! And if you’ve never used our software before, a free introductory &lt;A href="https://www.jmp.com/en_us/events/getting-started-with-jmp/overview.html" target="_blank" rel="noopener"&gt;webinar&lt;/A&gt; will ease the learning curve so you can get started with SEM right away. You can also read a SEM-specific tutorial published in the Structural Equation Modeling journal (coming March 15, 2021), or &lt;A href="https://community.jmp.com/t5/JMP-Blog/Purpose-passion-and-curiosity/ba-p/359716" target="_blank" rel="noopener"&gt;read&lt;/A&gt; about how a professor and CEO enjoys using our SEM platform in his research.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Mar 2021 18:16:44 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Sharing-is-caring-A-few-reasons-to-fit-structural-equation/ba-p/357484</guid>
      <dc:creator>LauraCS</dc:creator>
      <dc:date>2021-03-04T18:16:44Z</dc:date>
    </item>
    <item>
      <title>Can your SEM path diagrams do this?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Can-your-SEM-path-diagrams-do-this/ba-p/357489</link>
      <description>&lt;P&gt;A central feature of structural equation modeling (SEM) is the availability of path diagrams that convey statistical models intuitively. For example, a model can be expressed as a system of linear equations or a path diagram that even a young child can understand:&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-center" image-alt="Candy_Equation_Girl.PNG" style="width: 745px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30125iA3DC2B16396AC346/image-dimensions/745x534?v=v2" width="745" height="534" role="button" title="Candy_Equation_Girl.PNG" alt="Factors that predict the taste of candy expressed as a system of structural equations and as a path diagram." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Factors that predict the taste of candy expressed as a system of structural equations and as a path diagram.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you’re an SEM user, we both know the countless hours you’ve spent drawing and editing path diagrams so you can convey your results to your audiences. If you’re not a current SEM user, then you can avoid the pain of using secondary software to draw those diagrams just right.&lt;/P&gt;
&lt;P data-unlink="true"&gt;The &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Sharing-is-caring-A-few-reasons-to-fit-structural-equation/ba-p/357484" target="_blank" rel="noopener"&gt;SEM platform of JMP Pro 16&lt;/A&gt; has amazing features, including presentation-ready path diagrams that can be copied as vector images to be used in presentations and publications (yes, even this pink candy diagram was created in the SEM platform!). We don’t want you to spend too much time doing customizations; after all, you’re already spending time doing high-level stats! So we’ll get you as far as we can, leaving enough room for you to express your artistry, but only if you so desire.&lt;/P&gt;
&lt;H3&gt;Interactive model specification&lt;/H3&gt;
&lt;P&gt;Path diagrams in the SEM platform are fully interactive, enabling users to specify models directly on the canvas or make changes to previously specified models. All elements are selectable, and context menus unveil options to add latent variables, regressions, covariances, and even set constraints. And if your models are too complex for drawing directly, then you can always check out our list UI to get the best of both worlds: efficiency of specification and visual appeal.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6235685178001" align="center" size="custom" width="582" height="582" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/613d9baf-45c4-4970-9374-554a24d55c95/main/160x90/18s645ms/match/image.jpg"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;It’s simple to convey results&lt;/H3&gt;
&lt;P&gt;Dashed lines, bold lines, transparency…you name it, we take advantage of it all. Arrow characteristics are mapped to effect sizes and statistical significance, making it easy to process model results visually. And if that weren’t enough, dependent variable nodes are shaded according to the proportion of variance explained by their predictors, because a picture is worth a thousand words!&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-center" image-alt="PathDiagram_Estimates_Features.png" style="width: 790px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30759iF2B7F5C4D470EA71/image-dimensions/790x484?v=v2" width="790" height="484" role="button" title="PathDiagram_Estimates_Features.png" alt="PathDiagram_Estimates_Features.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Statistical model = path diagram (really!)&lt;/H3&gt;
&lt;P&gt;There are numerous conventions for drawing path diagrams, and not everyone agrees on which convention is best. RAM notation (stands for reticular action model, McArdle &amp;amp; McDonald, 1984) is my favorite because diagrams depict statistical models with full precision: If you see it, it’s there; if you don’t, it’s not. Alas, it’s not without its disadvantages, as diagrams can easily become cluttered, sometimes to the point where they stop being useful – especially if visualizing the mean structure.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Cluttered_Diagrams.PNG" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30760iD7568E231A8DA722/image-size/large?v=v2&amp;amp;px=999" role="button" title="Cluttered_Diagrams.PNG" alt="Cluttered_Diagrams.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We tackled this issue in the SEM platform by using RAM notation as default while allowing users to hide elements of the diagrams at their discretion (but we’ll let you know if you’ve hidden something important to avoid specification mistakes). This can be useful, for example, when focusing on structural relations between latent variables, or when many covariances obstruct the visualization of regression effects. The cluttered path diagrams above can be improved by hiding the means and loadings.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Clean_Diagram.PNG" style="width: 725px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30761i286272B1C3466F96/image-dimensions/725x556?v=v2" width="725" height="556" role="button" title="Clean_Diagram.PNG" alt="Clean_Diagram.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This video shows how simple it is to clean up your path diagrams to convey results effectively.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6235702341001" align="center" size="custom" width="669" height="669" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/07f134a6-9f91-49ca-94c2-a58fbfd60288/main/160x90/16s650ms/match/image.jpg"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Appearance&lt;/H3&gt;
&lt;P&gt;Often, less is more when it comes to path diagrams, so our default path diagram is clean and simple. However, you may have your own reasons for changing the appearance of path diagrams, and our customize menu allows you to do just that – from node sizes and arrow thickness, to colors and fonts, the choice is yours!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6235712257001" width="669" height="669" size="custom" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/b35cfbdc-25ad-41d2-b455-e575d6a2145c/main/160x90/44s316ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Interactive Layout&lt;/H3&gt;
&lt;P&gt;We don’t want you to feel like you are stuck with our layout choices. You can interact with the path diagram elements and rearrange them to your liking. But we wouldn’t want you to spend too much time on this, so we have options to speed up the process. Check out a few of these in this video.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6235720543001" width="600" height="600" size="custom" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/ce010f68-d603-4809-b229-2503d3b74320/main/160x90/4s616ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;Creating great-looking path diagrams that convey information efficiently is really easy in &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Pro&lt;/A&gt;!&lt;/P&gt;
&lt;H3&gt;References&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;McArdle, J. J., &amp;amp; McDonald, R. P. (1984). Some algebraic properties of the reticular action model for moment structures.&amp;nbsp;&lt;/SPAN&gt;&lt;I&gt;British Journal of Mathematical and Statistical Psychology&lt;/I&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;I&gt;37&lt;/I&gt;&lt;SPAN&gt;(2), 234-251.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Mar 2021 21:33:49 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Can-your-SEM-path-diagrams-do-this/ba-p/357489</guid>
      <dc:creator>LauraCS</dc:creator>
      <dc:date>2021-03-01T21:33:49Z</dc:date>
    </item>
    <item>
      <title>New in JMP 16: Improved covariate handling in DOE</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-in-JMP-16-Improved-covariate-handling-in-DOE/ba-p/361540</link>
      <description>&lt;P&gt;If you happened to catch &lt;A href="https://community.jmp.com/t5/JMP-Blog/What-is-a-covariate-in-design-of-experiments/ba-p/361517" target="_blank" rel="noopener"&gt;my previous blog post&lt;/A&gt;, you will know that I am a big proponent of the use of covariates in the Custom Designer when the need arises. For &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp.html" target="_blank" rel="noopener"&gt;JMP 16&lt;/A&gt;, we have made some improvements to make it easier to use covariates.&lt;/P&gt;
&lt;H3&gt;New Look&lt;/H3&gt;
&lt;P&gt;The first thing you may notice is a new place for covariate specification. Under the Factors outline, there is a special outline labeled “Covariate/Candidate Runs.” The hope is that by bringing it more out into the open, more users will become aware of the ability to use covariates.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p4.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30543iF657979C8BC2208A/image-size/large?v=v2&amp;amp;px=999" role="button" title="cov_p4.png" alt="cov_p4.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We still need a data table to load covariates, so we will use the “Runners Covariates.jmp” data table from sample data here. This table has a list of 100 runners who are candidates for an experiment on running shoe wear (first 10 shown here):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p5.png" style="width: 380px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30548i6180A2606D63F336/image-size/medium?v=v2&amp;amp;px=400" role="button" title="cov_p5.png" alt="cov_p5.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Say we wanted to use a subset of 24 of these runners with an additional controllable factor for shoe type (A/B). Clicking the Select Covariate Factors button, we can choose all three factors as covariates:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p6.png" style="width: 257px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30549i410C34F0F02F1B35/image-size/large?v=v2&amp;amp;px=999" role="button" title="cov_p6.png" alt="cov_p6.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We now get an embedded table within the Custom Designer:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p7.png" style="width: 282px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30551iC9EE9433BC7CA41C/image-size/large?v=v2&amp;amp;px=999" role="button" title="cov_p7.png" alt="cov_p7.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We can now add a factor for Shoe Type:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p8.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30554i82E77B741B938826/image-size/large?v=v2&amp;amp;px=999" role="button" title="cov_p8.png" alt="cov_p8.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;and modify the model, however we see fit.&lt;/P&gt;
&lt;H3&gt;Additional options&lt;/H3&gt;
&lt;P&gt;Note that the rows of the table with the candidate runs for the covariates in the Custom Designer are selectable. The reason for this is that there are situations where we want to ensure certain runs are in the final design. For instance, materials may have been used in the past or the experimenter has a commitment to use some certain candidate runs. Another possible case is to use a candidate set by selecting the “Include all selected covariate rows in the design” so the designer will make sure to all the selected runs in creating the design. This is the look of the design generation outline with covariates:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cov_p9.png" style="width: 417px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30557i63951820CDC214B8/image-size/large?v=v2&amp;amp;px=999" role="button" title="cov_p9.png" alt="cov_p9.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Another possibility is to use a candidate set for adding additional runs to an existing design, effectively an Augment Design using covariates. In this &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Big-DOE-Sequential-and-Steady-Wins-the-Race-2021-EU-45MP-775/ta-p/349239" target="_blank" rel="noopener"&gt;Discovery Summit Europe talk&lt;/A&gt;, one of the ways to create a design was finding a subset of the full factorial where the predicted value at a given point was above a specified value. The next batch of 48 runs was chosen from this set while accounting for the points in previous iterations of the design.&lt;/P&gt;
&lt;P&gt;The “Allow covariate rows to be repeated” allows the Custom Designer to choose any of the rows more than once, which is useful when you just want to supply runs in a certain form. While you can have the same effect by replicating the design several times, it is not always clear how many replications of a design are sufficient.&lt;/P&gt;
&lt;H3&gt;One more thing&lt;/H3&gt;
&lt;P&gt;Much of the work for handling covariates is going on behind the scenes. Under the covers, previous versions of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; only focused on D-optimality for the covariates. In JMP 16, the covariate rows are chosen according to the specified optimality criteria. The integration between covariates and controllable factors is also better handled to search through more possibilities.&lt;/P&gt;
&lt;P&gt;Thanks for reading, and I hope you find the ability to use covariates handy in your own experiments!&lt;/P&gt;</description>
      <pubDate>Fri, 26 Feb 2021 20:20:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-in-JMP-16-Improved-covariate-handling-in-DOE/ba-p/361540</guid>
      <dc:creator>Ryan_Lekivetz</dc:creator>
      <dc:date>2021-02-26T20:20:20Z</dc:date>
    </item>
    <item>
      <title>New in Graph Builder for JMP 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/New-in-Graph-Builder-for-JMP-16/ba-p/362832</link>
      <description>&lt;P&gt;Here's a quick tour of many of the enhancements made to Graph Builder in &lt;A href="https://www.jmp.com/new" target="_self"&gt;JMP 16&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="height: 1020px; width: 100%; border-collapse: collapse; border-style: none;" border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 111px;"&gt;
&lt;TD width="30%" height="111px" style="width: 30%; height: 111px;"&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="densityjitter.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30703i4F6A369F274E6FFF/image-size/small?v=v2&amp;amp;px=200" role="button" title="densityjitter.png" alt="densityjitter.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="70%" height="111px" style="width: 70%; height: 111px;"&gt;Density Random is a new jitter option in the Points element, and it's the default whenever the number of dots is too many for the Centered Grid option. It's like Random Uniform, but the points are constrained to an envelope corresponding to a kernel density function (like a violin plot).&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD width="30%" height="57px" style="width: 30%; height: 57px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rulertool.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30704i33E61F6F5AFC8114/image-size/small?v=v2&amp;amp;px=200" role="button" title="rulertool.png" alt="rulertool.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" height="57px" style="width: 70%; height: 57px;"&gt;A new Ruler tool is available for all graphs in JMP, not just Graph Builder. It's useful to measure the size of or distance between features, such as the low points in this example. As you make measurements, the results are written to the log.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 84px;"&gt;
&lt;TD width="30%" height="84px" style="width: 30%; height: 84px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="hexheat.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30705i4FEA0FB2E3DEDD83/image-size/small?v=v2&amp;amp;px=200" role="button" title="hexheat.png" alt="hexheat.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" height="84px" style="width: 70%; height: 84px;"&gt;The Heatmap element now supports hexagonal binning. Hexagons are better than rectangles in many cases since they approximate a circle better for binning nearness and represent diagonal patterns with less pronounced aliasing.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD width="30%" height="57px" style="width: 30%; height: 57px;"&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="custommarker2.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30706i2D60A09BD684E936/image-size/small?v=v2&amp;amp;px=200" role="button" title="custommarker2.png" alt="custommarker2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="70%" height="57px" style="width: 70%; height: 57px;"&gt;With a little scripting, you can create your own custom marker shapes for use in the Points element, dependent on any number of other variables in the data table. In this example, the arrow is a custom polygon which incorporates the ratio of two crime statistics to determine its direction.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD width="30%" height="57px" style="width: 30%; height: 57px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="loesssmoother.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30707i579180932C95129F/image-size/small?v=v2&amp;amp;px=200" role="button" title="loesssmoother.png" alt="loesssmoother.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" height="57px" style="width: 70%; height: 57px;"&gt;The Smoother element has many more choices for smoothing functions. In addition to the existing spline smoothers, there are now loess, Savitzky-Golay and moving average smoothers with many options themselves. Having moving average as a smoother, instead of a separate formula column allows it to follow the Local Data Filter and the Graph Builder grouping variables.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%" height="156px" style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="mekkobars.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30708i90D0105C887DE26C/image-size/small?v=v2&amp;amp;px=200" role="button" title="mekkobars.png" alt="mekkobars.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" height="156px" style="width: 70%;"&gt;Categorical axes now have a Size By property, which allows another variable to control the spacing of the labels. In this example, the bar widths are based on country population for a result sometimes called "mekkobars" since they resemble a &lt;A href="https://en.wikipedia.org/wiki/Mosaic_plot" target="_self"&gt;mosaic or "marimekko" chart&lt;/A&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 84px;"&gt;
&lt;TD width="30%" height="84px" style="width: 30%; height: 84px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="linelabels.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30709i1855FC42DC3CC1D7/image-size/small?v=v2&amp;amp;px=200" role="button" title="linelabels.png" alt="linelabels.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" height="84px" style="width: 70%; height: 84px;"&gt;Lines can now be labeled with key information: the first, last, minimum and maximum values, plus the overlay name. Labeling with the name can eliminate the need for a legend, and labeling key values can highlight important anchoring information without overload.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%" style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="heatmapsize.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30711iF2DCE3B72B340746/image-size/small?v=v2&amp;amp;px=200" role="button" title="heatmapsize.png" alt="heatmapsize.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" style="width: 70%;"&gt;
&lt;P&gt;The size of the filled area in heatmaps can now be scaled by a separate variable. The same applies to hexagonal heatmaps, and it's a useful way of showing counts of a cell when the color represents some other variable.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="30%" style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sizelegend.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30712iAED3F718507E5345/image-size/small?v=v2&amp;amp;px=200" role="button" title="sizelegend.png" alt="sizelegend.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD width="70%" style="width: 70%;"&gt;
&lt;P&gt;The legends for size variables are explicit now, showing the actual marker sizes and the range of values.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And there are lots more new features that don't fit into a thumbnail image:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A new Summary Statistic option provides cumulative sums, which saves on adding a separate formula column and works better with filtering.&lt;/LI&gt;
&lt;LI&gt;The legend can be dragged to anywhere in the graph, not just the predefined corners.&lt;/LI&gt;
&lt;LI&gt;Run charts are easier to create. Instead of manually adding the row number to the X axis, you can leave it empty and choose the Row Order option on the Line element.&lt;/LI&gt;
&lt;LI&gt;The box plot element has more drawing options to match the Distribution platform.&lt;/LI&gt;
&lt;LI&gt;There's quick access to custom axis label reordering, right from the axis.&lt;/LI&gt;
&lt;LI&gt;Custom shape files are easier &lt;SPAN&gt;–&lt;/SPAN&gt; specify them right on the shape variable in Graph Builder instead of as a column property in the data table.&lt;/LI&gt;
&lt;LI&gt;Bar labels can be moved with the mouse.&lt;/LI&gt;
&lt;LI&gt;Date/time variables can have their granularity adjusted for aggregation and wrapping directly from the graph.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Finally, I'm excited about one new JMP graphics feature that only affects platforms outside of Graph Builder. Analyses like Control Charts that have semantic colors for bad-to-good now rely a preference for those colors instead of hard-coding red and green, so you can choose something more accessible if you like.&lt;/P&gt;</description>
      <pubDate>Tue, 02 Mar 2021 16:44:01 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/New-in-Graph-Builder-for-JMP-16/ba-p/362832</guid>
      <dc:creator>XanGregg</dc:creator>
      <dc:date>2021-03-02T16:44:01Z</dc:date>
    </item>
    <item>
      <title>Moving from SPSS to JMP: A Transition Guide</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Moving-from-SPSS-to-JMP-A-Transition-Guide/ba-p/359926</link>
      <description>&lt;P&gt;Because each analytical software package handles, processes, and outputs analysis differently, transitioning from one software program to another can be intimidating. Once users become comfortable with a program it can be difficult to make transitions, either to another program or to a more recent version of the same program. This can especially be true for new JMP® users who learned SPSS either at another company or as a student.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Thumbnail.JPG" style="width: 268px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30419i766F3927A4EAB50F/image-dimensions/268x342?v=v2" width="268" height="342" role="button" title="Thumbnail.JPG" alt="Thumbnail.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This guide, written by Dr. Joshua Lambert of the University of Cincinnati, is meant to ease the user’s transition from SPSS Version 27 to JMP 16 and JMP Pro 16. In this white paper, we'll illustrate the differences between SPSS and JMP and show you how easy this transition can be.&lt;/P&gt;
&lt;P&gt;To demonstrate these differences, we'll use data from one of the most infamous shipwrecks in history: the sinking of the RMS Titanic.&lt;/P&gt;
&lt;P&gt;Topics covered in this paper include:&lt;/P&gt;
&lt;P&gt;&lt;LI-TOC indent="5" liststyle="disc" maxheadinglevel="6"&gt;&lt;/LI-TOC&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The full text of the white paper appears below.&lt;BR /&gt;(Note: You can jump directly to a particular section by clicking on the hyperlinks above.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;U&gt;Introduction&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;The year was 1989, and Poison’s new song &lt;A href="https://www.youtube.com/watch?v=j2r2nDhTzO4" target="_blank" rel="noopener"&gt;“Every Rose Has Its Thorn”&lt;/A&gt; topped the charts. The personal computer landscape was changing rapidly and was seeking to shed some of its thorny past through the newly introduced graphical user interface (GUI). The Apple Macintosh popularized the desktop GUI, and many software companies were aiming to create transformative products to leverage the GUI’s user friendliness and accessibility. At SAS Institute, John Sall and his team of developers released John’s Macintosh Project (JMP) Version 1 in October 1989. JMP Version 1 gave users a graphical front-end that allowed them to specify which analyses and options they would like the software to perform without the need to write code. In 1994, JMP 3.1 was released for Windows desktop environment. In 2020, the JMP team continues to introduce newly developed statistical methods while maintaining its long list of high-quality analytic tools in JMP 16 and JMP 16 Pro for both Mac and Windows. JMP’s point-and-click user-friendly environment makes it a popular tool for a variety of data science activities.&lt;/P&gt;
&lt;P&gt;Statistical Package for the Social Sciences (SPSS) is a well-known and highly utilized program for the statistical analysis of data. It has a rich history in both academia and industry, and is the standard in certain disciplines. Originally developed in the pre-GUI era, SPSS found a niche early on by being among the first to switch to the GUI format. Like JMP and many other companies, SPSS developed a graphical front-end that allowed users to easily process and analyze data, thus delivering analytics to the masses.&lt;/P&gt;
&lt;P&gt;JMP and SPSS data analysis workflows are fundamentally different. JMP is designed so that users have a dynamic and fluid link between their data and analysis. This link leads to a different perspective for data analysis, one which we will explore in this guide. SPSS requires a static workflow that makes users specify which analysis they would like to perform prior to seeing output. JMP walks users through an information cascade, from defining response and explanatory variables they would like to process to the more specific comparisons they would like to investigate. JMP’s user experience is designed to take users through interactive and dynamic data analysis.&lt;/P&gt;
&lt;P&gt;In 2020, there are a multitude of software options for processing and analyzing data. Each software handles, processes, and outputs analysis quite differently, which can make transitioning from one software program to another quite difficult. This guide is meant to ease the user’s transition from SPSS Version 27 to JMP 16 and JMP Pro 16. The following example best illustrates the differences between SPSS and JMP and how to ease the transition from one to the other. This example is independent of the software under consideration, so the background and data set come from alternate sources.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The sinking of the RMS Titanic is one of the most infamous shipwrecks in history. On April 15, 1912, during her maiden voyage, the Titanic sank after colliding with an iceberg, killing 1502 of 2224 passengers and crew. This sensational tragedy shocked the international community and led to better safety regulations for ships.&lt;/P&gt;
&lt;P&gt;The &lt;A href="https://raw.githubusercontent.com/joshuawlambert/data/master/titanic.csv" target="_blank" rel="noopener"&gt;titanic.csv&lt;/A&gt; file contains data for 887 of Titanic’s passengers. Each row represents one person with the columns describing different attributes about the person: Survived (0=No, 1=Yes), Pclass (1=1st class, 2=2&lt;SUP&gt;nd&lt;/SUP&gt; class, 3=3&lt;SUP&gt;rd&lt;/SUP&gt; class), Name, Sex (Male, Female), Age, Siblings/Spouses Aboard, Parents/Children Aboard, and Fare.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;U&gt;Importing and Cleaning Data &lt;/U&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Upon opening SPSS, we can open many file types (CSV, Stata, SAS, Excel, etc.) using the options under the File menu. After a series of steps in which the software checks for things like delimiters and menus, we import the following file (be sure to uncheck Space under “Which delimiters appear between variables?” for the titanic.csv data):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614033046033.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30555i12217F43581408E0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614033046033.png" alt="lalaru_2-1614033046033.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;A quick glance at the spreadsheet reveals eight variables and 887 observations. We see data on Survival, Passenger Class, Name, Sex, Age, whether a sibling or spouse was aboard, whether there were parents or children aboard, and the Fare (measured in £s).&lt;/P&gt;
&lt;P&gt;SPSS has two methods of looking at each data set, the Data View and Variable View options, which can be seen via tabs on the bottom of each data set. When we open the data in Variable View, we see the data type of each variable and can modify that information by adding labels and changing formats.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614027053775.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30501iD55F0690019F0A8D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614027053775.png" alt="lalaru_0-1614027053775.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;There are already some things we need to take care of to clean this data and get it ready for analysis. Fortunately, most of the variables were read in their correct measure type. Age and Fare are measured as Scale or continuous variables, while the other variables are measured as Nominal. PClass, SiblingsSpouse and Parents Children variables should be changed to Ordinal types, which can be done in the Variable View by clicking under the Measure column. There is also no missing data, so there is no need to assure that the software is treating missing observations correctly.&lt;/P&gt;
&lt;P&gt;In SPSS, we need to label categorical variables which are String (text) type, which is also done in Variable View using the Values option. There are two variables (Name and Sex) that are of the String type. For this example, we will not be using the Name variable. We do plan to use the Sex variable, so we need to add Values to the categories of Sex. This can be done by clicking the … button on the Sex row and Values column in Variable View.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614027133905.png" style="width: 318px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30502i944BE5BFB9FF0BA3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614027133905.png" alt="lalaru_1-1614027133905.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The basic idea of presenting data in SPSS is to provide two viewing options that show the data in terms of the individual observations, as well as an overview of the type of each variable.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Switching over to JMP, we will open the same data and do the same manipulations. Let’s begin with what happens when starting the program. When JMP starts, the first thing we receive is a Tip of the Day and Home Window screen. The Home Window manages different windows for data, log and output. Recently used files are available on the left side so that we can conveniently reopen files that were used in a previous session.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614028396387.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30512i46C57B6E8C812CFC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614028396387.png" alt="lalaru_0-1614028396387.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Another feature of JMP is the JMP Starter window, which is found under the View menu. The JMP Starter is convenient for new users since it organizes commands for analysis into categories and provides summaries for each data and analytic option. We can open the Titanic data for this project by clicking on the Open Data Table command in the File category and navigating to the folder that contains the file, selecting it, and clicking Open. You can also open data directly from the File menu.&lt;/P&gt;
&lt;P&gt;Like SPSS, JMP can open a variety of files including CSV files, Excel spreadsheets, SAS data sets, SPSS documents and text files.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614028604186.png" style="width: 305px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30513i54DFDC8F03E97DD8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614028604186.png" alt="lalaru_0-1614028604186.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Unlike SPSS’ Data and Variable View, JMP does not switch between multiple views in the data. Instead, there are table panels along the left side that do similar things.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614028704352.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30514i47EF566BF192C162/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614028704352.png" alt="lalaru_1-1614028704352.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The middle-left panel displays the column information and shows each of the eight variables and the data type. There are modeling-type icons for each data type: blue for continuous variables, red for nominal data and green for ordinal data. Note that the variables Survived needs to be changed to Nominal type and Pclass needs to be changed to Ordinal. Sibling/Spouses Aboard and Parents/Children Aboard can also be changed to Ordinal. To change the type, simply left- or right-click on the variable column header and select Column Info. The type can also be changed by right- or left-clicking on the icon (blue triangle or red histogram) on the left panel. The bottom-left panel summarizes the rows and shows additional information.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614029051659.png" style="width: 179px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30518i21DCA05CF01954F2/image-size/large?v=v2&amp;amp;px=999" role="button" title="lalaru_0-1614029051659.png" alt="lalaru_0-1614029051659.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Let us change the Survived and Pclass variables. By right- or left-clicking on the blue icon next to the Survived variable on the left-middle panel, we can select Nominal, which turns the icon red. By right- or left-clicking on the blue icon next to the Pclass variable on the left-middle panel, we can select Ordinal, which turns the icon green. We could have also made these changes by right-clicking on the column headers and selecting Column Info.&lt;/P&gt;
&lt;P&gt;There are other data types in JMP 16. (For a full description of the data types please refer to this &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/about-the-column-info-window.shtml" target="_blank" rel="noopener"&gt;link&lt;/A&gt;.) For instance, Name is technically Unstructured Text and not Nominal. This change can only be made by right-clicking on the column header and selecting Column Info and then selecting Unstructured Text under Modeling Type. Unlike JMP, SPSS does not have an option to treat variables as text type variables nor a platform to analyze text responses.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614029051664.png" style="width: 627px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30517i1B694FE50E9B16B3/image-size/large?v=v2&amp;amp;px=999" role="button" title="lalaru_1-1614029051664.png" alt="lalaru_1-1614029051664.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Like SPSS, we can also add value labels in JMP. To do this, right-click on the column header we would like to apply labels to and select Column Info. Then under Column Properties, select Value Labels. Unlike SPSS, JMP gives the us the option to use the Value Labels or the original values. When columns are given properties, JMP signals these changes with different symbols in front of the column names of interest. Here we see that asterisks have been created for the variable Sex. It should be noted that JMP has many other Column Properties that can help us better understand variability within our data such as Value Labels, Value Order and Units.&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Visualization&lt;/U&gt;&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614029598140.png" style="width: 459px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30520i282EBD18869E7BC9/image-size/large?v=v2&amp;amp;px=999" role="button" title="lalaru_0-1614029598140.png" alt="lalaru_0-1614029598140.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Visualization is a powerful tool for analyzing and understanding data. The ability to easily make graphs via statistical software is one of the principal reasons why analytic software is so popular. Visualization is most easily handled in SPSS via its Chart Builder platform and in JMP via its Graph Builder platform. In this guide, we will discuss three simple yet powerful visualization tools: bar charts, histograms and scatter plots.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Suppose we want to limit the discussion to the variables Age, Fare and Sex to visualize the distribution of each and see all three on one graph. We start with forming a bar chart of Sex. One quick and easy way to do this is with the Legacy Dialogues under the Graph menu.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614029673894.png" style="width: 244px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30523iBA57C61FDE0139E9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614029673894.png" alt="lalaru_0-1614029673894.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614029673896.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30521i2FDC1C4A2C77CA73/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614029673896.png" alt="lalaru_1-1614029673896.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;For this data, we see that slightly more than half of the data points are male. Turning to Age and Fare, we can visualize this data in a histogram, which can also be found in the Legacy Dialogues.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614029673898.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30522i795F15BBE4B06CE3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614029673898.png" alt="lalaru_2-1614029673898.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614029673899.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30524i3F8704537CD3FA34/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614029673899.png" alt="lalaru_3-1614029673899.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In addition to the histograms, we also get some simple statistics for each variable (Mean, Standard Deviation and the sample size N). We can double-click on each graph in the output and customize as we see fit. Examining the distribution of Age and Fare, we see observations that had a much higher Fare than the rest.&lt;/P&gt;
&lt;P&gt;For more complicated graphs, we use the Chart Builder option under the Graph menu. Using Chart Builder, we can build a scatter plot of Age versus Fare that is color-coded by Sex.&lt;/P&gt;
&lt;P&gt;The Chart Builder dialog box is useful because it’s easy to use and can be customized. We simply click on the type of graph desired and drag it into the preview box. From there, click and drag the variables we want to use on the x and y axes, and drag the color variable onto the Set color? box. Once the graph is set, we can view our results by clicking OK.&lt;/P&gt;
&lt;P&gt;In viewing this scatter plot, several points about the data can be made. First, there appears to be two unusual observations (one Male and one Female) for Fare which happen to be similar Ages. Perhaps they were traveling together? Those data points certainly look out of place with respect to the rest of the data. From the scatter plot, it is difficult to see whether there is a linear relationship between Age and Fare. Also under Fare, there appear to be many points of 50£ or so.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614029827269.png" style="width: 267px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30525i24B66ACCAC0DDE23/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614029827269.png" alt="lalaru_0-1614029827269.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614029827277.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30527iEF82F69A9F895877/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614029827277.png" alt="lalaru_1-1614029827277.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614029827283.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30526i714F231A8E2E82F6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614029827283.png" alt="lalaru_2-1614029827283.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Before we look at data visualizations in JMP, recall from the introduction that JMP is designed to be interactive software. Most of this interactivity comes in the form of little red triangle icons in various places on the data and output that enables the user to explore additional analysis. SPSS output is mostly static, and further exploration requires reopening the graph of analysis platforms and reselecting options. We start again with a basic bar chart. Users can easily access graphing features via the Graph menu item from the top menu bar. For most graphs and charts, JMP’s dynamic and user-friendly Graph Builder is the logical choice. To make a bar chart, we select the Graph Builder, which also allows a variety of other graphs, such as pie charts, bubble plots and line graphs.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614029956612.png" style="width: 185px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30528iE3C032F0B15DA7FF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614029956612.png" alt="lalaru_0-1614029956612.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614030030361.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30530iC740669B3D160EFF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614030030361.png" alt="lalaru_1-1614030030361.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Graph Builder is an easy-to-use, drag-and-drop platform that allows us to explore and visualize data in engaging and interesting ways. Creating a bar chart for a categorical variable is first done by selecting the bar graph button on the ribbon at the top of the graph. Next, drag Sex into the x box at the bottom of the graph. As we drag the Sex variable around the graph, we see that JMP’s Graph Builder dynamically changes and gives us an actual view of what the graph will look like if we decide to drop the variable there. This is different from SPSS, which requires us to select OK before displaying the actual graph. Undoing that change is as simple as dragging the variable off the graph entirely or onto another section of the graph platform. Once Sex is dropped onto the x box at the bottom of the graph, a Bar options panel appears where we can select options for the new bar plot. For instance, including the % of Total over the bar is as simple as selecting that option under the Label drop-down. This option shows the proportion of the total sample that is Female and Male on top of the bar rather than nothing at all (default option).&lt;/P&gt;
&lt;P&gt;Changing the axis to the percentage of the total is as easy as selecting % of Total under the Bar options in the Summary Statistic drop-down. All plot titles, axis labels and legend settings can be changed by either double-clicking or right-clicking and going to the setting to be changed. Graph Builder is very interactive, so changing a bar plot to a pie chart is as simple as clicking the pie button in the ribbon at the top. Clicking on Done removes the Graph Builder Control Panel and leaves only the graph that was created. This is useful when we would like to export the graph as an image file, which can be done by clicking File&amp;gt;Export and selecting one of JMP’s many file type options (e.g., Image, PDF, Microsoft Word). We can reopen the Control Panel by clicking the red down-pointing triangle and selecting Show Control Panel.&lt;/P&gt;
&lt;P&gt;Another useful option under the red down-pointing triangle is Include Missing Categories if the variable has missing data. It shows the missing data on the graph alongside the Female and Male categories and includes it in all percentages shown. Also useful is the Recall button. Let’s say we spent a long time making the perfect graph only to realize that one data point was mislabeled. With JMP, that is no problem. Exit out of Graph Builder and go back to the data set and change the data as needed. Go back to Graph&amp;gt;Graph Builder and a magical Recall button appears. Click it and it will recreate the graph we just closed out – with the corrections we made to our data.&lt;/P&gt;
&lt;P&gt;Moving on to histograms, we find a histogram icon in the Graph Builder ribbon. Starting with Age, we can obtain simple and straightforward output by dragging it from the variable list to the x box. We could have also dragged it to the y box to get a vertical histogram instead. As with the bar plot, useful histogram options can be selected on the left panel, including histogram style, the mean and standard deviation, or the counts displayed at the top of the histogram boxes.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614032069509.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30534iE649A09C7893991F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614032069509.png" alt="lalaru_0-1614032069509.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614032069524.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30533iC2744F821DB26F1F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614032069524.png" alt="lalaru_1-1614032069524.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Let us recreate the scatter plot that we created in SPSS that showed the male and female passengers who had an expensive fare and similar ages. Because JMP is dynamic and interactive, we can start with the Age histogram we already created. To transform this into a scatter plot all we need to do is drag the variable Fare onto the y axis and click the scatter plot button in the ribbon above the graph. Next drag the variable Sex onto the Color box, which is located to the right of the graph between Overlay and Size. And voilà! In just a few clicks, we have transformed our histogram into a scatter plot with points colored by Sex.&lt;/P&gt;
&lt;P&gt;Again, we see what appears to be two unique individuals whose Fare is much higher than the other individuals. We list them as possible outliers, but this is where the differences between SPSS and JMP truly begin. JMP allows us to dynamically interact between the data and reports. When all the points are selected (not grayed out), we can hover over the points and get information quickly about the variable values used in the graph, as well as the specific rows in the data table those points correspond to. We can also select individual points to highlight a certain data subset of interest.&lt;/P&gt;
&lt;P&gt;Returning to the data table, the selected rows show up as highlights in the data table, which gives us the option to quickly inspect the rows to determine exactly which observations are causing the controversy. If the data needs to be checked for consistency, then having the data and the output dynamically linked makes it easy to go back and inspect individual observations. There are many ways to clear data selections, but one of the easiest is to double-click on Selected in the Rows panel of the data table (likewise double-clicking on All Rows selects all the data).&lt;/P&gt;
&lt;P&gt;From Graph Builder, we begin to see exactly how dynamic linkage separates working with JMP from working with SPSS. We can click on individual points in these graphs and select them for dynamic analysis. Doing this for our observations with high Fare shows that what we thought were just two observations was actually three! Miss Anna Ward, Mr. Thomas Drake Martinez Cardeza, and Mr. Gustave J Lesurer all had Fare of 512£. Miss Ward and Mr. Lesurer were both 35 years old, while Mr. Cardeza was 36. Interestingly all three passengers survived.&lt;/P&gt;
&lt;P&gt;In SPSS we observed the possible outliers in the graph, but JMP takes it a step further and allows us to highlight those individual points and see them in the data and/or other report. In addition, we can exclude certain data points from analysis without having to delete them. Excluded data stays within the data table, but is not considered in analysis, thus making it easy to do analysis with and without potential outliers. There is also the Hide option if we wanted to remove individual points from visualizations but not analysis. This exclusion or hiding can be done by going back to the data table, right-clicking on the row that to be excluded or hidden and clicking the corresponding button (Exclude or Hide).&lt;/P&gt;
&lt;P&gt;Another distinguishing visualization feature of JMP 16 is the header graph. Within the data table, there is a small histogram button on the left-most column (see figure below with blue circle). Clicking this icon will show graphs in the column headers for each variable, which is extremely useful and dynamic. By clicking on the various parts of the header graph, observations in the table that correspond to our selection are highlighted. Below, I selected those that survived (1), which gives me a quick view of the variable distribution across the other variables in my data set! Neat!&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614033463700.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30558i0EB8305C14AF2A4F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614033463700.png" alt="lalaru_0-1614033463700.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Descriptives&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Descriptive Statistics&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Descriptive statistics are at the heart of any good statistical analysis and, when performed properly, provide real insight beyond what is seen in visualizations. This section will focus on univariate descriptions and creating custom tables. Assuming we want to continue to study the variables Age and Fare, we will leave in the potential outliers and consider that data because it is still unclear whether the potential outliers should be removed from analysis.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Many SPSS users know that the Frequencies dialog box can be a one-stop option for analysis of many different variables simultaneously. While there is a Descriptives dialog box, the Frequencies dialog box is nice because we can request descriptive statistics and graphs in one place. Also, we can put several different types of data into this option and SPSS will produce the appropriate graphs and statistics for each type of variable.&lt;/P&gt;
&lt;P&gt;The options selected here give the standard univariate report, where we see the typical measures of center and spread that are discussed in basic statistics courses. Frequency tables, histograms, bar charts and many other useful descriptive outputs are also available under the Charts option.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614032566440.png" style="width: 246px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30544i55AE4815902DEC0A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614032566440.png" alt="SPSS Analyze: Descriptive Statistics: Frequencies Menu" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;SPSS Analyze: Descriptive Statistics: Frequencies Menu&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614032589356.png" style="width: 314px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30545i2BFAA9E74708AB76/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614032589356.png" alt="SPSS Frequencies Dialog Box" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;SPSS Frequencies Dialog Box&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614032610841.png" style="width: 263px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30546iF269871C0C1C4D81/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614032610841.png" alt="SPSS Frequencies Statistics Options" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;SPSS Frequencies Statistics Options&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614032652016.png" style="width: 322px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30547iDEE2A8B5F90F5911/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614032652016.png" alt="SPSS Frequencies Statistics Output" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;SPSS Frequencies Statistics Output&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Like the Frequencies dialog box in SPSS, JMP has the Distribution platform to obtain simple descriptive output. The Distribution platform is found under the Analyze menu. We start by selecting Survived, Sex, Age and Fare.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614033768840.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30559i55F021770ADE612E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614033768840.png" alt="lalaru_0-1614033768840.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614033781648.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30560i76096DFCABC6A943/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614033781648.png" alt="lalaru_1-1614033781648.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;After clicking OK, a distribution report is displayed. By default, quantiles, mean, standard deviation and other summary statistics are produced for continuous variables, as well as a 95 percent confidence interval for the mean. Also, by default the variable outputs are unstacked and will be arranged horizontally. By clicking the red triangle and selecting Stack, the output is switched to a vertical view. Frequency tables are produced for categorical variables, and the Male subgroup (Sex=1) has been selected to highlight the interactivity between different portions of the same report.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614033837150.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30561iC2E285F0592967A0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614033837150.png" alt="lalaru_2-1614033837150.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;By clicking on the red triangle, we can customize report display, obtain more descriptive measures or fit different distributions to the data. Add-ons include box plots, normal quantile plots, CDF plots and distribution fits. Being able to work with the output interactively allows us to fit many different theoretical distributions to the data (e.g., normal, exponential, Poisson, binomial, normal mixtures, etc.) and assess their relative fit to the data.&lt;/P&gt;
&lt;P&gt;Another nice feature in JMP is the ability to save distribution reports as interactive html files that can be viewed and worked with interactively without the use of JMP software. This can be done through the File&amp;gt;Save As…&amp;gt;Save as type:&amp;gt;Interactive HTML with Data. These files make for good demos to students or can be worked into reports so that the results can be easily discussed between those who have JMP and those who don’t.&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Descriptives: Custom Tables&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In many cases, specific output is necessary, like in our example where the visuals showed differences in Age and Fare by Sex. SPSS also has options to create custom tables for specific output. We can click and drag the variables into the proper locations and specify which descriptive output we want to see. To see the table, with numbers filled in, we must click OK first and then navigate to the results section to view the table. An example of this output is seen below&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614033990620.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30562iD31CDE3EDA81A1BF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614033990620.png" alt="lalaru_0-1614033990620.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614033998440.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30563i5215A0E054A53704/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614033998440.png" alt="lalaru_1-1614033998440.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034006319.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30564iF9E688A82865D2E2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034006319.png" alt="lalaru_2-1614034006319.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP makes custom tables via the Tabulate platform under the Tables menu. The Tabulate platform can build a table interactively, similar in spirit to Graph Builder. Again, SPSS requires us to drag the variables we wish to have in the table and then click OK before viewing the results. JMP gives us these results immediately after dragging and dropping the variable. We can see computations and output as we begin customizing our table. In addition, the interactive table can be turned off in favor of a traditional dialog box if we want to make a very specific output.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034086260.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30565iF937B44A4D69ED59/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034086260.png" alt="lalaru_0-1614034086260.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034104710.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30566iD4580A949CB69343/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034104710.png" alt="lalaru_1-1614034104710.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034112921.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30567iE44071EE2958AC6F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034112921.png" alt="lalaru_2-1614034112921.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Descriptives: Correlation&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Using the Bivariate dialog box inside Correlate under the Analyze menu, we can obtain sample correlation estimates between Age and Fare. Note that there is significant positive correlation between the two variables.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034205899.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30568iB544F4173B8997A9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034205899.png" alt="lalaru_0-1614034205899.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034217253.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30569iCD9D125980376EED/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034217253.png" alt="lalaru_1-1614034217253.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034223605.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30570i7579134BF8868D7A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034223605.png" alt="lalaru_2-1614034223605.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP groups sets of analyses into one platform that allows us to do many different things (all somewhat related). For example, the easiest option for finding Pearson correlation coefficients is to use the Multivariate platform under the Multivariate Methods of the Analyze menu.&lt;/P&gt;
&lt;P&gt;The Multivariate platform is much more than a simple vehicle for finding correlations; however, the basic report shown here delivers both a Pearson correlation estimate and a scatter plot matrix. By clicking on the red triangle, the histograms can be added along the diagonal so that distributions can be quickly visualized. The Multivariate platform also allows us to test correlations, find alternative measures of correlation (e.g., Spearman and Kendall), confidence intervals, partial correlations, and visuals such as Color Maps. In addition, correlation-based measurements such as principal components analysis, outlier analysis and item reliability are all available in the Multivariate platform.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034316573.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30571i2D25B8CFF48D8F9A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034316573.png" alt="lalaru_0-1614034316573.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034363876.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30572iA971822834202636/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034363876.png" alt="lalaru_1-1614034363876.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034370577.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30573i91261232C73D1EE6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034370577.png" alt="lalaru_2-1614034370577.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Inference: Two-Sample t-Test&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Suppose we want to test whether Age differs significantly between those who survived and those who did not. The standard independent samples t-test is a popular option in SPSS, which is found under the Compare Means menu. Here we can specify one or more continuous measurements and determine if the mean value of that measurement significantly differs between two groups. In SPSS, both the equal variance and unequal variance tests are calculated, and we can rely on a test for variances to determine which test is the most appropriate.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034469372.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30574i3073A35A83763763/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034469372.png" alt="lalaru_0-1614034469372.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034477017.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30575i4533520D84E60047/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034477017.png" alt="lalaru_1-1614034477017.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034483868.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30576i1CC1AA2D2B6E9B85/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034483868.png" alt="lalaru_2-1614034483868.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;While there is a button in the JMP Starter menu for t-tests, users should be aware that the t-test and one-way ANOVA analyses all go into the same platform. In fact, JMP combines all two-variable inferences into one Fit Y by X platform. Using the Fit Y by X platform, we can make inferences on bivariate comparisons for any type of data.&lt;/P&gt;
&lt;P&gt;The grid in the bottom-left corner of the launch window lists different analysis types. We can choose which x and y variables we want to study and JMP chooses the appropriate method based on the type of data being used.&lt;/P&gt;
&lt;P&gt;For now, we want to examine the differences between age based on survival status. In the report, we have simple descriptives, along with a t-test that assumes unequal variances (found by selecting Means and Std Dev and t Test from the red triangle icon). We may add graphics (such as box plots) and additional tests looking at the variances, or nonparametric tests more appropriate for skewed data.&lt;/P&gt;
&lt;P&gt;Again, we see an important distinction in JMP, as it combines many similar tests into one common platform. We can start with a t-test and look at graphics and summary statistics to determine if the assumptions of a t-test are met. If they are not, then we may add on an alternate test that is more appropriate for the data considered.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034693347.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30577i98F95D37EB6092EC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034693347.png" alt="lalaru_0-1614034693347.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034702356.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30578i9B32D50E6EB12297/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034702356.png" alt="lalaru_1-1614034702356.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614034709928.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30579iD3ACC49D23BEA2F0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614034709928.png" alt="lalaru_2-1614034709928.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Inference: Crosstabs/Contingency Tables and Chi-Square Test&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Creating a contingency table and performing a chi-square test of categorical data is an important component to many analyses. Examination of table data is one area where SPSS has always focused, and we can find many options for analysis under the Crosstabs listing in the Descriptive Statistics menu. The Crosstabs menus allow us to ask for several different sets of analysis based on what type of comparisons we want to make.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614034798862.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30580iB1D367C1964D6D5E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614034798862.png" alt="lalaru_3-1614034798862.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614034806038.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30581i8233AFA987F884E0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614034806038.png" alt="lalaru_4-1614034806038.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_5-1614034843777.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30582i3D92E6F544357D34/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_5-1614034843777.png" alt="lalaru_5-1614034843777.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_6-1614034851281.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30583iA541932E5C27F5F0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_6-1614034851281.png" alt="lalaru_6-1614034851281.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_7-1614034865766.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30584iE44C1944C3C059E7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_7-1614034865766.png" alt="lalaru_7-1614034865766.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;From this example, we can see that the rate of survival among women(sex=0) aboard the Titanic is more than three times that of males(sex=1): 74.2 percent versus 19 percent. From the Chi-Square Tests table we can also see that there is enough statistical evidence to conclude that there is significant association between survival status and sex (chi-square p-value =0.000). It should be noted that SPSS does not display (by default) p-values less than 0.001 but instead just displays 0.000. This may confuse some users if they believe that the p-value is in fact 0. In reality the p-value is just very small (less than 0.001). JMP displays p-values by default to more decimal places (four instead of SPSS’ three) and gives a clearer representation of p-values less than 0.0001 with the notation of &amp;lt;0.0001. When the expected counts are small, SPSS shows a warning message and provides a Fisher’s exact test of the difference among samples with small cell counts. If interested in relative risk and odds ratio estimates, we can check the Risk option in the statistics box to gain those estimates.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We can access the Contingency Analysis options in JMP via the Fit Y by X platform. Simply specifying categorical variables for both x and y will lead us to contingency analysis. We can specify the same table as we did in SPSS to look at the relationship between sex and survival status. The JMP report gives table information, a chi-square test and Fisher’s exact test (2x2 table only, same as SPSS).&lt;/P&gt;
&lt;P&gt;We can then add on additional summaries and tests such as relative risk, odds ratios and measures of association (for items such as Kendall’s tau). The Contingency Analysis is considered a standard report, but we can also see the list of options that are available via the red triangle icon. An interesting aspect to JMP is that the software tries to help users in areas where they may be unfamiliar. By selecting the odds ratio option and simply hovering the mouse over that area, an explanation box appears that indicates which kind of analysis this option produces. For users having trouble interpreting statistics, p-values or other output, this option is available by simply circling or hovering over an area with the mouse.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614034969235.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30585iB293D1B7903ED24D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614034969235.png" alt="lalaru_0-1614034969235.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614034993153.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30586i7F66A43343DD7234/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614034993153.png" alt="lalaru_1-1614034993153.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035000715.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30587iCE648D7FF7A883B7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035000715.png" alt="lalaru_2-1614035000715.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Inference: &lt;/U&gt;&lt;U&gt;Linear Regression&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Linear regression can be performed using the Linear Regression option under the Regression menu. Suppose we want to use Age as a predictor of Fare. The Linear Regression option in SPSS is a powerful tool with many different options for model-based estimates, measures of fit, diagnostics, predicted value output and visual plots to assess fit. We can incorporate many potential predictors and look at both simple linear regression and multiple linear regression in the same set of menus.&lt;/P&gt;
&lt;P&gt;Without using additional options, we obtain standard output with R-square, ANOVA table and a table for regression estimates. We see a significant relationship between Age and Fare, and that as Age increases, the Fare of those individuals also tends to increase (p-value=0.001). It is important to note that the linear option does not allow string variables to be used as potential predictors. In fact there are many different regression options in SPSS, depending on what type of model needs to be fit. The linear option is limited to numeric covariates only; for multiple regression with both continuous and categorical covariates, refer to the General Linear Model platform.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614035096445.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30588i670B7A5E50890F96/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614035096445.png" alt="lalaru_0-1614035096445.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035103782.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30589iEFFEF189233E7496/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035103782.png" alt="lalaru_1-1614035103782.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035110641.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30590iCBAE29BF96F722D0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035110641.png" alt="lalaru_2-1614035110641.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035117121.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30591i78D4AC6D6E03045F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035117121.png" alt="lalaru_3-1614035117121.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We have two options for regression models in JMP: the Fit Y by X platform or the Fit Model platform, both under the Analyze menu. Simple bivariate fits go along the Fit Y by X platform, so let’s start there.&lt;/P&gt;
&lt;P&gt;The Fit Y by X platform can again be employed to look at the relationship between two different variables. Here we have listed Age as X and Fare as Y. It is important to note that the Fit Y by X platform ONLY looks at bivariate relationships. It is possible to select more than one candidate for both the x and y roles. In such cases, output consists of multiple bivariate fits with each output displaying the appropriate measures for each set of variables.&lt;/P&gt;
&lt;P&gt;The Bivariate Fit report starts with a simple scatter plot and we must assess exactly which type of bivariate fit we would like to make. Here we see a linear fit that models a simple linear regression line to the data. A standard report includes the same basic information as found in SPSS: R-square, ANOVA and parameter estimates with hypothesis tests for the intercept and slope parameters. In JMP, however, we can interact with this output to look at multiple fits simultaneously. For example, we can choose a simple mean, straight line and quadratic fits to the data and compare the fits by either R-square or looking at the parameter estimates. Other fits include density ellipses and smoothing splines, from which comparisons between fits can be made and estimated values can be output to the original data for further study. Under each fit, we can specify diagnostic measurements and plots to assess whether the assumptions for using each particular model are satisfied.&lt;/P&gt;
&lt;P&gt;JMP puts many different types of regression models all under the Fit Model platform. In the example shown here, we are fitting a multiple linear regression model that predicts Fare via a combination of Sex, the ordinal variable Pclass, and the categorical variable Sex (no need to separate categorical and continuous covariates). Clicking Run displays the Fit Least Squares output, which includes an actual versus predicted plot, leverage plots, residual by predicted plot and more. More options, such as profile plots, are available under the red triangle.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035264410.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30593iA5DC2C042A16C3AB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035264410.png" alt="lalaru_1-1614035264410.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035335527.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30594i3FD624A424909802/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035335527.png" alt="lalaru_2-1614035335527.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035359000.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30595i8109703443C595FF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035359000.png" alt="lalaru_3-1614035359000.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614035375891.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30596i935AF6F26316C1B3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614035375891.png" alt="lalaru_4-1614035375891.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Inference: &lt;/U&gt;&lt;U&gt;Logistic Regression&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Logistic regression can be performed using the Binary Logistic option under the Regression menu. Suppose we want to use Age as a predictor of the binary variable survival. The Binary Logistic option in SPSS has many different options for model-based estimates, measures of fit, diagnostics, conversion to odds ratios and more. We can incorporate many potential predictors and look at both simple logistic regression and multiple logistic regression in the same set of menus.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614035483466.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30597i8142AC11AF528B8A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614035483466.png" alt="lalaru_0-1614035483466.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035490188.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30598i4D2AABFDCF43C216/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035490188.png" alt="lalaru_1-1614035490188.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035497021.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30599i85BD9F8D01F12A9F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035497021.png" alt="lalaru_2-1614035497021.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Like linear regression, we have two options for logistic regression models in JMP: the Fit Y by X platform or the Fit Model platform, both under the Analyze menu. Bivariate fits go along the Fit Y by X platform, and multiple logistic fits go in the Fit Model platform. Once OK is clicked, we have many pieces of useful information about our model at our fingertips. More options, such as Odds Ratios, are available under the red triangle.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614035586897.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30601iDA7E75A9FFB33EE3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614035586897.png" alt="lalaru_4-1614035586897.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035566098.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30600i90A3F8EBA7F6A211/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035566098.png" alt="lalaru_3-1614035566098.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Data Manipulation&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both SPSS and JMP are excellent for manipulating data since they each provide a number of different ways to organize and manipulate the data. We can sort data, sort variables, merge files, recode and run many other manipulations. Listed below is a side-by-side comparison illustrating a number of the data manipulation features in SPSS and JMP. New JMP users should know that since the data file and the output are dynamically linked, there are occasions where output needs to be closed before the data is manipulated. When sorting or manipulating data, JMP will sometimes default to creating a new data table that has the necessary manipulation; new users should specify that the manipulated file should replace the current data file. Data can be manipulated in JMP through a variety of menu options. The Tables menu item offers many common data table transformations and the Cols&amp;gt;Utilities menu items offer many tools for completing common data column manipulation. The JMP Starter view also shows many of these options in one unified location.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614035651290.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30602iD325AE90F20F494B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614035651290.png" alt="lalaru_0-1614035651290.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035662846.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30603i2FA560F33CBC3C2C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035662846.png" alt="lalaru_1-1614035662846.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035677731.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30604i49C004241792F5CE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035677731.png" alt="lalaru_2-1614035677731.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035684270.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30605iDCC83DF7E852F80B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035684270.png" alt="lalaru_3-1614035684270.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614035698544.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30606iAC492AB6F50C9A58/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614035698544.png" alt="lalaru_4-1614035698544.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Data Manipulation: Creating New Variables&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Suppose that we want to create a new variable that is the Age as months (instead of years). We can use the Compute Variable option to define a new variable (call it Age_Std) and attach a formulaic calculation to that variable (Age * 12). SPSS has a number of different functions for aggregating and transforming data, which are all grouped by function type. After filling in the numeric expression, SPSS creates a new variable of the specified name and populates it with the computation from the numeric expression.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614035763289.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30607i658D50BE5F0EC179/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614035763289.png" alt="lalaru_0-1614035763289.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035770780.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30608iE05ABEE70DB45596/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035770780.png" alt="lalaru_1-1614035770780.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP creates new variables directly in the data table. Suppose we want to create the same new variable (Age_Std) in JMP. We start by double-clicking on the unused column at the end of data table to make a new column. Then we double-click on the column name to bring up the Column Info window where we give the column a name, and click on Column Properties and choose Formula to bring up the Edit Formula window. Now, we can edit the formula to create the numeric expression we used in SPSS. Note that JMP also has a wide array of functions that can be applied to manipulate and transform our existing data. Also, we can also create a new column using the menu item Cols&amp;gt;New Columns. Common data transformations can also be done on the fly in many of JMP’s platforms such as Graph Builder, Tabulate, Fit Y by X, and Fit Model. This on-the-fly option is as simple as right-clicking on the variable we would like to transform in the Columns box and going to Transform.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035802590.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30609iC448BF3A6F26749F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035802590.png" alt="lalaru_2-1614035802590.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035809971.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30610i81FBCCA1A8A361BF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035809971.png" alt="lalaru_3-1614035809971.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614035819797.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30611iCE7EF0C9ACDE3078/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614035819797.png" alt="lalaru_4-1614035819797.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Data Manipulation: File Splitting&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Suppose we want to look at different output for men versus women aboard the Titanic. We can use the Split File option to tell SPSS that further output should always be stratified by a particular variable. We have the option of creating new files for just men and just women, but the splitting option is a unique way to indicate to SPSS that subsequent output should be separated between women and men.&lt;/P&gt;
&lt;P&gt;If we want to return to a non-stratified analysis, simply go to the Split File option and choose “Analyze all cases, do not create groups” to turn the stratification off.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614035882404.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30612i4484171D7D1C86AA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614035882404.png" alt="lalaru_0-1614035882404.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614035890790.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30613iC7DD37E237603013/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614035890790.png" alt="lalaru_1-1614035890790.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Splitting a file may not be necessary in JMP since all analysis platforms feature a By option to stratify output by a particular variable. So, if we want stratified descriptive statistics, we use the By statement in the Distribution platform as seen below.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614035918248.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30614i160B546075E18CC3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614035918248.png" alt="lalaru_2-1614035918248.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614035944879.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30615i3A481E9C2075E68D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614035944879.png" alt="lalaru_3-1614035944879.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Saving and Reproducing Output&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Manipulating data and producing great output and visuals are possible only if there is a mechanism to save and reproduce them. It doesn’t seem obvious but JMP is also fueled by a scripting language, which works mostly behind the scenes for casual or new users. Many advanced users find that coding produces quicker results for repetitive tasks. Let’s discuss how to save and reproduce output in SPSS and JMP.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SPSS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When we save an SPSS data file in SPSS format (.sav file), the data file maintains all manipulations, transformations and labels. In order to retain output, we save as a separate file (.spv format). Since the point-and-click interface for SPSS is really a mechanism for code generation, code precedes all output in the output file. For instance, if we want to look at the descriptive statistics for Age and Fare, the following code could be generated in the output from the point-and-click interface:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614036075961.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30616i315A15F7D82D0FCC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614036075961.png" alt="lalaru_4-1614036075961.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;JMP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JMP takes a different approach to saving and reproducing output. When we save data as a JMP data file (.jmp file), the data retains manipulations, transformations, labels AND script saved from analysis. Let’s look at an example. Suppose we want to save the distribution analysis of Age and Fare information for later use. In all JMP reports, we can find an option for saving the code (referred to as JMP script) to the data table. There are other options to save JMP script but saving to the JMP data table is one option. When we save the data in JMP format, all scripts saved to the data table are saved as well. We can edit the name of the saved script and reproduce the output with the red triangle located by the saved script’s name in the data table. In addition, we have one file that contains both the data information and analysis related to a specific project. JMP data files can be shared among many JMP users, and one file can be a single platform for all project analysis. If we’d like a written set of instructions similar to the code listed above for SPSS, we simply select Save Script&amp;gt;To Journal and the necessary .jsl (JMP scripting language) code will be displayed in a window of editable text. Like SPSS, JMP’s scripting language is quite complex and can be useful in completing repetitive tasks.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_5-1614036199950.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30617iE72D2FC9D263FAF6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_5-1614036199950.png" alt="lalaru_5-1614036199950.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Other Features&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Users transitioning from SPSS to JMP may be interested in some of JMP’s unique features.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Machine Learning and Text Mining&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;While both JMP 16 and SPSS 27 come standard with decision trees and neural networks, JMP 16 has a number of advanced Predictive Modeling methods that SPSS 27 does not, including Bootstrap Forest, Boosted Tree, Naïve Bayes, and Support Vector Machines. Also, JMP 16 has many built-in tools useful for creating a predictive model. One such tool is the Make Validation Column which allows the user to create a column based on stratification, grouping, and cut point columns.&lt;/P&gt;
&lt;P&gt;Text mining is another data mining approach is fun and engaging in JMP. SPSS does not have any built-in text mining features. As an example, recall that the Name column is unstructured text. With JMP 16, we can explore this text data for patterns of words or phrases. Under the Analyze menu, the Text Explorer module allows us to select many unstructured text columns and tell JMP how it should tease out the words or phrases within the text selected. Once we click OK, Text Explorer shows common terms and phrases within the columns selected. As we can see from the figure above, the word “mr” appears 513 times; “miss” appears 182 times while “mrs” appears 125 times. This insight is something our Titanic data does not currently account for as a variable. Using JMP, we can easily create indicator columns (0 or 1) for rows that have the words “miss” or “mrs” in their Name column. Just right clicking on the words and selecting Save Indicators creates these new indicator variables in our data set. That is so cool!&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_0-1614036371398.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30618i2CC9A05BEE7A4614/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_0-1614036371398.png" alt="lalaru_0-1614036371398.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_1-1614036378386.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30619iEEC3C8A770846C68/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_1-1614036378386.png" alt="lalaru_1-1614036378386.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_2-1614036384927.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30620i516FA875C95D12BB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_2-1614036384927.png" alt="lalaru_2-1614036384927.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Sample Data Sets&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One difficulty in learning and teaching statistics is finding nicely formatted example data sets. JMP knows this and has included hundreds of data sets. Categorized by type of analysis, field, and teaching resources, JMP’s built-in datasets are easily accessible via the Help&amp;gt;Sample Data menu item. Opening these data sets is as easy as selecting the type of data or statistical method we want to explore or learn about and clicking the blue highlighted link. Want to learn how to make a map in JMP? Under the Geographic Maps data type, find the US Election 2008 data. Once the data set opens, we find a number of JMP scripts ready to be run in the top left. Clicking the green play arrow next to Graph Builder Map Sized by Number of Electors launches Graph Builder with a map of the United States color-coded with blue or red depending on whether Obama or McCain won that state. Neat! Want to learn about survival analysis? Find the Reliability/Survival category and select Appliance data set. Running the Life Distribution script in the upper left of the data set fits and compares distributions of time-to-event data. It is so easy to learn and explore with JMP!&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_3-1614036419224.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30621i5B6CB5288C264D8C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_3-1614036419224.png" alt="lalaru_3-1614036419224.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_4-1614036426799.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30622iC6E5AE9BF40C064B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_4-1614036426799.png" alt="lalaru_4-1614036426799.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lalaru_5-1614036433730.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/30623i2C6620A8D496C8BD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lalaru_5-1614036433730.png" alt="lalaru_5-1614036433730.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Conclusion&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;Both SPSS and JMP are terrific software tools for manipulating, visualizing and analyzing data. In this guide, we have highlighted how to complete many common data-oriented tasks in SPSS and JMP. Throughout, we made sure to point out many of the differences between the two software packages and how JMP may elevate the insights you get from your data. It is easy to see that JMP and SPSS approach data analysis workflows differently. The point-and-click mechanism in SPSS generates SPSS code, so users decide which analysis and options they want to perform and then submit the generated code to obtain the output. The code and results are listed in the output file, which can be saved, copied or manipulated. By contrast, JMP dynamically links the data and reports to create an interaction between the data and the user. The user starts with a general area of analysis and can then customize output to add different features or analytics. The dynamic link between data and output makes exploring unusual observations very simple and intuitive. The interactivity of features such as Graph Builder allows users to create and update visuals in real time.&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Acknowledgements&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;I would like to thank Ruth Hummel, Larry LaRusso, Anne Miley, and Amy Stuart at JMP for all their assistance, edits and feedback during the making of this guide. I would also like to thank Jason Brinkley, the author of the first version of this guide, for providing a clear and precise starting point for creating the second version.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Feb 2021 01:28:40 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Moving-from-SPSS-to-JMP-A-Transition-Guide/ba-p/359926</guid>
      <dc:creator>Larry_LaRusso</dc:creator>
      <dc:date>2021-02-25T01:28:40Z</dc:date>
    </item>
    <item>
      <title>Getting high-quality graphics out of JMP</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Getting-high-quality-graphics-out-of-JMP/ba-p/354772</link>
      <description>&lt;P&gt;Welcome to the second of &lt;A href="https://community.jmp.com/t5/tag/creating%20publication-quality%20graphs/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;two posts&lt;/A&gt; on creating publication-quality data visualizations in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;. This post focuses on getting graphs out of JMP as high-quality images. If you’re interested in how to customize your graph’s appearance to get it looking just right, check out &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Customizing-JMP-graphs/ba-p/345743" target="_blank" rel="noopener"&gt;the previous post&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As in that post, I’ll work with a customized line graph constructed from the Corn Wheat Soybean Production sample data in the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/sample-data-tables.shtml" target="_blank" rel="noopener"&gt;Sample Data Library&lt;/A&gt;. This graph was made in Graph Builder, but everything I discuss here applies equally well to graphs produced by JMP’s analysis platforms. Getting graphs out of analysis reports does introduce one special consideration with respect to exporting image files, which I’ll call out when relevant.&lt;/P&gt;
&lt;H3&gt;Avoid screenshots&lt;/H3&gt;
&lt;P&gt;Imagine you’ve got your line graph looking just how you like it, and it’s time to put it into a slide deck you’re working on. The first instinct is to take a screenshot, mainly because it’s easy and familiar. This produces an image file (let’s say a &lt;A href="https://en.wikipedia.org/wiki/Portable_Network_Graphics" target="_blank" rel="noopener"&gt;PNG file&lt;/A&gt;) that you drop into your deck. After resizing the image to fill the slide, this is what you get:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot.png" style="width: 956px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29893iC2B9B63EC76BF5BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot.png" alt="Just say no to low-resolution graphics like this one" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Just say no to low-resolution graphics like this one&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Eeesh. We’ve all seen this kind of blurry image fail before and maybe even have perpetrated one ourselves. (I’m certainly not innocent here.) This image is &lt;A href="https://en.wikipedia.org/wiki/Pixelation" target="_blank" rel="noopener"&gt;pixelated&lt;/A&gt; due to the combination of the screenshot’s image format and the resizing. Screenshots are typically captured as &lt;A href="https://en.wikipedia.org/wiki/Raster_graphics" target="_blank" rel="noopener"&gt;raster graphics&lt;/A&gt;, which include the common PNG, JPG and BMP formats. Raster graphics represent images as grids of pixels, and therein lies the problem. When an image is resized to occupy more pixels than the file specifies, the result is a blurry image like the one above.&lt;/P&gt;
&lt;P&gt;To avoid pixelation, the graph needs to be captured as a &lt;A href="https://en.wikipedia.org/wiki/Vector_graphics" target="_blank" rel="noopener"&gt;vector graphic&lt;/A&gt;. Vector graphics represent images as collections of objects like points, lines and curves instead of as pixels. Because of this, they can be resized infinitely without pixelation; the objects are simply drawn to fill however many pixels they need to. JMP can produce vector graphics in a number of common formats listed below, and vector graphics should be used whenever possible.&lt;/P&gt;
&lt;P&gt;Check out this video that compares resizing raster versus vector graphics. The difference is clear. (Bad pun, I know. You’re welcome.)&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6228118939001" width="960" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/382a7f68-8867-458b-bc4d-fda5018c6a80/main/160x90/10s783ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Getting vector graphics out of JMP&lt;/H3&gt;
&lt;P&gt;Let’s look at two ways to get vector graphics out of JMP. For a standalone image file, use &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/save-and-share-reports.shtml" target="_blank" rel="noopener"&gt;JMP’s export functionality&lt;/A&gt; to export a vector graphic. To put a graph directly into a document or slide, use copy and “paste special” to paste a vector graphic.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Exporting to an image file&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Going to File &amp;gt; Export reveals the option to export a stand-alone image file (among other export types) of the current JMP window, with a drop-down menu of the file type options. Vector formats available in JMP include PDF, SVG, EPS and EMF (Windows only).&lt;/P&gt;
&lt;P&gt;When exporting a Graph Builder graph, click the Done button before exporting to ensure the element ribbon isn’t included in the image. After that, it’s as simple as going to File &amp;gt; Export and choosing a vector format.&lt;/P&gt;
&lt;P&gt;When exporting graphs in analysis reports with multiple sections, File &amp;gt; Export will create an image containing &lt;EM&gt;all open sections&lt;/EM&gt; in the report, along with their section titles. One option to get only the desired graph is to close any unwanted report sections using the little gray triangles and to delete the section titles of any open sections, and then export the window. Take a look at the Oneway Analysis report below. If I’d like to export just the graph at the top, but I leave all the other report sections open, the resulting image includes the entire report:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Fit Y by X.png" style="width: 595px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29894iB1C60A89D29FC77E/image-dimensions/595x629?v=v2" width="595" height="629" role="button" title="Fit Y by X.png" alt="Exporting a report window will send all open sections to a single image" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Exporting a report window will send all open sections to a single image&lt;/span&gt;&lt;/span&gt;By closing the Oneway Anova section before exporting and then double-clicking and deleting the top section title (“Oneway Analysis of Commodity Acres Planted by Commodity”), you get a clean graph like the one below. Of course, you should save your analysis, perhaps as a script in the data table, before deleting that title, since the red triangle menu will also be deleted.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Means Plot.png" style="width: 453px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29895iC34ECA002AEA92B2/image-dimensions/453x288?v=v2" width="453" height="288" role="button" title="Means Plot.png" alt="There are multiple ways to export just one graph from an analysis report" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;There are multiple ways to export just one graph from an analysis report&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Ultimately, it might be preferable not to muck with an analysis report just to export one of its graphs. As an alternative, you can use the selection tool to highlight whatever you want to export, send the selection to a journal, and then export the journal. It’s efficient and foolproof. Here’s a quick demo.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6228119492001" width="960" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/5d0a8ca7-bebd-4b6e-8f01-c162bdc52f3c/main/160x90/8s500ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;Alongside the image export options under File &amp;gt; Export, there are also options to export to PowerPoint or Word. These options will place all open report sections as vector graphics (and editable tables, for any report tables) directly into a PowerPoint deck or Word document. This feature provides a nice option for getting all report content directly into a slide or document. But if you’re trying to get just one graph out of JMP and into an existing slide or document, copy-paste is a more straightforward way to go. Speaking of which...&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Copy and ‘paste special’&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;To drop a graph directly into a document or slide – no image file needed – you can copy and “paste special” in a vector format. Standard paste options typically use raster graphics, so using the paste special command is a must. Copying a graph and its legend is as simple as right-clicking in the graph area and selecting Edit &amp;gt; Copy Graph. From there, select the paste special option in whatever word processor or slide editor you’re using to view a list of available graphic formats in which to paste the image. Simply select an available vector format and the image will be dropped into your document or slide.&lt;/P&gt;
&lt;P&gt;The formats that JMP makes available when copying a graph are set in JMP’s &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/windows-specific.shtml" target="_blank" rel="noopener"&gt;Windows Specific&lt;/A&gt; or &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/mac-os-settings.shtml" target="_blank" rel="noopener"&gt;Mac Specific&lt;/A&gt; preferences groups. When copying a graph in JMP, JMP places all the formats &amp;nbsp;specified in those preferences onto the operating system’s clipboard; using paste special tells the application on the receiving end to allow you to select among the formats that are both available on the clipboard and compatible with the receiving application. If a format you’ve chosen in JMP for inclusion on the clipboard is not included in the receiving app’s paste special options’ format list, it’s a safe bet that the format isn’t compatible with the receiving app.&lt;/P&gt;
&lt;P&gt;On Mac, PDF is a good option and is always included on the clipboard. On Windows, EMF is a good option; it is enabled by default, but if it doesn’t appear as an option under paste special, make sure that enhanced metafile is checked in the Windows Specific preferences (see below).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Format Preferences.png" style="width: 554px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29896i901052677F8AFD1F/image-dimensions/554x476?v=v2" width="554" height="476" role="button" title="Format Preferences.png" alt="Choosing which image formats are included on the clipboard" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Choosing which image formats are included on the clipboard&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;But what if I have to use raster graphics?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Occasionally, using a vector graphic may not be possible. A journal may accept image submissions only in PNG or JPG formats, for example. There are a couple options here. First, Windows users can set the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/setting-the-graphic-dpi.shtml" target="_blank" rel="noopener"&gt;DPI (dots per inch) for exported graphics&lt;/A&gt;. Larger DPI values produce higher-resolution graphics. Mac users might consider another route: export a vector graphic, open it in Preview, and then export the graphic in a raster format while upping the pixels per inch setting as needed. It’s possible to take a similar approach in Windows, albeit with something other than Mac’s Preview application. This approach has the benefit of producing a vector graphic as the “main” graphic file for possible future use, while also producing the high-resolution raster graphic needed at the moment.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;One more thing: Transparent backgrounds&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Whether exporting or copy-pasting, you may not want JMP’s default cream background color included in your graph. To get a &lt;A href="https://en.wikipedia.org/wiki/Transparency_(graphic)" target="_blank" rel="noopener"&gt;transparent&lt;/A&gt; background, go to the Preferences, select the Reports group on the left, and then check the transparent background option at the bottom of the list. Now all the graphs you get out of JMP will not include a filled background surrounding the graph area. Check out the graphs in the next section to see the result. &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Transparent Background Setting.png" style="width: 525px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29897i520FD131AAEBD497/image-dimensions/525x315?v=v2" width="525" height="315" role="button" title="Transparent Background Setting.png" alt="Setting transparent backgrounds" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Setting transparent backgrounds&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;An added benefit of vector graphics: Infinite customization&lt;/H3&gt;
&lt;P&gt;As discussed in the previous post, JMP’s graph customization options are extensive. But sometimes there may be a fine-grained change that can’t be achieved in JMP. For example, maybe you’d like to move the “RFS authorized” reference line label a little further down in the graph area but the option isn’t available in JMP. Luckily, vector graphics can be edited outside of JMP using any &lt;A href="https://en.wikipedia.org/wiki/Vector_graphics_editor" target="_blank" rel="noopener"&gt;vector graphics editor&lt;/A&gt;. I’ve used the freely available &lt;A href="https://inkscape.org/" target="_blank" rel="noopener"&gt;Inkscape&lt;/A&gt; to edit my graph, but many other vector graphics editors are out there. (This is not an official Inkscape endorsement.) In the two graphs below, the first one was produced exclusively in JMP and the second graph was produced after further editing in Inkscape. See if you can spot all the differences between them. There are a handful in addition to the position of the “RFS authorized” label.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line Graph Custom.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29900i897C687AA2B9AA17/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line Graph Custom.png" alt="A customized line graph made in Graph Builder" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A customized line graph made in Graph Builder&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line Graph Custom Inkscape.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29899iDD2DFA096015E3F5/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line Graph Custom Inkscape.png" alt="The same graph as above after further customization with a vector graphics editor" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The same graph as above after further customization with a vector graphics editor&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Give up? Or maybe you just never liked playing &lt;A href="https://en.wikipedia.org/wiki/Spot_the_difference" target="_blank" rel="noopener"&gt;Spot the Difference&lt;/A&gt;. I also moved both axis titles slightly, lightened the box around “27.5m acres,” darkened the left and bottom borders, and rounded off the ends of the colored lines in both the graph and the legend. These differences might seem minute, and that’s the point: extremely fine-grained customization is possible when working with a vector graphic editor, so you can get your graph looking &lt;EM&gt;exactly&lt;/EM&gt; how you like.&lt;/P&gt;
&lt;P&gt;If using Windows (sorry, Mac users), you can even edit your vector graphic right inside PowerPoint or Word. It’s as simple as pasting a vector graphic, selecting the Edit Picture and Ungroup options to break out all the individual objects in the graphic, and then using the built-in shape and text editing tools. The video below presents a quick example.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6228116447001" width="958" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/6adf78b0-329d-44c6-9963-5077601f8567/main/160x90/35s533ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Getting high-quality graphics out of JMP&lt;/H3&gt;
&lt;P&gt;It’s easy to ensure your JMP graphs look their best in your presentations and publications: set the transparent backgrounds preference; export or copy-paste in vector graphics formats like EMF or PDF; if necessary, fine-tune your graphs outside of JMP as needed with a vector graphics editor. By combining these best practices with JMP’s &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software/core-capabilities-of-jmp.html#Data-Visualization" target="_blank" rel="noopener"&gt;outstanding graphing capabilities&lt;/A&gt; and myriad graph customization options, your graphs are bound to impress.&lt;/P&gt;
&lt;P&gt;Thanks for reading. Now get to it.&lt;/P&gt;</description>
      <pubDate>Tue, 02 Feb 2021 19:31:43 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Getting-high-quality-graphics-out-of-JMP/ba-p/354772</guid>
      <dc:creator>Ross_Metusalem</dc:creator>
      <dc:date>2021-02-02T19:31:43Z</dc:date>
    </item>
    <item>
      <title>Hover Labels: Codeless customizations</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Hover-Labels-Codeless-customizations/ba-p/352681</link>
      <description>&lt;P&gt;As described in the Git documentation, the term &lt;A href="https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain" target="_self"&gt;“porcelain”&lt;/A&gt; refers to a user interface that is designed to be easy to learn and navigate. This post demonstrates how the high-level commands that implement the porcelain part of the Hover Label extensions feature can support drilling and further exploration of visualizations with just a few clicks (no JSL knowledge required!). The following examples use graphlet presets, Paste Graphlet and platforms with built-in graphlets.&lt;/P&gt;
&lt;H3&gt;Graphlet presets&lt;/H3&gt;
&lt;P&gt;With the addition of hover labels’ extended features, such as graphlets, you can drill down into visualizations for further analysis. To add a graphlet in a Hover Label, select the predefined graphlet preset, accessible via the right-click menu under Hover Label. These presets have dynamic graph role assignments, which they derive from the variables used within the graph. Presets are also preconfigured to be recursive to support drilling down.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_0-1611605890904.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29698i71644539640D59E5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_0-1611605890904.png" alt="LisaG_0-1611605890904.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;From the list, there are nine different preset options to choose from to help answer the question of what is behind an aggregated visual element. The Marker preset shows the exact values, whereas the Histogram, Box Plot, and Heat Map presets show a distribution of values. You can also break down and look at a graph with another category with the Bar, Pie, Treemap and Line presets. The Tabulate preset makes it possible to examine a table’s raw data.&lt;/P&gt;
&lt;P&gt;For preset graphlets that use categorical columns, select the Next in Hierarchy column property, found in the data table, to specify which columns will be used in the next level of a drill-down.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_1-1611605890915.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29696iC7157CC72706BBA4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_1-1611605890915.png" alt="LisaG_1-1611605890915.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In the following animated gif, the Distribution graphlet preset is used to look at the distribution of bill lengths per species in the Penguins.jmp data table. After applying the preset and hovering over the bars, the distribution graphlet appears in the hover label. In the top-right corner of the hover label, there is a pin option that keeps the hover label present on the graph. Notice below that there are two pinned graphlet labels side by side, allowing for an easy comparison of the distribution of the data all in one chart.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="preset.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29722i5D3E0316C42CAAD7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="preset.gif" alt="preset.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To take it a step further, click on the graphlet thumbnail, as shown in the animated gif below, to launch the graphlet in its own Graph Builder window and interact with the data visualization behind it. Also, in the launched graphlet window, there is a Local Data Filter (LDF) that facilitates filtering from the base graph; this LDF can be easily updated. And remember, the presets are recursive, so after applying the histogram graphlet preset, you can drill down multiple layers of data simply by hovering over an element in the launched graphlet window.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="recursive.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29723iE46353745B006A3D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="recursive.gif" alt="recursive.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Paste Graphlet&lt;/H3&gt;
&lt;P&gt;To construct a graphlet from scratch instead of using a predefined graphlet preset, Paste Graphlet makes it easy to do in three simple steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Build both the base graph (left) and a graph that to use as a graphlet (right). NOTE: This is not exclusive to Graph Builder; any platform that supports an LDF can be used.
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_3-1611673658859.png" style="width: 412px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29730iBD4A727F935ACD08/image-dimensions/412x304?v=v2" width="412" height="304" role="button" title="LisaG_3-1611673658859.png" alt="LisaG_3-1611673658859.png" /&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_2-1611673608446.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29729i8BAB0AEFD7C65394/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_2-1611673608446.png" alt="LisaG_2-1611673608446.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;Using the red triangle menu, save the script of the graph to the clipboard.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_2-1611605890943.png" style="width: 691px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29697i17EF22900C74D82E/image-dimensions/691x549?v=v2" width="691" height="549" role="button" title="LisaG_2-1611605890943.png" alt="LisaG_2-1611605890943.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;Return to the base graph and right-click Hover Label to access the Paste Graphlet option to complete the operation for a graph with a custom-built graphlet.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_3-1611605890952.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29701i801E334A211CDC0C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_3-1611605890952.png" alt="LisaG_3-1611605890952.png" /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_4-1611605890957.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29700i7CA7A680DCC33CFD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_4-1611605890957.png" alt="LisaG_4-1611605890957.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Unlike graphlet presets, Paste Graphlet will have static role assignments and will not be recursive, since its graphlets need to be drilled down one level at a time. However, by nesting Paste Graphlet operations from the bottom layer up to the top/base graph layer, you can create multiple, custom drill-downs. Continuing with this example, repeat the three steps, save the above bar graph with a pasted scatterplot graphlet to the clipboard and paste it on a new graph. By making a pie chart and pasting the script from the clipboard, there are three layers to the graph:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_5-1611605890962.png" style="width: 423px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29699i84DB05649F27DFA2/image-dimensions/423x301?v=v2" width="423" height="301" role="button" title="LisaG_5-1611605890962.png" alt="LisaG_5-1611605890962.png" /&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LisaG_6-1611605890966.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29702i57BDF53B3736C3F3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LisaG_6-1611605890966.png" alt="LisaG_6-1611605890966.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Built-in graphlets&lt;/H3&gt;
&lt;P&gt;There are several &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; platforms that have preintegrated graphlets: Function Data Explorer, Process Screening, Multivariate Control Chart, Outlier Analysis of Principal Components, and Process Capabilities. Using Outlier Analysis of Principal Components, below is an example of a graphlet that is automatically generated when hovering over elements:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LisaG_7-1611605890988.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29703i721C46241799741E/image-size/large?v=v2&amp;amp;px=999" role="button" title="LisaG_7-1611605890988.png" alt="LisaG_7-1611605890988.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These examples are just a brief overview of the porcelain features that enable you to do some quick customizations with hover label graphlets in a matter of clicks.&lt;/P&gt;
&lt;P&gt;Be sure to check out the next blog post in this series that reviews the plumbing – the low-level interface that allows you to explore rich customization options, plus the full range of hover label extensions.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Feb 2021 15:51:23 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Hover-Labels-Codeless-customizations/ba-p/352681</guid>
      <dc:creator>LisaG</dc:creator>
      <dc:date>2021-02-08T15:51:23Z</dc:date>
    </item>
    <item>
      <title>How to make a wafer map in JMP in under 30 seconds</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-to-make-a-wafer-map-in-JMP-in-under-30-seconds/ba-p/348607</link>
      <description>&lt;H3&gt;&lt;SPAN&gt;The Engineering Mailbag&lt;/SPAN&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;SPAN&gt;Episode 6: Wafer Maps in Under 30 seconds&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image3.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29439iBF769F393AF85041/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image3.png" alt="image3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;TL;DR&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Here’s me walking you through how to do this in under 30 seconds*!! If you want details, read on!&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6222845409001" width="960" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/08274fea-e017-47cd-972d-354bc5500ba5/main/160x90/1m45s709ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;*The walk through takes me about 3 minutes and 40 seconds, but the mouse clicks take about 30 seconds, tops.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;Introduction&lt;/H3&gt;
&lt;P&gt;&lt;EM&gt;How do you make a wafer map in JMP?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;I get this question…a lot. So, here’s a quick note from the Engineering Mailbag (an Engineering Postcard, maybe?) on how to create a quick and dirty patterned wafer map in Graph Builder.&lt;/P&gt;
&lt;H3&gt;The Basic Map&lt;/H3&gt;
&lt;P&gt;For this discussion, I’m going to focus on the &lt;EM&gt;patterned wafer map.&lt;/EM&gt; These are dead simple to create in a pinch and just require, at a minimum, three pieces of information: the X Die ID, the Y Die ID and something to color the map by (sort bin, Vt, film thickness, particle count, you get the idea). We could go crazy with this topic, and I’ll touch on some of that toward the end, but for this discussion, I want to focus on a super basic, “just-get-me-pointed-in-the-right-direction” wafer map. And, for that we will just need those three pieces of data. Do you have that data?&lt;/P&gt;
&lt;P&gt;You do!&lt;/P&gt;
&lt;P&gt;Sweet. Then, let’s do this.&lt;/P&gt;
&lt;P&gt;If you don’t have a data set handy, there is a sample data set included with &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; (which is also the data set I’m going to use) that you can use to follow along until you do. Just go to &lt;STRONG&gt;Help &amp;gt; Sample Data Library&lt;/STRONG&gt; in JMP and select &lt;STRONG&gt;Wafer Stacked.jmp&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The patterned wafer map is just a fancy retooling of something called a heat map. And it turns out that a heat map is just a really, &lt;EM&gt;really&lt;/EM&gt; low resolution image where each pixel in the image represents one thing (a device, die, reticle field, etc.). And, as it happens, heat maps (and therefore wafer maps) are really easy to make in Graph Builder! Funny how that works, eh?&lt;/P&gt;
&lt;P&gt;First, we need to make sure the data is set up correctly. It works best with a tall table with one die per row. Making the heat map is also a lot easier if you make your X Die and Y Die columns &lt;EM&gt;ordinal&lt;/EM&gt; data. When you pull data into JMP from a factory database or manufacturing tool, the X Die and Y Die columns will usually be &lt;EM&gt;continuous&lt;/EM&gt;. Normally this isn’t a big deal for analysis, but for visualization purposes, they need to be &lt;EM&gt;ordinal&lt;/EM&gt;. So, right click on the data icon and change them from blue triangles (continuous) to green sorted histograms (ordinal).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_0-1610634870852.gif" style="width: 851px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29430iBDA30D417828CA1A/image-dimensions/851x526?v=v2" width="851" height="526" role="button" title="MikeD_Anderson_0-1610634870852.gif" alt="MikeD_Anderson_0-1610634870852.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now, for the fun part. Open Graph Builder (&lt;STRONG&gt;Graph &amp;gt; Graph Builder&lt;/STRONG&gt; in JMP). Drag your X Die column to the Bottom X Axis Drop Zone. Drag your Y Die column to the Left Y Axis Drop Zone. Drag your parameter of interest to the Color Drop Zone on the far right of the window. Last, select the Heat Map Graph Element from the list along the top of the interface. Click Done! You have now created a wafer map.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image2.png" style="width: 849px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29433i838ABCA8570814AA/image-dimensions/849x527?v=v2" width="849" height="527" role="button" title="image2.png" alt="image2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; And here’s a finished wafer map in Graph Builder using the Wafer Stacked.jmp data set (and some tinkering with colors).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image3.png" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29434i98762B3C040D31CB/image-dimensions/850x758?v=v2" width="850" height="758" role="button" title="image3.png" alt="image3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you want to break the map up (by wafers in a lot, process step, etc.), just put the variable you want to map by in the Wrap Drop Zone (to the left of the Color Drop Zone). You can break it up further using the Page Drop Zone (bottom right of the interface) or the X/Y Group Drop Zones. Try them all out and see which ones you like. They all have their advantages and disadvantages. Here’s an example in which I look at lot defect totals using the Wrap Drop Zone (again using some creative coloring):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image4.png" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29435iF15AC624599AE112/image-dimensions/850x1158?v=v2" width="850" height="1158" role="button" title="image4.png" alt="image4.png" /&gt;&lt;/span&gt; &lt;/P&gt;
&lt;H3&gt;Refining the Aspect Ratio&lt;/H3&gt;
&lt;P&gt;Let’s do a little refining. We generally expect wafer maps to be circular, but the aspect ratio of the die can confuse the heat map. This is really an aesthetic consideration as the information is still conveyed effectively even if the wafer looks a little wonky. Think about how many slide decks you’ve seen with distorted screenshots of wafer maps. They may look awful, but they still do the job.&lt;/P&gt;
&lt;P&gt;Anyway, there is a trick that we can use to pretty-up the map a bit. Just right-click on the graph and select &lt;STRONG&gt;Graph &amp;gt; Size and Scale &amp;gt; Size to Isometric&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image5.png" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29436i85E65C9905652E27/image-dimensions/850x481?v=v2" width="850" height="481" role="button" title="image5.png" alt="image5.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This will usually correct the problem by adjusting things, so the aspect ratio more closely approximates what’s in the data set. However, if you’re not looking at full wafer maps, you might need to manually adjust things using the Frame Size option (which is above Size to Isometric in the menu).&lt;/P&gt;
&lt;H3&gt;Conclusions and a Shameless Plug&lt;/H3&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;So, that’s really it. Wafer maps are just that simple. Now, if you came here looking to make un-patterned wafer maps (also called bare wafer maps), those&amp;nbsp;are a little harder to create because the data set is sparse and the sampling plan sometimes imparts some bias to the results. But, I did do a paper on how to do bare wafer maps at the 2016 JMP Discovery Summit. &amp;nbsp;You can find that here: &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Semiconductor-Toolkit/ta-p/22460" target="_blank" rel="noopener"&gt;All Wafer Maps Are Wrong: An Adventure in Semiconductor Data&amp;nbsp;Visualization&lt;/A&gt;. Now, if you&amp;nbsp;want to make the basic heat map look &lt;EM&gt;even prettier&lt;/EM&gt;, or want to quickly make bare wafer maps, or just want to have an add-in do the heavy-lifting for you, there is an add-in called the &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Semiconductor-Toolkit/ta-p/22460" target="_blank" rel="noopener"&gt;Semiconductor Tool Kit&lt;/A&gt; (STK). It was launched as part of that same Discovery Summit presentation. I’m not going to go too deep into it now, but look for some additional articles on the latest version of the STK later in 2021.&lt;/P&gt;
&lt;P&gt;So for now, just remember one thing: Wafer maps are just heat maps – that look like circles.&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jan 2021 19:00:44 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-to-make-a-wafer-map-in-JMP-in-under-30-seconds/ba-p/348607</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2021-01-21T19:00:44Z</dc:date>
    </item>
    <item>
      <title>Hover labels: Beyond details-on-demand</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Hover-labels-Beyond-details-on-demand/ba-p/346646</link>
      <description>&lt;P&gt;What do we mean when we talk about details-on-demand?&lt;/P&gt;
&lt;P&gt;Exploring data to find insights usually follows a familiar process. We clean it up, create visualizations, interact with them, do some analysis. Rinse and repeat. We don't usually have to think much about the process, which is a testament to how easy it is to do it in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;But there is an underlying process to exploratory data analysis. It has been the subject of many studies over the years. One of most influential is "The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations" (Shneiderman 1996). This seminal paper introduced the Visual Information Seeking Mantra, or Infovis Mantra for short. It goes like this:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Overview first, zoom and filter, then details-on-demand.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;After we create a visualization, more often than not, we have to interact with it to find interesting patterns. Zoom and filter change the visualization focus. Details-on-demand add extra information (details) only when it becomes necessary (on demand). To reduce the impact on the exploratory flow, we use the mouse to point to the area of interest. A brief pause triggers the interaction. And voilà: a hover label pops up showing details, on demand.&lt;/P&gt;
&lt;P&gt;How do we decide which extra information is relevant in this context? First, JMP gathers data from &lt;A title="Labeled Columns" href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/label-rows-and-columns.shtml" target="_blank" rel="noopener"&gt;Labeled Columns&lt;/A&gt;, or row numbers if none is defined. Then it adds information extracted from the underlying visualization. For example, the numeric or categorical values associated with the underlying visual element. These can be extracted from the X and Y axis. The final result is displayed as text in the hover label window. The window can then be pinned to the graph, repositioned, or dismissed by moving the mouse away.&lt;/P&gt;
&lt;H3&gt;Beyond Text&lt;/H3&gt;
&lt;P&gt;JMP 15 introduced &lt;A title="hover label extensions" href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-hover-graphs.shtml#1157671" target="_self"&gt;hover label extensions&lt;/A&gt;. These features expand the type and content that hover labels can display.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Textlets&lt;/STRONG&gt; allow the display of entire paragraphs of rich text. The content can be static or dynamic, based on the evaluation of JSL variables.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Gridlets&lt;/STRONG&gt; provide fine control over the hover label default content, or grid. JMP builds this content from labelled columns and graph roles. The gridlet extension can rename, remove, reformat and restyle grid entries. It can also add new ones, with both static and dynamic content - including clickable links.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Graphlets&lt;/STRONG&gt; display graphical or visual content inside the hover label window. The most common usage is to show new visualizations based on the hovered visual element data. For example, a distribution of the values aggregated by the bar in a bar chart. Other possibilities include previewing associated image files and even web content.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Here is a quick example showing the basic hover label details-on-demand interaction, and how it can be extended using graphlet &lt;A title="presets" href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels.shtml" target="_blank" rel="noopener"&gt;presets&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="GraphletDemo2.gif" style="width: 621px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29302iC855B18037B7B7A0/image-size/large?v=v2&amp;amp;px=999" role="button" title="GraphletDemo2.gif" alt="Hover label interaction and customization with presets" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Hover label interaction and customization with presets&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Beyond Details&lt;/H3&gt;
&lt;P&gt;The Infovis Mantra is comprised of four tasks, details-on-demand being the last one. But Shneiderman's paper describes three more, which the new hover label extensions support.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Relate:&lt;/STRONG&gt; The &lt;A title="Paste Graphlet " href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels-using-graphlets.shtml" target="_blank" rel="noopener"&gt;Paste Graphlet&lt;/A&gt; creates thumbnails from preconfigured platform graphs. Use it with the Fit X by Y platform to visualize correlations in the current data context. Other platforms can be used to show different types of relationships.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;History:&lt;/STRONG&gt; The graphlet thumbnails are clickable images. When clicked, they launch the platforms used to generate them in independent windows, or they can launch in place, replacing the current visualization. In either case, an Undo action recovers the original visualization. You can &lt;A title="drill-down " href="https://community.jmp.com/t5/Tutorials/Creating-Custom-Drill-Down-Graphs-to-Enhance-Interactive/ta-p/274781" target="_blank" rel="noopener"&gt;drill-down&lt;/A&gt; many levels knowing that you can always go back.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Extract:&lt;/STRONG&gt; Visual elements correspond to subsets of the data. The hover label menu gives direct access to these subsets. Also, launched graphlets include a pre-configured &lt;A title="Local Data Filter" href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/local-data-filter.shtml" target="_blank" rel="noopener"&gt;Local Data Filter&lt;/A&gt;, which allows the associated query to be copied or even modified.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-unlink="true"&gt;More &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/hover-labels.shtml#599909" target="_blank" rel="noopener"&gt;documentation on hover labels&lt;/A&gt; is available at the JMP website.&lt;/P&gt;
&lt;H3&gt;Beyond This Post&lt;/H3&gt;
&lt;P&gt;In the next posts, we will cover different aspects of the hover label extensions architecture. The first one talk about the high-level interface that exposes the vast majority of the new functionality. No coding skills required!&lt;/P&gt;
&lt;P&gt;In the meantime, check our Discovery 2020 presentation about this same topic: &lt;A title="From Details-on-Demand to Wandering Workflows: Getting to Know JMP Hover Label Extensions" href="https://community.jmp.com/t5/Discovery-Summit-Cary-2020/From-Details-on-Demand-to-Wandering-Workflows-Getting-to-know/ta-p/281539" target="_blank" rel="noopener"&gt;From Details-on-Demand to Wandering Workflows: Getting to Know JMP Hover Label Extensions&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;References&lt;/H3&gt;
&lt;P&gt;[Shneiderman 1996] &lt;A href="https://www.cs.umd.edu/~ben/papers/Shneiderman1996eyes.pdf" target="_blank" rel="noopener"&gt;"The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations,"&lt;/A&gt; by Ben Shneiderman. Department of Computer Science, Human-Computer Interaction Laboratory, and Institute for Systems Research. University of Maryland College Park.&lt;/P&gt;
&lt;H3&gt;Further Reading&lt;/H3&gt;
&lt;P&gt;B. Craft and P. Cairns, &lt;A href="https://www-users.cs.york.ac.uk/~pcairns/pubs/craft_cairns.pdf" target="_blank" rel="noopener"&gt;"Beyond guidelines: what can we learn from the visual information seeking mantra?,"&lt;/A&gt; Ninth International Conference on Information Visualisation (IV'05), London, UK, 2005, pp. 110-118, doi: 10.1109/IV.2005.28.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.stephen-few.com/nysi.php" target="_blank" rel="noopener"&gt;&lt;EM&gt;Now You See It: Simple Visualization Techniques for Quantitative Analysis&lt;/EM&gt;&lt;/A&gt;&lt;BR /&gt;Stephen Few, 2009&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.perceptualedge.com/articles/Whitepapers/Improve_Your_Vision.pdf" target="_blank" rel="noopener"&gt;&lt;EM&gt;Improve Your Vision and Expand Your Mind&lt;/EM&gt;&lt;/A&gt;&lt;BR /&gt;Stephen Few, 2007&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jan 2021 16:28:18 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Hover-labels-Beyond-details-on-demand/ba-p/346646</guid>
      <dc:creator>nascif_jmp</dc:creator>
      <dc:date>2021-01-25T16:28:18Z</dc:date>
    </item>
    <item>
      <title>Customizing JMP graphs</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Customizing-JMP-graphs/ba-p/345743</link>
      <description>&lt;P&gt;JMP is a &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software/core-capabilities-of-jmp.html#Data-Visualization" target="_blank" rel="noopener"&gt;powerful data visualization tool&lt;/A&gt;, helping you visually explore and understand your data, as well as enabling you to effectively communicate your findings to others. For the most important reports and presentations, &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; graphs need to look great: customized and presented in high resolution.&lt;/P&gt;
&lt;P&gt;This is the first of &lt;A href="https://community.jmp.com/t5/tag/creating%20publication-quality%20graphs/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;two blog posts&lt;/A&gt; on creating publication-quality graphs in JMP. The focus in this post is on customizing a graph’s appearance to meet specific aesthetic or technical needs; &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Getting-high-quality-graphics-out-of-JMP/ba-p/354772" target="_blank" rel="noopener"&gt;the second post&lt;/A&gt; covers getting graphics out of JMP in high-quality image formats.&lt;/P&gt;
&lt;P&gt;Note that I’m not going to cover the specifics of making graphs in &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/graph-builder-2.shtml" target="_blank" rel="noopener"&gt;Graph Builder&lt;/A&gt; here. That’s a topic worthy of separate treatment and is covered extensively elsewhere (for example, in &lt;A href="https://www.jmp.com/en_us/events/mastering/topics/basics-for-using-graph-builder.html" target="_blank" rel="noopener"&gt;this Mastering JMP webinar&lt;/A&gt;). Instead, I’m going to focus on customizing a graph’s appearance beyond the default settings applied by JMP, whether in Graph Builder or an analysis platform. I won’t cover every possible customization option, of course, but I will highlight some of the most useful ones. And while the example is taken from Graph Builder, the discussion also applies to graphs produced in analysis reports.&lt;/P&gt;
&lt;H3&gt;JMP’s graphs may be more customizable than you think&lt;/H3&gt;
&lt;P&gt;Graphs throughout JMP are highly customizable. Each graph is produced according to default settings (a number of which are themselves customizable in the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/jmp-preferences.shtml" target="_blank" rel="noopener"&gt;Preferences&lt;/A&gt;), but many customization options are available to help you get the graph looking just how you want it.&lt;/P&gt;
&lt;P&gt;Consider the line graph below, which was made in Graph Builder from the Corn Wheat Soybean Production sample data in the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/sample-data-tables.shtml" target="_blank" rel="noopener"&gt;Sample Data Library&lt;/A&gt;. It shows acres planted across time for three U.S. crops, with a reference line and annotation to show the authorization of the Renewable Fuel Standard (RFS) program in 2005. Two years later, there is a 25.7 million acre difference between corn and soy that many have attributed to increased ethanol demand triggered by the RFS program.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line Graph Custom.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29887iDED4DDA310E8009E/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line Graph Custom.png" alt="A customized line graph made in Graph Builder" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A customized line graph made in Graph Builder&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This graph has had a number of customizations to get it looking like this. It began as the graph below, produced by Graph Builder’s default settings. Both graphs show the same trends, but the customized version above better communicates the message. For example, the line colors align conceptually to the crops (e.g., yellow for corn, amber for wheat), the reference line indicates the timing of the RFS authorization, and an annotation makes explicit the size of the corn-soy difference in 2007. The customized graph arguably looks a little better aesthetically, thanks to increased line weights, the addition of horizontal grid lines and the placement of the legend inside the graph area. All these customizations – and many more – are possible in JMP.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line Graph Default.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29888iF1D5FEE77BA7F3CD/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line Graph Default.png" alt="A line graph made with Graph Builder's default settings" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A line graph made with Graph Builder's default settings&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Customizing the graph elements and area&lt;/H3&gt;
&lt;P&gt;Each of JMP’s graphs contains one or more &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/element-types-and-options.shtml" target="_blank" rel="noopener"&gt;elements&lt;/A&gt; (lines, points, bars, etc.) that populate the graph. In Graph Builder, many element properties are set with the properties areas on the left side of the Graph Builder window. However, these element properties specify &lt;EM&gt;what&lt;/EM&gt; &lt;EM&gt;the elements represent&lt;/EM&gt; (e.g., Should the line represent the mean or the sum?) rather than &lt;EM&gt;how the elements should look&lt;/EM&gt; (e.g., What color should the lines be?). The latter options are available by right-clicking inside the graph and choosing Customize. By doing so, the Customize Graph window is displayed, listing each element and, upon selection, that element’s customization options.&lt;/P&gt;
&lt;P&gt;Below I’ve selected the corn crop’s line element and set its color to yellow and width to eight. Note that the ordering of elements in the left list dictates the order in which elements are drawn, determining which element will appear on top of or beneath another when multiple elements overlap. This order can be changed using the up and down arrows above the list.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Customize Window.png" style="width: 611px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29889i5AB1085AAF712AE8/image-dimensions/611x283?v=v2" width="611" height="283" role="button" title="Customize Window.png" alt="The Customize Graph window" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Customize Graph window&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Element customization options are also available via the graph legend. For example, right-clicking on a line element in the legend brings up options to set color, style, width and transparency. This is a nice way to make a quick change to one element without navigating the full Customize Graph window. The legend is also the place to go for customizing color schemes or gradients, which is particularly useful when setting a color gradient for a heatmap or contour element.&lt;/P&gt;
&lt;P&gt;The graph area is the region in which all the individual elements are drawn, and it has its own customization options. You may wish, for example, to change the graph background color from white to gray or to remove the border. In my line graph, I’ve removed the graph area’s top and right borders. Graph area options are found under the Graph submenu available upon right-clicking in the graph area. You will find background and border settings there, as well as some other options, such as marker size settings and scaling options.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://en.wikipedia.org/wiki/Wikipedia:Too_long;_didn%27t_read" target="_blank" rel="noopener"&gt;TL;DR&lt;/A&gt;: A graph’s lines, points, colors schemes, borders, background, and more are all customizable. Right-click inside the graph or on the legend, and you’re bound to find the option you’re looking for.&lt;/P&gt;
&lt;H3&gt;Customizing legends&lt;/H3&gt;
&lt;P&gt;In Graph Builder or analysis reports, graph legends can be customized via right-clicking on the legend title and selecting &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/legend-options.shtml" target="_blank" rel="noopener"&gt;Legend Settings&lt;/A&gt; or by double-clicking on the legend itself. In my customized line graph, the legend has been oriented horizontally inside the graph area and the title has been removed. The horizontal orientation was set using the Item Direction setting, and the title was removed by deleting the text in the Title field. Note that the labels of the individual legend entries are editable via double-clicking on the label text, but I haven’t edited them here. This feature is handy if you want to enter something more readable or informative to your audience than the default labels that have populated the legend. Below I’ve double-clicked on “WHEAT” to enable editing of that label. &lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Legend Settings.png" style="width: 733px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29891i270735A0C79AA664/image-size/large?v=v2&amp;amp;px=999" role="button" title="Legend Settings.png" alt="The Legend Settings window" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Legend Settings window&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;In Graph Builder, the positioning of the legend relative to the graph area is an option under the red triangle. Options include placing the legend to the right or bottom of the graph area or overlaid inside the right or left side of the graph area; I chose inside right for my graph.&lt;/P&gt;
&lt;H3&gt;Customizing axes&lt;/H3&gt;
&lt;P&gt;JMP is quite good at choosing default axis settings when making graphs, but you might not always want to stick with the defaults. In my custom graph, I changed the Y-axis range and the X-axis increments and added horizontal gridlines. Changing axis ranges can be done interactively simply by hovering the pointer over the axis labels until the arrow changes to the grabber, which is shaped like &lt;A href="https://www.google.com/search?q=mickey+mouse+hand" target="_blank" rel="noopener"&gt;the gloved hand of a certain beloved cartoon rodent&lt;/A&gt; (albeit with an extra finger). Once you see the grabber, click and drag to scroll or scale the axis, as in the video below. Note that hovering over the middle of the axis reveals a horizontal grabber that scrolls the axis, while hovering over the ends of the axis reveals a vertical grabber that scales the axis.&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6228102028001" width="960" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/ccbb22c2-2c3f-466e-a70a-fe9d26f93fa5/main/160x90/12s516ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;My customized graph also contains horizontal grid lines on the Y-axis and a reference line on the X-axis, which are two of many options available by double-clicking on an axis. The &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/customize-axes-and-axis-labels-in-the-axis-settings-window.shtml" target="_blank" rel="noopener"&gt;Axis Settings&lt;/A&gt; window contains options for axis scale and increments, tick marks and grid lines, axis label font and orientation, and reference lines. The Axis Settings window also includes a preview of the axis’ appearance, so you can make sure it looks just how you want before applying the settings. The image below is of my X-axis settings. Note that the Label Position and Label Axis Side options for my reference line are new in JMP 16, coming March 2021.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Legend Settings.png" style="width: 726px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/29890i91AA9FD2ED806932/image-dimensions/726x647?v=v2" width="726" height="647" role="button" title="Legend Settings.png" alt="The Axis Settings window" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Axis Settings window&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Finally, what about axis titles? You may have noticed that the default Y-axis title read “Commodity Acres Planted” and was oriented vertically, but my customized Y-axis title reads “Acres Planted” and is oriented horizontally. Axis titles can be edited simply by clicking on the title and entering new text, and the rotation option (as well as font options) are found by right-clicking on the title.&lt;/P&gt;
&lt;H3&gt;Adding annotations&lt;/H3&gt;
&lt;P&gt;On my graph, I note that 2007 – two years after RFS authorization – saw a 25.7 million acre difference between corn and soy production. I used the &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/add-annotations-and-shapes-to-a-report.shtml" target="_blank" rel="noopener"&gt;annotation and shape tools&lt;/A&gt; to add the text and lines to my graph, respectively. After adding the annotation and line shapes and dragging them into position, right-clicking on each revealed further options, allowing me to fill the text box with white with the Filled option and to change the color of the two connector lines to gray.&lt;/P&gt;
&lt;H3&gt;Now that my graph is ready…&lt;/H3&gt;
&lt;P&gt;Everything above is only a taste of all that’s possible with JMP’s graph customization options. Hopefully this has boosted your intuition for what other options may be available for getting graphs looking just right. JMP’s online documentation explains many more customization options; here’s &lt;A href="https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/change-the-appearance-of-graphs.shtml" target="_blank" rel="noopener"&gt;a good place to start&lt;/A&gt; if you’re interested in learning more. When in doubt, right-click on the thing you want to customize, and there’s a good chance you’ll find just what you’re looking for. And failing that, the &lt;A href="https://community.jmp.com/" target="_blank" rel="noopener"&gt;JMP User Community&lt;/A&gt; is always ready to help.&lt;/P&gt;
&lt;P&gt;Now that my graph is ready, it’s time to get it out of JMP and into a document or slide as a high-resolution image. That’s what &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Getting-high-quality-graphics-out-of-JMP/ba-p/354772" target="_blank" rel="noopener"&gt;the next post&lt;/A&gt; is all about. It also returns to the topic of customization at the end, where you can see that if you export the graph in the right format, it’s &lt;EM&gt;editable outside of JMP&lt;/EM&gt;, opening up virtually infinite customization options.&lt;/P&gt;
&lt;P&gt;Follow me, dear reader, to &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Getting-high-quality-graphics-out-of-JMP/ba-p/354772" target="_blank" rel="noopener"&gt;the next post&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 02 Feb 2021 19:48:17 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Customizing-JMP-graphs/ba-p/345743</guid>
      <dc:creator>Ross_Metusalem</dc:creator>
      <dc:date>2021-02-02T19:48:17Z</dc:date>
    </item>
    <item>
      <title>Create live reports in JMP Clinical 8</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Create-live-reports-in-JMP-Clinical-8/ba-p/330723</link>
      <description>&lt;P&gt;&lt;A title="Clinical Data Analysis Software" href="https://www.jmp.com/en_us/software/clinical-data-analysis-software.html" target="_self"&gt;JMP Clinical&lt;/A&gt; offers multiple ways to share report results, from static reports to an in-product review viewer. New to JMP Clinical 8 is the ability to publish these results to &lt;A title="JMP Live for Users" href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html" target="_self"&gt;JMP Live&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28157iB11DE0CB5B6971F2/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Findings Bubble Plot in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Findings Bubble Plot in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28159i25939AA326883AD1/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Patient Profiler in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Patient Profiler in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since clinical data analysis and review are collaborative efforts, it is important that generating the analysis and sharing the results are both secure and convenient. JMP Live&amp;nbsp;is the ideal platform for users to interactively explore the results of a JMP Clinical analysis from a web browser.&lt;/P&gt;
&lt;P&gt;Once your site administrator has prepared a &lt;A title="JMP Live Resources" href="https://www.jmp.com/en_us/support/jmp-live-resources.html" target="_self"&gt;JMP Live&lt;/A&gt; instance, publishing results to JMP Live involves little more than a couple of mouse clicks. Let’s see how easy it is.&lt;/P&gt;
&lt;P&gt;First, generate or open some JMP Clinical results. Do any of the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Run a single report in Review Builder.&lt;/LI&gt;
&lt;LI&gt;Run an entire review in Review Builder.&lt;/LI&gt;
&lt;LI&gt;Open a saved review through Review Viewer.&lt;/LI&gt;
&lt;LI&gt;Run Patient Profiler.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Second, click the &lt;STRONG&gt;Create Live Report&lt;/STRONG&gt; button. Note that for Review Builder or Review Viewer, this button can be found at both the report level (to publish a single report) and at the review level (to publish an entire review).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 471px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28160i575CA62580F54CE3/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="The Create Live Report button can be found on the report and review toolbars in Review Builder." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Create Live Report button can be found on the report and review toolbars in Review Builder.&lt;/span&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 391px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28161i07554B0083645318/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="The Create Live Report button can also be found on the Patient Profiler toolbar." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Create Live Report button can also be found on the Patient Profiler toolbar.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Create Live Report&lt;/STRONG&gt; dialog is surfaced.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 574px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28163i4BDD86F879ABA195/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="The Create Live Report dialog." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Create Live Report dialog.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click &lt;STRONG&gt;Publish to JMP Live&lt;/STRONG&gt; to allow for maximum interactivity, server-side recomputing power, and sharing. Click &lt;STRONG&gt;Publish to File&lt;/STRONG&gt; to save a less interactive copy to your machine alone.&lt;/P&gt;
&lt;P&gt;Clicking &lt;STRONG&gt;Publish Data&lt;/STRONG&gt; sends a copy of underlying JMP data tables to JMP Live, which is recommended for maximum interactivity.&lt;/P&gt;
&lt;P&gt;With &lt;STRONG&gt;Allow data to be downloaded&lt;/STRONG&gt;, JMP Live users can download the data tables and scripts.&lt;/P&gt;
&lt;P&gt;By checking &lt;STRONG&gt;Warn if exceeds:&lt;/STRONG&gt; and specifying a value, &amp;nbsp;JMP Clinical will warn you if the estimated data set size sent for publishing exceeds a size of your choice. This feature helps you avoid unnecessary publish attempts if your JMP Live administrator has specified a maximum package size that is smaller than the sum of data set sizes that you are attempting to publish.&lt;/P&gt;
&lt;P&gt;Specify a &lt;STRONG&gt;URL&lt;/STRONG&gt; to the JMP Live instance.&lt;/P&gt;
&lt;P&gt;You can choose to &lt;STRONG&gt;Share with: Only me&lt;/STRONG&gt; (yourself), &lt;STRONG&gt;Everyone&lt;/STRONG&gt; at your organization who has access to JMP Live, or only specific &lt;STRONG&gt;Groups&lt;/STRONG&gt; of JMP Live users at your organization.&lt;/P&gt;
&lt;P&gt;Note that the settings in this dialog are retained for the next time you click &lt;STRONG&gt;Create Live Report&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Click &lt;STRONG&gt;OK&lt;/STRONG&gt; to publish to JMP Live.&lt;/P&gt;
&lt;P&gt;A notification window appears, indicating if the operation was successful.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 382px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28164i3EBF261AF1E00ACE/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Notification window for successful publish to JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Notification window for successful publish to JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your browser automatically takes you to JMP Live, where the published report appears.&lt;/P&gt;
&lt;P&gt;Depending on what you published, you will either be taken directly to the analysis or to an index page where you can drill down to individual analysis pages.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28165i294D28891CD80ED8/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="A JMP Live index page allowing navigation to individual report analysis pages." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A JMP Live index page allowing navigation to individual report analysis pages.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On the analysis pages, data filters, column switchers, hover labels and platform-specific controls allow for interactive exploration of the results.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28166i7851CDD126FCBE17/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Adverse Events Distribution in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Adverse Events Distribution in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click the &lt;STRONG&gt;Details&lt;/STRONG&gt; button to view or edit the title, description and thumbnail, to view or download data tables, and write comments.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 326px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28167i3486DAF7521A0CF7/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="The Details pane in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Details pane in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As you can see, JMP Live reports are a secure, powerful and interactive complement to the existing options for sharing JMP Clinical results. Be sure to check out interactive examples of JMP Live reports (&lt;A title="Medical Monitoring Review Example" href="https://public.jmp.com/packages/Example-Review-published-by-JMP-Clinical/js-p/ThxyVPV7f201lQLtYrKl3" target="_self"&gt;1&lt;/A&gt;, &lt;A title="Patient Profiler Example" href="https://public.jmp.com/packages/Example-Patient-Profile-published-by-JMP/js-p/c4LYSp8JKKFmZ2_jKbGp6" target="_self"&gt;2&lt;/A&gt;) on&amp;nbsp;&lt;A title="JMP Public" href="https://public.jmp.com/" target="_self"&gt;JMP Public&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Nov 2020 19:52:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Create-live-reports-in-JMP-Clinical-8/ba-p/330723</guid>
      <dc:creator>john_cromer</dc:creator>
      <dc:date>2020-11-23T19:52:27Z</dc:date>
    </item>
    <item>
      <title>JMP Clinical 8: Controlling how graphs and tables look with Study Metadata (Color and Value order management)</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Clinical-8-Controlling-how-graphs-and-tables-look-with-Study/ba-p/330308</link>
      <description>&lt;P&gt;The Set Value Order and Color in Studies feature in &lt;A href="https://www.jmp.com/en_us/software/clinical-data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Clinical&lt;/A&gt; enables users to customize the display of CDISC variables and levels collected in study metadata. This customization includes specifying a natural order, alphabetical order, or custom order, according to the nature of the variable and the user’s preferences.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 278px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28112i1EB23BC864C669D3/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="An example of a natural order." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;An example of a natural order.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New to JMP Clinical 8 is the ability to assign customized color preferences as well. Users can choose from a variety of predefined color themes to assign color based on position of the level in the list. They also can override one or more level colors with any color of their choice.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 109px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28113iF079A273EF106C68/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="An example of one override (gray for Placebo) applied over a color theme." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;An example of one override (gray for Placebo) applied over a color theme.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These study-level preferences can be set at the time the study is added, updated or any time after, from the study management toolbar.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 360px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28114iD37AFFFD6A3BDA75/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 552px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28115iD9637B2EC169ECB8/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Two ways to access the feature." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Two ways to access the feature.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These preferences are also carried over to the extent possible, through study data updates. In this example, the initial preference was a gradient theme, and three levels existed in study data. Upon registration of a new snapshot, a fourth level was introduced into the third slot based on the order preference. Its color was updated accordingly to the appropriate third color.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28117i2A20FF2259528052/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Value order and color preferences automatically applied to a newly introduced level." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Value order and color preferences automatically applied to a newly introduced level.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Users are notified when the data changes affect the value order and color preferences. For instance, a new value was introduced in the data, so the user may want to revisit the order and colors selected for that variable.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 554px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28118i3AF691173664F83B/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Notification to review value order and color preferences upon data updates." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Notification to review value order and color preferences upon data updates.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All these preferences are apparent in the results for the majority of JMP Clinical reports. They allow for a consistent and unified user experience, which enables a more efficient visual interpretation. Here you can see the consistency within a report. Notice that the colors for mild and severe can be reserved even when moderate is missing.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28218i538F1F6DA6CB454F/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&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-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28219i931A60E8757FCF95/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Consistency in level colors within a report." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Consistency in level colors within a report.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There is also consistency across reports. Here you can see that the colors chosen for treatment levels are held constant between two reports.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28220iC38CD0C2A65A1303/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&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-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28221i3099D8E995F8E79C/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Consistency in level colors across reports." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Consistency in level colors across reports.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Dialog&lt;/H3&gt;
&lt;P&gt;To access this feature, click on its icon in the Study Management toolbar.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 380px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28121i32263A3118450506/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Accessing the dialog through the Set Value Order and Color in Studies button on the Study Management toolbar." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Accessing the dialog through the Set Value Order and Color in Studies button on the Study Management toolbar.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A dialog will open containing the preferences for all currently selected studies.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28122i57E6087286949823/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="The Set Value Order and Color in Studies dialog." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Set Value Order and Color in Studies dialog.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The dialog is organized by study, followed by clinical domain, variable and level. Outlines allow the user to control vertical space and can be collapsed if necessary. Horizontal space is managed automatically by grabbing the sides of the window.&lt;/P&gt;
&lt;P&gt;Within each variable, the levels are exposed. The left side contains the value order controls. Users can sort Natural Ascending, Natural Descending, Alphabetical Ascending, Alphabetical Descending, or by any custom order of their choice.&lt;/P&gt;
&lt;P&gt;As order is changed, the legend preview in the middle changes. It reflects both order and color preferences.&lt;/P&gt;
&lt;P&gt;On the right side are the color controls. By default, colors are assigned to each level based on its position in the list, according to the color theme.&lt;/P&gt;
&lt;P&gt;Users can also override any of these choices with a specific color by clicking on a color box in the legend preview and picking any color from the rainbow.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 449px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28123iD468F4B5A1893CCC/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Overriding a theme color for the NOT APPLICABLE level." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Overriding a theme color for the NOT APPLICABLE level.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once an override is made, a plus sign (+) appears to the left of the level.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 474px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28124iB7AE4C0E2FF0FEBF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Example of an overridden color, NOT APPLICABLE, denoted by a plus sign (+) to the left of the level name." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Example of an overridden color, NOT APPLICABLE, denoted by a plus sign (+) to the left of the level name.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Colors from overrides are protected from any subsequent value order changes.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 476px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28125i5BE86B02416B1777/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Example of how overriding a level color prevents that color from being modified after making subsequent value order changes. It remains yellow despite being moved into the last position." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Example of how overriding a level color prevents that color from being modified after making subsequent value order changes. It remains yellow despite being moved into the last position.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Other color controls override all level colors (which reserves and protects all the current colors from subsequent value order or value color theme changes), swap two or more colors, clear overrides, and reset themes and overrides to factory defaults. Treatment variables have another button to apply the color preferences to all other treatment variables.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 395px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28126i8C2A689A80FBF72D/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Additional color theme and override controls." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Additional color theme and override controls.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At the bottom of the dialog, controls are available to make global changes within all currently selected studies. The first three options affect the outline view in the dialog. The next group is for global order changes. The third group is for global color changes.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 317px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28127i31406779BE1599C8/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Through the “All…” button, additional controls are available for making more global changes to view, order and color on the dialog." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Through the “All…” button, additional controls are available for making more global changes to view, order and color on the dialog.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, click OK to save the preference changes, or Cancel to discard them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Results&lt;/H3&gt;
&lt;P&gt;Let’s look at one report to see these preferences in action.&lt;/P&gt;
&lt;P&gt;The Adverse Events Distribution report reveals the chosen colors as we step through the Adverse Events Stacking columns. Notice that Severity is shown with stoplight colors for Mild, Moderate and Severe.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28128iB961B0980B77728B/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Adverse Events Distribution report results reflecting the chosen stoplight colors for Severity/Intensity." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Adverse Events Distribution report results reflecting the chosen stoplight colors for Severity/Intensity.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Counts Table reveals the chosen level order as we step through these columns again. Notice “Y” is shown before “N” for Serious Event.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image.png" style="width: 624px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/28222i21DE86B18BCAC520/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="Adverse Events Distribution report results reflecting the chosen value order for Serious Event." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Adverse Events Distribution report results reflecting the chosen value order for Serious Event.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can also see interactive examples of these preferences in action in JMP Live reports (&lt;A title="Medical Monitoring Review Example" href="https://public.jmp.com/packages/Example-Review-published-by-JMP-Clinical/js-p/ThxyVPV7f201lQLtYrKl3" target="_self"&gt;1&lt;/A&gt;, &lt;A title="Patient Profiler Example" href="https://public.jmp.com/packages/Example-Patient-Profile-published-by-JMP/js-p/c4LYSp8JKKFmZ2_jKbGp6" target="_self"&gt;2&lt;/A&gt;) on&amp;nbsp;&lt;A title="JMP Public" href="https://public.jmp.com/" target="_self"&gt;JMP Public&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;That is the Set Value Order and Color in Studies feature in JMP Clinical 8. I hope you enjoy using it.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Nov 2020 19:55:32 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Clinical-8-Controlling-how-graphs-and-tables-look-with-Study/ba-p/330308</guid>
      <dc:creator>john_cromer</dc:creator>
      <dc:date>2020-11-23T19:55:32Z</dc:date>
    </item>
    <item>
      <title>How to do a test for curvature in a DOE with JMP</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-to-do-a-test-for-curvature-in-a-DOE-with-JMP/ba-p/324399</link>
      <description>&lt;H3&gt;The Engineering Mailbag&lt;/H3&gt;
&lt;H3&gt;Episode 6: Watch out for the curves!&lt;/H3&gt;
&lt;H3&gt;TL;DR: &amp;nbsp;How do you do a simple test for curvature when you put center points in a DOE? Watch the video to find out!&lt;/H3&gt;
&lt;P&gt;As a new feature - I'm going to be providing a quick video walk through with these posts on the key points from the article. Just in case you need to get to the answer quickly. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="6205589102001" width="994" height="540" size="original" uploading="false" thumbnail="https://cf-images.us-east-1.prod.boltdns.net/v1/jit/6058004218001/70852926-d865-4c70-8974-ae714af48fc0/main/160x90/2m56s924ms/match/image.jpg" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Introduction&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="photo-1494256463612-66a664fd17e8.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27535iC4509B1CBEF5C3DC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="photo-1494256463612-66a664fd17e8.jpeg" alt="photo-1494256463612-66a664fd17e8.jpeg" /&gt;&lt;/span&gt;Every now and again, we systems engineers run into interesting questions that fall somewhat outside the&amp;nbsp;typical range of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td70114000002KZJq%20&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; usage. Other times, the query is just interesting and gives me an opportunity to delve deeper into why we do things the way we do in JMP.&lt;/P&gt;
&lt;P&gt;Today's particular question is something that needs to be addressed. It's one I get quite often when talking with people who were trained in classical DOE methods. So, this is an opportunity for me&lt;SPAN&gt; to help out a colleague fr&lt;/SPAN&gt;om Europe and show everyone else something interesting that you might not know how to do in JMP.&lt;/P&gt;
&lt;H3&gt;The question&lt;/H3&gt;
&lt;P&gt;Hi, Mike,&lt;/P&gt;
&lt;P&gt;I still have a question… If I do centre point runs, I am doing it to check if there is a quadratic term, but I may not be sure which term is quadratic. I should be able to check if there is significant curvature without associating it with any one factor, or am I wrong?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kevin&lt;/P&gt;
&lt;H3&gt;My response&lt;/H3&gt;
&lt;P&gt;Hi, Kevin!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;… I did a bunch of research on this curvature test. It turns out that it’s just a t-test! I found the equations in Montgomery’s books. More importantly, it’s really easy to do. It’s not a one-click solution, but I actually like it better, because it forces you to understand the hypothesis. I’ve attached a data table.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create a column in your data table that indicates where a row is a corner or center point. This could be done using recode if you have a column with the design code in it.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Go to Fit Y by X. Put your Response into Y, Response and the column you created indicating corner or center point into X, Factors.&lt;/LI&gt;
&lt;LI&gt;Click OK.&lt;/LI&gt;
&lt;LI&gt;Under the red triangle, run a t-test (not the pooled one, unless you have replicates). You want the p-value for Prob &amp;gt; |t|. The null hypothesis in this case is that the difference in the means (between center points and corner points) is zero. Montgomery’s explanation is that if the t-test indicates the means are different, then the center points lie on a different plane than the linear elements of the model (there’s curvature).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image001.png" style="width: 589px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27578iF5C1F851A7D1C5B5/image-dimensions/589x590?v=v2" width="589" height="590" role="button" title="image001.png" alt="image001.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you want everything in one report (à la [&lt;I&gt;a software package which shall remain nameless but rhymes with “really drab”&lt;/I&gt;]), you just have to include the column that flags the center points in the model as a main effect (see screenshot). When you click Run, the Effects Summary at the top would lead you to a similar conclusion (that differentiating between center-points and corner points isn't significant). Have a look and see if you can confirm on your data set.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image002.png" style="width: 634px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27579iE42149A93D0CA0FE/image-dimensions/634x421?v=v2" width="634" height="421" role="button" title="image002.png" alt="image002.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image003.png" style="width: 568px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27580i640C91106B71220B/image-dimensions/568x817?v=v2" width="568" height="817" role="button" title="image003.png" alt="image003.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Best,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;M&lt;/P&gt;
&lt;H3&gt;What the heck did I just suggest?&lt;/H3&gt;
&lt;P&gt;Before I go down the rabbit hole on this topic, let me give a bit of background on this question – because my colleagues and I get it &lt;EM&gt;all the time&lt;/EM&gt;. Basically, the issue stems from classical screening designs (Fractional Factorial, Plackett-Burman, etc.). These designs generally employ a two-level with multiple center point strategy. The upshot of this is that, within the confines of classical design (more on that later), it’s really efficient resourcewise. The downside is that it only lets you look for main effects and some interactions (if you’re lucky). The center points are added as a hedge to tell the experimenter if they need to consider quadratic terms in later rounds of experimentation. And that’s why you need this test for curvature business.&lt;/P&gt;
&lt;P&gt;OK, back to my suggestion. I made what might seem like an odd suggestion. I’m proposing that it’s possible to locate curvilinear ($10 word!) behavior in a designed experiment simply by using the lowly t-test. I mean, it seems like we should need something sexier when looking for a sexily named phenomenon like &lt;EM&gt;curvilinear behavior&lt;/EM&gt;. Well, we don’t. And it turns out, this is not my idea. As I mentioned, the first example that I found of the technique is in Douglas Montgomery’s book, “Design and Analysis of Experiments.” This book was required reading in my first stats class in grad school. Good class, great book. Anyway, back to the topic at hand.&lt;/P&gt;
&lt;P&gt;I’m not going to go into all the math of why this works, but here’s the basic idea: If the data collected from a system under study has strictly linear relationships, (e.g., you can connect all points in the data set using just straight lines), then the confidence interval for the mean of data set (excluding the center points) should contain the confidence interval of the mean of the center points. Therefore, if we do a t-test on the means of the edge and corner points vs. the global center points, low p-values would be evidence of curvature somewhere in the system and high p-values would indicate insufficient evidence for curvature in the system. That doesn’t mean it’s not there, just that things are too noisy to tell. Now, since that’s a lot to take in, let’s have a look at some examples so you can see what this looks like.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;A trivial example&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;This is probably easiest to visualize in a trivial case with two continuous factors. Note here that I’m simulating the data and am running with a lot more data than you normally would with a two-factor design. This is for illustrative purposes, so just go with me. Also, note that all the examples in this post are on &lt;A href="https://public.jmp.com/featured" target="_blank" rel="noopener"&gt;JMP Public&lt;/A&gt;, so you can get the data sets there if you want to play with them.&lt;/P&gt;
&lt;P&gt;OK, here’s a designed experiment with two factors and three center points.&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/2-Factor-Design-with-Center-Points/js-p/f8NPvNy04YTw2RPB6JMWN-1/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;The center points are colored red so that they can be located later. Now, let’s simulate some data into the design without any quadratic effects. In JMP, we can do this using the simulate response capabilities in the DOE platforms. &lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;Now, before we look at that t-tests, let’s have a look at what’s going on in the data itself. We’ll turn to a 3D scatterplot. I’ve added the fitted model with 95% confidence interval to show the plane that Montgomery mentions.&lt;/SPAN&gt;&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-center" image-alt="Linear.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27551i2B607A28782982B6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Linear.gif" alt="Linear.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;You can see that when there is no curvature present, the data points sit within the region defined by the upper and lower confidence intervals (blue and purple meshes).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Now, let’s do one where I’ve put some curvature into the simulated model. I’m using the same linear and two-factor interaction coefficients and just added in some quadratic effects to the data. &lt;/SPAN&gt;First, let’s have a look at the 3D plots:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Curvature.gif" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27552iEA348836840DBE18/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Curvature.gif" alt="Curvature.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Notice how the red center points are no longer in the plane defined by the blue edge/corner points? Do you also see how the center points are &lt;/SPAN&gt;&lt;EM style="font-family: inherit;"&gt;outside&lt;/EM&gt;&lt;SPAN style="font-family: inherit;"&gt; the confidence interval for the surface? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Now if we look at the t-tests for these data sets (I used a column switcher in JMP Public to show both), we can see that the confidence intervals for the center points and edge locations overlap nicely in the case where there is no curvature. &amp;nbsp;The p-values for that t-test are quite high, just like we would expect. &amp;nbsp;Then you can switch to the case where there is curvature and see the differences in the confidence intervals and the p-values. &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/t-Test-for-Curvature-in-2-Factor-Design/js-p/f8NPvNy04YTw2RPB6JMWN-2/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;The t-test indicates that there is strong evidence that the center points are not in the same population as the edge/corner points. However, we know that the data is collected from the same system, so there has to be another explanation – which is that the system is more complex that we thought and has curvilinear behavior.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Something a little more complex&lt;/H3&gt;
&lt;P&gt;Next, let’s turn up the heat on the problem a bit: five factors. The question here is, &lt;EM&gt;does the same logic hold for multiple factors as for two? &lt;/EM&gt;We can’t really visualize this, so we’re going to have to rely on the p-values from the t-test. But we’re asking the same question: does the confidence interval from mean for the center points overlap with the mean from the edge/corner data points? That’s it. And, the same logic still holds.&lt;/P&gt;
&lt;P&gt;In this example, I’ve done basically the same thing as in the first one. Below is the scatterplot matrix for the design space. Red marks are center points, blue ones are edge or corners. Also note that some of the data points are missing from a classic full factorial design. I did that to show that this works even with the JMP custom design methodology.&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/5-Factor-Custom-Design-with-Center-Point/js-p/f8NPvNy04YTw2RPB6JMWN-3/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;And if we look at the t-tests for the two simulations, we can see the p-values indicate really clearly when there is curvature present in the data set.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/t-Test-for-Curvature-in-5-Factor-Design/js-p/f8NPvNy04YTw2RPB6JMWN-4/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;And that would appear to be that. Right?&lt;/P&gt;
&lt;P&gt;Well, not really. You see there’s another school of thought around DOEs, and I’m going to argue that it solves this problem more efficiently than just slapping some global center points on a screening design and calling it a day.&lt;/P&gt;
&lt;H3&gt;What modern DOE says you should do about curvature&lt;/H3&gt;
&lt;P&gt;This whole issue of curvature in a DOE stems from two problems in classical design. The first is the fact that, at one point, people had to do the calculations for DOEs on an actual pad of paper with an actual pencil and probably an RPN calculator (for true geek cred). The designs were therefore chosen to make these calculations as easy as possible. This imposed the idea of orthogonality into the world of experimental design. Orthogonality makes the math a lot easier for people to wrap our heads around. The second problem was the actual creation of the design. Orthogonal designs are fairly easy to conceptualize and fit nicely with the traditional scientific method. They could be easily codified into experimenters’ reference books.&lt;/P&gt;
&lt;P&gt;Both of those problems are now solved. Odds are pretty good that you’re not doing data analysis with a calculator (RPN or otherwise). And, you’re probably not consulting some dusty tome to determine your experimental set up, although you might be using the digital equivalent and not know it. The fact is that, unless you’re in a stats class with a really hardcore prof, you’re going to use software to analyze your design and probably generate it, too. This means that you don’t have to do DOE analysis with a pencil and paper – you can let the computer figure it out. It also means that you can let computer algorithms figure out where experiments should go in the design space, allowing you to create a custom design to your exact specifications. Throwing the old requirements out the window gives you access to an incredibly powerful class of tools called &lt;EM&gt;modern experimental designs&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;I’m not going to go too far into modern DOEs (there are great books out there on the topic: &lt;A href="https://www.wiley.com/en-us/Optimal+Design+of+Experiments%3A+A+Case+Study+Approach-p-9780470744611" target="_blank" rel="noopener"&gt;this one&lt;/A&gt; and &lt;A href="https://www.wiley.com/en-us/Design+of+Experiments%3A+A+Modern+Approach%2C+1st+Edition-p-9781119611196" target="_blank" rel="noopener"&gt;this one&lt;/A&gt; are good places to start) and new articles are coming out all the time in the literature. I am going to focus in a little on one part of modern DOE: the optimal design. The nickel tour version of optimal design is that it allows you to define where you think the curvature is from the beginning. The algorithm then sets up the appropriate experimental conditions to test if it’s there without wasting anything. And that’s important. It’s pretty rare to run into a situation where you don’t have some idea if there’s curvature in the system of study. If you’re working with subject matter experts during the design generation process, they &lt;EM&gt;should&lt;/EM&gt; know that kind of thing. Here’s a snapshot of what that looks like in JMP:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_0-1603386288461.png" style="width: 738px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27582i443E93C61622D73F/image-dimensions/738x517?v=v2" width="738" height="517" role="button" title="MikeD_Anderson_0-1603386288461.png" alt="MikeD_Anderson_0-1603386288461.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the model section, I’ve indicated that I think main effects are important and that the interaction is important. The green box around the two squared terms indicates that I think there is curvature in the system in those two factors. The optimal design will then put the center points in the correct places to test for that. Now, if I had five factors, I could choose which ones I want to explore for curvature by including only them in the model terms, like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_1-1603386463932.png" style="width: 759px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27583i578C0D0495D8623A/image-dimensions/759x611?v=v2" width="759" height="611" role="button" title="MikeD_Anderson_1-1603386463932.png" alt="MikeD_Anderson_1-1603386463932.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Note all the combinations I’m not including here (interactions and powers); they are all material that I don’t have to use. And when we analyze this design, we’ll still be able to check for curvature as part of the model generation process:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Custom-Design-Example-using-Fit-Model/js-p/f8NPvNy04YTw2RPB6JMWN-5/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Now, if you want to check for curvature as part of a screening design, you also have a modern method: definitive screening designs. They have center points baked in and are still much more efficient that fractional factorial and other design types. There are some great resources by Brad Jones on the JMP Community. &amp;nbsp;Here are some of my favorites:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Introducing-definitive-screening-designs/ba-p/30075" target="_blank" rel="noopener"&gt;&lt;SPAN style="font-family: inherit;"&gt;Introducing Definitive Screening Designs&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2020/21st-Century-Screening-Designs-2020-US-45MP-538/ta-p/281493" target="_blank" rel="noopener"&gt;&lt;SPAN style="font-family: inherit;"&gt;21st Century Screening Designs&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMP-Blog/Proper-and-improper-use-of-Definitive-Screening-Designs-DSDs/ba-p/30703" target="_blank" rel="noopener"&gt;&lt;SPAN style="font-family: inherit;"&gt;Proper and improper use of Definitive Screening Designs&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-Europe-2016/Powerful-Analysis-of-Definitive-Screening-Designs-Taking/ta-p/23773" target="_blank" rel="noopener"&gt;&lt;SPAN style="font-family: inherit;"&gt;Powerful Analysis of Definitive Screening Designs&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-2017/Simulating-Responses-and-Fitting-Definitive-Screening-Designs/ta-p/44056" target="_blank" rel="noopener"&gt;&lt;SPAN style="font-family: inherit;"&gt;Simulating Responses and Fitting Definitive Screening Designs&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Final thoughts&lt;/H3&gt;
&lt;P&gt;So, that’s it. It’s a great idea to watch out for curves in your designed experiments. And you can easily test for curvature with center points in JMP using a t-test. There’s nothing magical about the analysis. I’d also encourage you to have a look at some of the modern experimental design methods coming out. Until next time, TTFN!&lt;/P&gt;</description>
      <pubDate>Fri, 19 Mar 2021 18:32:51 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-to-do-a-test-for-curvature-in-a-DOE-with-JMP/ba-p/324399</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2021-03-19T18:32:51Z</dc:date>
    </item>
    <item>
      <title>Working with graphics segments and how to create spider charts in JMP</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Working-with-graphics-segments-and-how-to-create-spider-charts/ba-p/318861</link>
      <description>&lt;H3&gt;The Engineering Mailbag&lt;/H3&gt;
&lt;H3&gt;Episode 5: I. DO. NOT. LIKE. SPIDERS!!! (And spider plots can take a hike, too.)&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="k-mitch-hodge-SZA_CBN-K9Q-unsplash.jpg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27236iA751D8390C603517/image-size/medium?v=v2&amp;amp;px=400" role="button" title="k-mitch-hodge-SZA_CBN-K9Q-unsplash.jpg" alt="I can't ignore spider plots forever, so here we go..." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;I can't ignore spider plots forever, so here we go...&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Every now and again, we systems engineers run into interesting questions that would fall somewhat outside the&amp;nbsp;typical range of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td70114000002KZJq%20&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;&lt;U&gt;JMP&lt;/U&gt;&lt;/A&gt; usage. These applications are generally clever, often bringing home how using data isn’t just for business or technical problems. Other times, the questions are just unexpected, challenging problems. These “curve balls” (as I like to call them) come in many different forms: coding problems, interesting analyses, ways of visualizing data…you get the idea.&lt;/P&gt;
&lt;P&gt;Occasionally, I’ll get questions about problems that I really don’t want to answer. Today's query is in that little pile, and I have avoided this one for &lt;EM&gt;years&lt;/EM&gt;! The subject of this entry in The Mail Bag is generally regarded as a scary, unpleasant plot by the data viz community, so I guess it’s appropriate for a Halloween post.&lt;/P&gt;
&lt;P&gt;Since this type of plot shows up regularly for cosmetics and consumer analytics customers in my day-to-day work, I can't ignore it forever. So, I’m taking this as an opportunity to help out a number of users groups in New York and New Jersey. But I have to say…I really do not like spider plots.&lt;/P&gt;
&lt;H3&gt;The question&lt;/H3&gt;
&lt;P&gt;Like I said, I’ve received this question more often than I care to mention. So, I’m going to skip the actual question email, you'll just have to trust me that there have been several.&lt;/P&gt;
&lt;P&gt;There were also some in-person requests.&lt;/P&gt;
&lt;P&gt;And a few posts on the JMP Community.&lt;/P&gt;
&lt;P&gt;Yeah.&lt;/P&gt;
&lt;P&gt;Below is an example from a peer-reviewed paper that someone gave me as a reference for what they would like to see:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image1.png" style="width: 319px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27239i2EDD9EB9D51C32DD/image-size/large?v=v2&amp;amp;px=999" role="button" title="image1.png" alt="(J. Inst. Brew. 2012; 118: 325–333)   Author's note to any data visualization specialist that may be reading this: Please forgive me. I know this is an awful graph." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;(J. Inst. Brew. 2012; 118: 325–333)   Author's note to any data visualization specialist that may be reading this: Please forgive me. I know this is an awful graph.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;The response&lt;/H3&gt;
&lt;P&gt;My general response for these requests historically falls along the lines of what most data visualization experts have said, which is to discourage people from using this plot if at all possible. However, recently, I started thinking about this persistent question a little differently. I’ve since taken a different tack on the problem.&lt;/P&gt;
&lt;P&gt;My current philosophy about spider plots is that I’m open to helping people see how to make one if I can also show them better ways to present the same information along the way. As was the case with &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Problem-solving-in-JMP-and-using-graph-customizations-to-create/ba-p/59289" target="_blank" rel="noopener"&gt;the other visualization question I answered&lt;/A&gt;, for me, the process of making this chart was much more instructive than the actual result.&lt;/P&gt;
&lt;H3&gt;I. HATE. SPIDERS.&lt;/H3&gt;
&lt;P&gt;OK, I have (or rather, had) a strong antipathy for spiders for many years. I wouldn’t quite call it a full-blown case of arachnophobia, but for many years I would dispatch anything with eight legs (and occasionally six; you can never be too sure!) with extreme prejudice. I gave no mercy. I gave no quarter. I. Took. No. Prisoners. Anyway, I eventually got over it. And, with the exception of ticks (vampire spiders!), I have made peace with my eight-legged friends. We generally just stay out of each other’s way now. I’d like to think that part of my aversion to spider plots came from my issue with spiders, but it could also be that they’re a royal pain and I instinctively knew that making one would be a bit scary. That’s not to say there aren’t some interesting coding problems involved in constructing them, particularly if you want them to have the interactivity users expect from JMP (just that I knew the code itself was going to be a bit intimidating). Anyway, let’s have a look at the problem.&lt;/P&gt;
&lt;H3&gt;Scoping the problem&lt;/H3&gt;
&lt;P&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;Practicing what I preach&lt;/A&gt;, I started with a problem statement:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I want to make a JMP add-in that displays a spider plot and other possible ways of visualizing a data set in a framework that I can add on to later.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;I&gt;&lt;/I&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;The next step is to create a punch list of the different things that I need to do:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Get the dimensions for graphing from the user.&lt;/LI&gt;
&lt;LI&gt;Get a label column from the user for each data subset.&lt;/LI&gt;
&lt;LI&gt;Construct an interactive spider chart for the provided dimensions by each subset.&lt;/LI&gt;
&lt;LI&gt;Construct an interactive radial chart for the provided dimensions by each subset.&lt;/LI&gt;
&lt;LI&gt;Construct an interactive parallel chart for the provided dimensions by each subset.&lt;/LI&gt;
&lt;LI&gt;Construct an interactive table of pairwise correlations for the provided dimensions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Scoping the problem revealed some good news, specifically, I can offload a lot of this stuff to JMP if I use Application Builder, which will also make it really easy to add new visualizations later if needed. The challenging bits were mostly around the first two charts and making them interactive. JMP’s graphs work in Cartesian coordinate systems (&lt;EM&gt;x&lt;/EM&gt; and &lt;EM&gt;y&lt;/EM&gt; coordinates). Those graphs are, for all intents and purposes, in a polar coordinate system (&lt;EM&gt;r&lt;/EM&gt; and φ coordinates). As a result, I am going to need some code to convert back and forth between Cartesian and polar coordinate systems. Let’s start there. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Coordinate transform functions&lt;/H3&gt;
&lt;P&gt;Here’s the function that I used for working between the two coordinate systems:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;polarToRect = Function( {r, t},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eval List( {r Cosine( t ), r Sine( t )} )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;It’s fairly simple. Just what you’d find from a geometry textbook. It is a pretty nice little bit of code, in that it takes radius (r) and angle (t) and returns a coordinate pair (x,y). BTW, this function is also in an application that I reference later on that’s included in the JMP sample applications.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Because I’m working in Application Builder, just about everything else I’m going to do will be either a function or an expression. Everything about this project is also spectacularly repetitive, so it will make the iterative parts of my code easier to read if I’m just calling functions.&lt;/P&gt;
&lt;H3&gt;The easy bits&lt;/H3&gt;
&lt;P&gt;If you have a look at the final &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Spider-Plot-Add-in/ta-p/250634" target="_blank" rel="noopener"&gt;app source&lt;/A&gt;, you can see that I’m leveraging some existing parts of JMP: Graph Builder for a parallel plot, and Multivariate for the pairwise correlations. They were created, almost exclusively, using JMP generated code or capabilities in the Application Builder. So, we’ll get them out of the way first.&lt;/P&gt;
&lt;P&gt;Because of the way that Graph Builder treats columns in this case, and the fact that I have to be able to handle an arbitrary number of variables, it’s easier for me to build the Graph Builder script as an expression and then append it to the main display tree in the correct place. Here’s the code for that:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;drawParallel = Function( {pCol},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {default Local},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // build the list of variables with the format "X( :col1), X( :col2)" as a string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // also building a list of plot elements
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colStr = "";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gElemStr = "";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= N Items( pCol ), i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( i == 1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colStr = colStr || "X(" || Char( pCol[i] ) || ")";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gElemStr = gElemStr || "X(" || Char( i ) || ")";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colStr = colStr || ", X(" || Char( pCol[i] ) || ", Position( 1))";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gElemStr = gElemStr || ", X(" || Char( i ) || ")";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the grouping variable as a string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xVarStr = Char( gCol );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Insert the strings into the main string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eval(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Parse(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eval Insert(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "parallelVLB &amp;lt;&amp;lt; Append(Graph Builder(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size( 766, 256 ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Show Control Panel( 0 ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Show Legend( 0 ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Variables( ^colStr^, Color( ^xVarStr^ ) ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Elements( Parallel( ^gElemStr^, Legend( 3 ) ) ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendToReport(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispatch(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \!"Graph Builder\!",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutlineBox,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {Set Title( \!"Parallel Plot\!" ), Image Export Display( Normal )}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispatch( {}, \!"X title\!", TextEditBox, {Set Text( \!"Variables\!" )} ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispatch( {}, \!"graph title\!", TextEditBox, {Set Text( \!"\!" )} )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Notice that all I’m doing is formatting the variables as strings and plugging them into the right spots in the code and then running it. The end result is a fully interactive parallel plot in my app with very little coding on my part. I tried to script up a parallel plot manually; it worked, but just barely. I don’t recommend it. Just use Graph Builder and &lt;FONT face="andale mono,times"&gt;Append()&lt;/FONT&gt;. I’m also using the &lt;FONT face="andale mono,times"&gt;Eval Insert()&lt;/FONT&gt; construct.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It’s a little easier to read than constructing the string using concatenations.&lt;/P&gt;
&lt;P&gt;The multivariate plot is just a simple Parameterization of the Multivariate Platform in JMP. I didn’t even have to write code to get this bit! There’s an &lt;A href="https://community.jmp.com/t5/Tutorials/Building-Custom-Applications-using-JMP/ta-p/276353" target="_blank" rel="noopener"&gt;Advanced Mastering JMP webinar&lt;/A&gt; that shows how to do that with just mouse clicks. Again, I’m just doing these bits this way for convenience and because I really didn’t want to spend a huge amount of time on this part of the app. It’s not being lazy – it’s being an efficient coder. JMP gives you the code, so you might as well save yourself some time.&lt;/P&gt;
&lt;H3&gt;The radial plot&lt;/H3&gt;
&lt;P&gt;The radial plot is actually a port (with some modifications) of an example app that’s included in JMP’s samples directory. The big modification is that I’m using &lt;FONT face="andale mono,times"&gt;Marker Seg()&lt;/FONT&gt; instead of &lt;FONT face="andale mono,times"&gt;Marker()&lt;/FONT&gt;. And, that’s actually an important point. It’s possible to make &lt;FONT face="andale mono,times"&gt;Marker()&lt;/FONT&gt;&amp;nbsp;interactive using some mouse capture commands and some logic, but &lt;FONT face="andale mono,times"&gt;Marker Seg()&lt;/FONT&gt;&amp;nbsp;handles all this &lt;EM&gt;automatically&lt;/EM&gt;. You just have to tell it which data table you need it to monitor.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;drawFlies = Function( {nP, pCol, obj},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {default Local},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a list of angles for the spider plot
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = ((1 :: nP) - 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = Shape( th, nP, 1 );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = 2 * Pi() * th / nP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the data from the table as a matrix.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel_dat = J( N Row( DataTable1 ), N Items( pCol ), 0 );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= N Items( pCol ), i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel_dat[0, i] = pCol[i] &amp;lt;&amp;lt; get as matrix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // now get a matrix with two columns and nvars rows to keep track of the min and max of each variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max = J( nP, 2, 0 ); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // column1: minimum, column2: maximum. row for each variable chosen
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nP, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 1] = Min( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 2] = Max( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create some empty matrices for the converted values
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xMat = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yMat = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the data matrix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nR, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current = sel_dat[i, 0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for each variable, subtract the minimum and then divide by the range.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adj = J( N Row( current ), 1, 0.0 ) + 1.0 * ((current - min_max[0, 1]`) (min_max[0, 2] - min_max[0, 1])`);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adj = adj`;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; total = Sum( adj );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {x, y} = polarToRect( adj, th );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = Sum( x ) / total;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y = Sum( y ) / total;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xMat = xMat |/ x;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yMat = yMat |/ y;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw markers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateRad = Expr(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Matrices and book-keeping variables
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xCoord = xxx;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yCoord = yyy;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj[FrameBox( 1 )] &amp;lt;&amp;lt; Append Seg( Marker Seg( xxx, yyy, Row States( DataTable1 ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Substitute values into the annotation expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Substitute Into( annotateRad, Expr( xxx ), xMat, Expr( yyy ), yMat );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateRad;
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;As you can see, A LOT of the code is dealing with the radial transforms, etc.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The interesting bit for this discussion doesn’t happen until you’re almost at the end of the function. (Hint: Look for the &lt;STRONG&gt;Draw Markers&lt;/STRONG&gt; comment.) I’m appending a &lt;FONT face="andale mono,times"&gt;Marker Seg()&lt;/FONT&gt;&amp;nbsp;to the Graph Elements stack. If you right-click on the radial plot in the finished report and select &lt;STRONG&gt;Customize&lt;/STRONG&gt;, you can see it in there:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image2.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/27240i4D09ED0D218FB282/image-size/large?v=v2&amp;amp;px=999" role="button" title="image2.png" alt="image2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The reason that &lt;FONT face="andale mono,times"&gt;Marker Seg()&lt;/FONT&gt; is so powerful is that it has that &lt;FONT face="andale mono,times"&gt;Row States()&lt;/FONT&gt; reference in it. Remember, everything in JMP is linked through the data table via row states. So, by telling JMP which data table the report needs to communicate with, I can sync up all the charts in the report and have all the interactivity I’m used to with JMP. And it's just by going from Markers to Marker Segments (which blew my mind when I got it working).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;The spider plot&lt;/H3&gt;
&lt;P&gt;OK, we’ve got nothing else that I can talk about except that dang spider plot. So, let’s get into it.&lt;/P&gt;
&lt;P&gt;Since a spider plot is basically a parallel plot wrapped around central axis, we’re more or less going to have to make a parallel plot – with all the points projected onto the polar coordinate system. And, if that sounds painful, you’re right. It is. It’s also really, &lt;EM&gt;really&lt;/EM&gt; hard for your brain to process radial information. So, that one change – from Cartesian to polar – makes spider charts significantly harder to read. Anyway, I’ll save the discourse on the merits of this graph for another time. On to the code!&lt;/P&gt;
&lt;P&gt;The good news is that since I’m really only dealing with one dimension per variable, I have full control over the &lt;EM&gt;angular&lt;/EM&gt; part of the coordinate system. So, there’s some transformation work there, but it’s not that bad. It gets messy when you need to consider that the user might want a wider scale displayed than the data actually covers, e.g., the values are between 3 and 5 but the possible scale is 1 to 7. I was able to handle that by looking for an axis column property and then getting the max and min values from there. Since that’s not a critical point in the narrative, you can see how that was done in the source code I’ve included with the add-in.&lt;/P&gt;
&lt;P&gt;The radial spokes and reference lines are just lines drawn using the &lt;EM&gt;Line()&lt;/EM&gt; command. The hardest part of this whole thing was making the webs for each row interactive and getting the legend to work. I made the lines interactive by employing a &lt;FONT face="andale mono,times"&gt;Line Seg()&lt;/FONT&gt; and a &lt;FONT face="andale mono,times"&gt;Marker Seg()&lt;/FONT&gt;. The legend was a repurposing of a really old piece of JMP I ran into recently called a Row Legend. Let’s look at each of them.&lt;/P&gt;
&lt;P&gt;Here’s the code for creating the lines on the spider chart. As with the radial chart, it takes a lot of data manipulation just to get it into a format that makes sense to graph:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;drawTrails = Function( {nP, pCol, obj},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {default Local},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a list of angles for the spider plot
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = ((1 :: nP) - 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = Shape( th, nP, 1 );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; th = 2 * Pi() * th / nP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the data from the table as a matrix.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel_dat = J( N Row( DataTable1 ), N Items( pCol ), 0 );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= N Items( pCol ), i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel_dat[0, i] = pCol[i] &amp;lt;&amp;lt; get as matrix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // now get a matrix with two columns and nvars rows to keep track of the min and max of each variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max = J( nP, 2, 0 ); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // column1: minimum, column2: maximum. row for each variable chosen
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if the user wants to use axis column property values for max and min.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( axisProp == 0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Directly calculate the values from the data table.&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nP, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 1] = Min( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 2] = Max( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If the user wants to use axis column property values
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nP, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Pull the column name and check if the axis property is defined
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col = pCol[i];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; axisFlag = Contains( col &amp;lt;&amp;lt; Get Properties List, Expr( Axis ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //If the axis property is present pull the values from the property
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( axisFlag == 1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; axisPresent = col &amp;lt;&amp;lt; Get Property( "Axis" );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 1] = Eval( Extract Expr( axisPresent, Min( Wild() ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 2] = Eval( Extract Expr( axisPresent, Max( Wild() ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if the property is not present, calculate the values directly from the data
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 1] = Min( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_max[i, 2] = Max( sel_dat[0, i] );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create some empty matices for the converted values
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xMat = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yMat = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the data matrix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nR, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current = sel_dat[i, 0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for each variable, subtract the minimum and then divide by the range.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adj = J( N Row( current ), 1, 0.0 ) + 1.0 * ((current - min_max[0, 1]`) (min_max[0, 2] - min_max[0, 1])`);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adj = adj`;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // an error check form missing values in the vector
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( k = 1, k &amp;lt;= N Rows( adj ), k++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( Is Missing( adj[k] ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adj[k] = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {x, y} = polarToRect( adj, th );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xMat = xMat |/ x;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yMat = yMat |/ y;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw Lines and Markers for spider plot
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateSpider = Expr(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // coordinate matrices
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xMat = xxx;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yMat = yyy;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nParam = nnn;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nPoints = N Rows( xMat );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nGroups = nPoints / nParam;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Reshape the matrices to make them easier to work with
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xSMat = Shape( xMat, nGroups );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ySMat = Shape( yMat, nGroups );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create an empty string to hold a list (as a string)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pathList = "";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw the lines as polygons using the reshaped matrix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nGroups, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the coordinates for a given path and add the first value to the end to close the path
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xCoord = xSMat[i, 0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xCoord = xCoord || xCoord[1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yCoord = ySMat[i, 0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yCoord = yCoord || yCoord[1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj[FrameBox( 1 )] &amp;lt;&amp;lt; Append Seg( Line Seg( xCoord, yCoord, Row States( DataTable1, {i} ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw the markers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For( i = 1, i &amp;lt;= nP, i++,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the coordinates for a given path
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xCoord = xSMat[0, i];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yCoord = ySMat[0, i];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Run Markers Seg (need to move and reformat the matrix)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj[FrameBox( 1 )] &amp;lt;&amp;lt; Append Seg( Marker Seg( xCoord, yCoord, Row States( DataTable1 ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Substitute values into the annotation expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Substitute Into( annotateSpider, Expr( xxx ), xMat, Expr( yyy ), yMat, Expr( nnn ), nP );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Run the annotation expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateSpider;
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The important bits are the Line and Marker segments toward the end. I had to draw each connecting line individually. There is a &lt;FONT face="andale mono,times"&gt;Path Seg()&lt;/FONT&gt; that would have made this really easy, but it creates a filled polygon if you try to color it. So, Lines and Markers it was! By using Graphic Segments, it's really easy to hook back to the data table through the Row States operator. Now, because all the graphs are looking at the row states from the main data table, it becomes possible to color them all simultaneously by assigning colors to each Row State in the data table.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;When you right-click on some of the graphs in JMP, there will be the Row Legend option. It’s been in JMP for a while and does two things. First, it colors the rows in the data table by column (like the Red Triangle Menu option in the data table does). Second, it creates a little legend next to the visualization. That’s all I had to do to get the colors in sync with one another across four graphs. Here’s the code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;drawLegend = Function( {gVar, obj},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {default Local},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // extract the column name with the grouping variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colName = gVar[1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pass the variables into the expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateLegend = Expr(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj[FrameBox( 1 )] &amp;lt;&amp;lt; Row Legend( ggg, Color( 1 ), Continuous Scale( 0 ) )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // substitute into the expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Substitute Into( annotateLegend, Expr( ggg ), colName );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // run the expression
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; annotateLegend;
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since all my graphs are looking at the same data table for row states, they all automatically inherit the coloring the Row Legend assigns! Super slick.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Wrapping things up&lt;/H3&gt;
&lt;P&gt;And that’s it. For scripters, the main thing I’d like you to get out of this is the power of the Graphics Segments. A lot of the bits that make JMP so special are wrapped up in what those functions can do. For everyone else, there’s now &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Spider-Plot-Add-in/ta-p/250634" target="_blank" rel="noopener"&gt;a spider plot add-in&lt;/A&gt;. I’m pretty proud of how it turned out. But, please don’t use it. There are much better ways of visualizing that type of data. ;)&lt;/img&gt;&lt;/P&gt;
&lt;H3&gt;Author's note&lt;/H3&gt;
&lt;P&gt;No spiders were harmed in the writing of this blog, although some may have taken umbrage at being lumped in with insects (six-legs) or ticks (also arachnids, but they’re vampire spiders, so I’d like to think that even spiders hate them).&lt;/P&gt;</description>
      <pubDate>Wed, 21 Oct 2020 17:44:58 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Working-with-graphics-segments-and-how-to-create-spider-charts/ba-p/318861</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-10-21T17:44:58Z</dc:date>
    </item>
    <item>
      <title>Control chart warnings in JMP Live 16</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Control-chart-warnings-in-JMP-Live-16/ba-p/295762</link>
      <description>&lt;P&gt;Control charts provide feedback on key variables and show when a process is in, or out of, statistical control. In JMP, scientists and engineers construct these charts using an interactive control chart platform called Control Chart Builder. In JMP 16, when control charts are published to JMP Live and have warnings, interested parties can automatically be notified so they can appropriately triage and act upon issues as they arise – all from the convenience of any device with a web browser.&lt;/P&gt;
&lt;P&gt;Statistical process control engineers often are tasked with monitoring hundreds or thousands of processes daily. With &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, there are tools and techniques that let these engineers separate the trivial many processes that are running fine from the vital few that need appropriate triage, follow-up and action.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; fits naturally into the workflow of a statistical process control engineer and can now receive notifications of warnings on JMP Live control chart posts.&lt;/P&gt;
&lt;P&gt;When a JMP Live control chart post is published, republished or regenerated (for example, after a data update), JMP tells JMP Live about any control chart warnings. JMP Live then stores these warnings and sends out notifications to users who care about them.&lt;/P&gt;
&lt;P&gt;JMP Live considers "users who care about them" to be the publisher of the post, as well as all members of any group the post is shared with, if that group has the Enable Warnings option turned on.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are 15 possible warning types, and you can turn testing for these 15 types on or off by right-clicking a chart in JMP. The warnings that you might care about monitoring vary by industry and process.&lt;/P&gt;
&lt;P&gt;Let’s see how this works. I am using the Washers sample data set available from the sample data library. I run the “P Chart: Control Chart Builder” script in the data table. In order to test for warnings and share them with interested parties when I publish to JMP Live, I need to enable the Tests. From the red triangle menu, I click the control panel and then turn on Test 1.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Washers-ControlChartBuilder.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26521iB2A9CBB12F8BCA88/image-size/large?v=v2&amp;amp;px=999" role="button" title="Washers-ControlChartBuilder.png" alt="Washers-ControlChartBuilder.png" /&gt;&lt;/span&gt;&lt;SPAN style="font-family: inherit;"&gt;I now have a chart with a couple of warnings. To publish this to JMP Live, I’ll use File -&amp;gt; Publish. On the Configure New Post screen, there are a couple of new options in JMP 16. The first is a checkbox to enable warnings. If the post you are creating is able to send warnings, the option will show up. I’m going to share this with a Quality Engineers group I am part of to make sure that my interested parties will be notified.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PublishToJMPLive.png" style="width: 831px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26522iCB8D6EF9B481C064/image-dimensions/831x787?v=v2" width="831" height="787" role="button" title="PublishToJMPLive.png" alt="PublishToJMPLive.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="inline-comment-marker" data-ref="af5bffcc-f0c6-48ee-8892-61a58a240ef3"&gt;Here is the group information for the Quality Engineers group&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;I just published this chart to. As you can see, this group has w&lt;/SPAN&gt;&lt;SPAN class="inline-comment-marker" data-ref="47c5edfe-5e58-4a1c-8b9a-83e3086d3095"&gt;arnings enabled&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;so that if a chart has any warnings, all interested parties will be notified in their alerts when they log into JMP Live and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="inline-comment-marker" data-ref="a9691b4c-142f-4b93-a9cb-7b146a318f9c"&gt;also by email by default. Both the onscreen notifications and the email notifications can be turned off (independently) by the user&lt;/SPAN&gt;&lt;SPAN&gt;. Also, Enable Warnings is not on by default when setting up a group. You must click on the Enable Warnings option from the group menu.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="QualityEngineersGroup.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26523iEA6F4225EA0B0847/image-size/medium?v=v2&amp;amp;px=400" role="button" title="QualityEngineersGroup.png" alt="QualityEngineersGroup.png" /&gt;&lt;/span&gt;This is the card view of the post I just published. A red line on the top of the post as well as the warning indicates that this control chart indeed has warnings that need to be appropriately dealt with.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CardView.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26524iD3A858E6A0C3A3B2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="CardView.png" alt="CardView.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From within a group, you can see that the control chart has a warning from a red bar in the card, the warning indicator and also a system-wide notification. &lt;SPAN class="inline-comment-marker" data-ref="9ef762b3-9b58-460c-9a39-65795a256025"&gt;Warnings are displayed in the info as well with more information. The Warnings Log gives you more details.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;All interested parties will have also received an email with a direct link to the post and information about what tests were performed, which warnings were triggered and a description of the failed subgroups, tests failed and a reminder of what the test means.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;While most comments on a post are made by JMP Live users, the JMP Live system itself can also make comments on a post.&amp;nbsp; When the post has warnings enabled, these comments will include a brief note about which columns have control chart warnings.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="EmailNotification.png" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26525iAEF6094947EBC4CB/image-dimensions/850x359?v=v2" width="850" height="359" role="button" title="EmailNotification.png" alt="EmailNotification.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;And just like other workflows in JMP Live, the publishing of these control charts can be automated through scripting and scheduled for regular update as new data comes in. The Control Chart Builder can also be part of a larger process screening workflow, which I describe in an earlier &lt;A class="external-link" href="https://community.jmp.com/t5/JMP-Blog/Process-screening-and-JMP-Live-automation/ba-p/235504" target="_blank" rel="nofollow noopener"&gt;blog post&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 09 Sep 2020 18:36:13 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Control-chart-warnings-in-JMP-Live-16/ba-p/295762</guid>
      <dc:creator>Daniel_Valente</dc:creator>
      <dc:date>2020-09-09T18:36:13Z</dc:date>
    </item>
    <item>
      <title>The stack mole</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-stack-mole/ba-p/284864</link>
      <description>&lt;P&gt;Even though I’ve worked at &lt;A href="https://www.jmp.com/en_us/home.html" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; for more than 10 years, I’m still learning new things. Most recently, it was a new view of the Ishikawa diagram and the power of recursion. While both have been around for ages, it wasn’t until I had a specific challenge that I cared about them. This new motivation came when I was developing &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Geocoding-2020/ta-p/302505" target="_blank" rel="noopener"&gt;Geocoding 2020&lt;/A&gt;, an add-in that uses a REST API for communicating with a server. The data, coming from the server, was in form of a JSON array that could be quite large, depending on the data. One of the hidden gems in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; (or more specifically, in JSL), is the command Parse JSON(), which translates a JSON array into a JSL list or associative array. It was a pretty good starting point, but still, if I wanted to grab specific parts of the data, I needed to know how to find and address them. Not an easy task if that array is made from several hundreds of items, deeply stacked in lists and arrays. So, I decided to write this helpful little program, &lt;A title="The Stack Mole" href="https://community.jmp.com/t5/JMP-Scripts/The-stack-mole/ta-p/302359" target="_blank" rel="noopener"&gt;stackmole.jsl&lt;/A&gt;, to give me an overview of the data structure. And, I wasn’t a respectable JMPer if I didn’t look for a graphical presentation.&lt;/P&gt;
&lt;P&gt;Every server call could deliver data with a completely different depth, width and volume. The presence or absence of part of the data depends on the data itself. It’s impossible to know in advance what that data structure looks like. I needed a program that could decide for itself if it should go on looking for data, if it should look for the next list or array, or if it was at the end. Recursion was my answer to that problem. I know recursive definitions in mathematics, but how would that work in a data structure? Surprisingly well!&lt;/P&gt;
&lt;H3&gt;Data structures and recursion step by step&lt;/H3&gt;
&lt;P&gt;Recursion means that I apply the same rule or logic to the result that I produced the step before. The definition of a factorial of a whole number is the most widely known example. The factorial of a number is the product of that number with all the smaller numbers down to 1, which means the factorial of 3 is often written as 3! = 3 * 2 * 1 = 6. The Scripting Guide shows the statements for that routine:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;myfactorial = Function( {a},
   If( a == 1,
       1,&lt;BR /&gt;       a * Recurse( a - 1 )
   )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Recurse can only be applied to a function; the command stands in the function itself and calls that function with the new argument. In the example of 3!, the function is called with 3 as the argument: myfactorial(3). Since 3 does not equal 1, the else clause of the IF statement is executed. This means multiplying 3 with the result of myfactorial (2). Again, that does not equal 1 and the else clause now multiplies 2 with the result of myfactorial(1). There is a result now; it is 1.&lt;/P&gt;
&lt;P&gt;JMP remembers that the open task before was to multiply 2 with this result (2 * 1 = 1) and the task before that was to multiply 3 with the recursion result, which is 3 * 2 = 6. Since 3 was at the topmost level, the result is 6. The mechanism can be imagined as going down a stair. On every step, the open task is put down. The program goes down as many steps as necessary, until there is no more recursion. On its way back up the stairs, it collects all the tasks and ends up the starting floor with the result.&lt;/P&gt;
&lt;P&gt;JSL knows some data collections, (e.g., variables that represent many values). The structures that can be analyzed by this program are lists and associative arrays. Lists are comma separated lists of elements such as:&lt;/P&gt;
&lt;P&gt;list = {"a", "b", 1, 2}&lt;/P&gt;
&lt;P&gt;Associative arrays are lists of key-value pairs.&lt;/P&gt;
&lt;P&gt;assarr = ["a" =&amp;gt; "This", "b" =&amp;gt; "is", "c" =&amp;gt; "a", "d" =&amp;gt; "sentence"];&lt;/P&gt;
&lt;P&gt;The first element of each pair is the key; the second is the value. Keys need to be unique and are internally sorted alphabetically.&lt;/P&gt;
&lt;P&gt;Because of the different concepts, each structure needs different commands to change or read their content, they can be looked up in the Scripting Guide. What output would the stack mole produce from analyzing a simple list?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;list = {"a1", "b1", "c1"};
stackmole (l);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596911705803.png" style="width: 661px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26136iD9675B953FEAE26A/image-dimensions/661x502?v=v2" width="661" height="502" role="button" title="bernd_heinen_0-1596911705803.png" alt="bernd_heinen_0-1596911705803.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The data table is the list of items that the mole found when drilling down into the depth of the structure. The rows are to be interpreted from a child perspective. The whole set is a list, with the first child (on level 2) as the first item in that list. This child (row 2) is the data and its value is “a1”. Data is the endpoint of every journey, which means if there is no other item, the item is zero.&lt;/P&gt;
&lt;P&gt;More informative is the Cause and Effect Diagram, which is the Ishikawa diagram in its hierarchical style. At the bottom, there are the data values above them their indices in square brackets. In this little example, the name of the whole set is “list”, so, if you want to get “b1”, it is list&amp;nbsp;[2].&lt;/P&gt;
&lt;P&gt;The parallel plot shows that the whole set splits up into three elements, and the next level elements no longer split up, since they contain the data. While it helps to understand small structures, at the end of this article, I’ll show a colorful parallel diagram that doesn’t help anything.&lt;/P&gt;
&lt;P&gt;The results for an associative array differ slightly from the list report in that they contain the names of the keys:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;sentencearray = ["a" =&amp;gt; "This", "b" =&amp;gt; "is", "c" =&amp;gt; "a", "d" =&amp;gt; "sentence"];
stackmole(sentencearray);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_1-1596911915721.png" style="width: 648px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26137i5EB7F9A415FD9BDB/image-dimensions/648x522?v=v2" width="648" height="522" role="button" title="bernd_heinen_1-1596911915721.png" alt="bernd_heinen_1-1596911915721.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The type of the whole set is aa, which is short for associative array. The whole set is called “sentencearray”; if you want to access the word “sentence” in that array, do so with sentencearray&amp;nbsp;[“d”].&lt;/P&gt;
&lt;P&gt;This method is straightforward since it uses just one structure with a set of elements. But JMP allows to stack these structures in an arbitrary way and depth. So, you may have lists of associative arrays of associative arrays of lists, … In this example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;array = ["2list1" =&amp;gt; {{"4list1_1", "4list1_2", "4list1_3"}, {"4list2_1", "4list2_2"} },
        "2list2" =&amp;gt; {{"4list3_1", "4list3_2"}, "4element1" }  ];&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;“array” is an associative array with two keys named “2list1” and “2list2”. The values of each key are lists, the first list again consisting of two lists, the second list consisting of a list and a data element. The numerals at the beginning of each term indicate the depth of the stack where those elements reside. In the analogy of the staircase, it is the number of steps that you need to go down to reach this element.&lt;/P&gt;
&lt;P&gt;In this case, the stack mole delivers the following information:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596912455678.png" style="width: 642px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26138i8F1B135ED80033FA/image-dimensions/642x710?v=v2" width="642" height="710" role="button" title="bernd_heinen_0-1596912455678.png" alt="bernd_heinen_0-1596912455678.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The picture shows only part of the data table that now has 21 rows. The hierarchy diagram is complete. If you want to get to the data element 4list3_2 (in bold), the path is:&lt;/P&gt;
&lt;P&gt;array["2list2"][1][2]&lt;/P&gt;
&lt;P&gt;Below is an example of a parallel plot that doesn’t help at all, but still gives an interesting pattern:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_1-1596912496308.png" style="width: 897px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26139i8B5CEFFD1DF28D78/image-dimensions/897x428?v=v2" width="897" height="428" role="button" title="bernd_heinen_1-1596912496308.png" alt="bernd_heinen_1-1596912496308.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The program has many comments that explain the single steps of the analysis and how the recursion is applied.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Sep 2020 19:45:47 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-stack-mole/ba-p/284864</guid>
      <dc:creator>bernd_heinen</dc:creator>
      <dc:date>2020-09-22T19:45:47Z</dc:date>
    </item>
    <item>
      <title>The crude MapQuest call</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-crude-MapQuest-call/ba-p/284852</link>
      <description>&lt;P&gt;I used the new technique of REST interfaces to create a new &lt;A title="Geocoding 2020 blog" href="https://community.jmp.com/t5/JMP-blog-authoring/Geocoding-2020/ba-p/284840" target="_blank" rel="noopener"&gt;geocoding add-in&lt;/A&gt;. At its core is the call to the respective REST interface of &lt;A href="https://mapquest.com" target="_blank" rel="noopener"&gt;MapQuest&lt;/A&gt;, a company providing lots of routing services and applications. Each one of these services has its own URL, its own format to specify the request and its own format to return the result. This call is encapsulated in the JMP function that I have named &lt;A title="Interface for MapQuest calls" href="https://community.jmp.com/t5/JSL-Cookbook/The-Crude-MapQuest-Call/ta-p/302544" target="_self"&gt;MapQuest_rest.jsl&lt;/A&gt;. It is available in the JSL Cookbook. If you want to use it, save it somewhere on your computer and “Include” it in your JSL program (Include(“&amp;lt;path&amp;gt;/filename”)). To apply it, use a statement like:&lt;/P&gt;
&lt;P&gt;GeoList = queryrest();&lt;/P&gt;
&lt;P&gt;You, or any user of your program needs a vlid&lt;A title="Registration for MapQuest services" href="https://developer.mapquest.com/plan_purchase/steps/business_edition/business_edition_free/register" target="_blank" rel="noopener nofollow noopener noreferrer"&gt; API-key&lt;/A&gt; from MapQuest.&lt;/P&gt;
&lt;P&gt;The file itself contains the definition of the function and at the end, a call of the function with an empty parameter list. An empty parameter list always opens this information window:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596911032703.png" style="width: 865px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26131iDAB7CA7B1AB65F01/image-dimensions/865x507?v=v2" width="865" height="507" role="button" title="bernd_heinen_0-1596911032703.png" alt="bernd_heinen_0-1596911032703.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This function is very general and transparent about the content that you want to use it for. It is only helpful if you are interested in the offerings of MapQuest and the details of the respective interfaces. You need to build or interpret the JSON structures yourself.&lt;/P&gt;
&lt;P&gt;I used this function for two different interface calls, one for routing and one for geocoding. Both are made as functions and both are available in the JSL cookbook. Using them does not require any knowledge of HTTP, REST or JSON, since the standard JSL structures like variables and lists are sufficient. The description of the geocoding function is more straightforward than the routing function. Both can be found in the blogs.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Sep 2020 19:36:57 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-crude-MapQuest-call/ba-p/284852</guid>
      <dc:creator>bernd_heinen</dc:creator>
      <dc:date>2020-09-22T19:36:57Z</dc:date>
    </item>
    <item>
      <title>Geocoding 2020 add-in</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Geocoding-2020-add-in/ba-p/284840</link>
      <description>&lt;P&gt;Geocoding has been around for some time. But now, this service is offered via REST interfaces which provide more flexibility and accuracy. I created an add-in that uses the service from Mapquest to find geo-codes for addresses and calculate distances, traveling times or complete routes between pairs of locations. This is the description of its functionality and usage.&lt;/P&gt;
&lt;P&gt;I’ve always been fascinated by maps. Before digital maps became available, I bought maps for every vacation, usually in different scales and in much greater detail than I really needed. So, it should come as no surprise that I am also fascinated by &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;’s graph features that allow data to be represented on maps.&lt;/P&gt;
&lt;H3&gt;What is geocoding?&lt;/H3&gt;
&lt;P&gt;One of the interesting applications is geocoding, or the ability to locate points on maps. Usually, you have a point of interest and its address. To find its position and plot it on a map, you also need the geocoordinates. As you might expect, &lt;A href="https://en.wikipedia.org/wiki/Geocoding" target="_blank" rel="noopener"&gt;Wikipedia&lt;/A&gt; offers more details on geocoding.&lt;/P&gt;
&lt;H3&gt;Why a new geocoding add-in?&lt;/H3&gt;
&lt;P&gt;In recent years, computer communication technique known as &lt;A href="https://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank" rel="noopener"&gt;REST&lt;/A&gt; has become more widely used. In a 2019 keynote, John Sall talked about the “&lt;A href="https://community.jmp.com/t5/Discovery-Summit-Europe-2019/Plenary-John-Sall-on-Secret-Features-of-JMP/ta-p/186901" target="_blank" rel="noopener"&gt;Secret Features of JMP&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;” One of these hidden gems in JMP is really buried quite deep: the ability to access the REST APIs (advance programming interfaces) through JSL commands. Since computer communication data are often exchanged using the “&lt;A href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener"&gt;JSON&lt;/A&gt;” data structure, JMP developers created JSL commands that transfer data between JSL data structures and JSON data with ease. This technique has become increasingly important. In fact, Johns Hopkins University and the Robert Koch Institut offer REST APIs for their data pools for information related to COVID-19; JMP customers use them to access SAP data for quality management; and I use one for geocoding. This interface extends the possibilities of information exchange, since it provides more than the geocoordinates of points of interest. It also allows users to get information about distances, traveling times and even routing. This article is about the usage of the &lt;A title="Geocoding 2020 Addin" href="https://community.jmp.com/t5/JMP-Add-Ins/Geocoding-2020/ta-p/302505" target="_blank" rel="noopener"&gt;add-in&lt;/A&gt; that I loaded into the file exchange. Technical background will be given in separate post, as summarized in the last paragraph.&lt;/P&gt;
&lt;H3&gt;What are the functions?&lt;/H3&gt;
&lt;P&gt;You need a data table with address information per observation. The addresses can be used to add three different levels of geo information, where every level contains the information of the previous one.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Geocoordinates&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For every observation, the latitude and longitude of its location is added. In addition, you will get the hierarchy of administrative units, country, state, district, postal code, city, street and an assessment of how close that address has been hit, as far as the information available in the database.&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Distance and traveling time&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For every pair of consecutive rows in your data table (e.g., row 1 –&amp;gt; row 2 / row 2 –&amp;gt; row 3 /….), the distance between the addresses and the required travelling time will be added to the second row. The connections become enumerated in an extra column. The traveling time is calculated based upon the user’s choice of transportation: car, bike or walking.&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;Routing&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;An additional table is created that contains all the above information, as well as the geocodes of all points that describe the route between two consecutive rows.&lt;/P&gt;
&lt;H3&gt;Presuppositions&lt;/H3&gt;
&lt;P&gt;There are several internet sites that offer mapping and routing services. A good overview is given by the journal &lt;A href="https://www.programmableweb.com/news/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/2012/06/21" target="_blank" rel="noopener"&gt;ProgrammableWeb&lt;/A&gt;. I decided to use &lt;A href="https://www.mapquest.com/" target="_blank" rel="noopener"&gt;MapQuest&lt;/A&gt;. The company offers a variety of paid services but also a free API. If you want to use it, you need to register first and get a free API key. Of course, you also need the Geocoding 2020 add-in. It will install itself in the Add-Ins menu in the “Map Shapes” submenu.&lt;/P&gt;
&lt;P&gt;Upon the first call, you will be informed that you can get the necessary key from MapQuest and provided a field to paste in the key.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596910022095.png" style="width: 651px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26115i8E39055089EC5D06/image-dimensions/651x319?v=v2" width="651" height="319" role="button" title="bernd_heinen_0-1596910022095.png" alt="bernd_heinen_0-1596910022095.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The reminder of the dialog is disabled. After the key is pasted, it is tested to determine if it is a proper MapQuest key; the key must be verified before you can proceed. If you provided a valid key, it is saved in the user’s directory in folder AppData/Roaming/SAS/JMP. If this directory does not exist, it will be created.&lt;/P&gt;
&lt;P&gt;For all of the commands in the add-in to work, you must set the JMP language to English &lt;STRONG&gt;and&lt;/STRONG&gt; select the “Use JMP language…” option. Unfortunately, that can’t be done via JSL. You must make these selections using your language equivalence to File -&amp;gt; Preferences -&amp;gt; Windows specific. The add-in will verify that the language settings are correct and will alert you if that is not the case.&lt;/P&gt;
&lt;H3&gt;Let’s go&lt;/H3&gt;
&lt;P&gt;The menu consists of two parts. The first part is the upper red area, which is built like nearly all JMP platform dialogs; it contains the column list, the role part and the action panel. In the role area, there are two parts, emphasized by blue frames. In your data table, the address information may be stored in one of two formats: either as one column that holds the complete address as a text string, or as separate columns, with each column holding a part of the address like country, city, street. You can provide either of these formats, but they are mutually exclusive. In both cases, &lt;STRONG&gt;your address must contain the country&lt;/STRONG&gt;. It can be given as name or as an ISO code, whichever you prefer.&lt;/P&gt;
&lt;P&gt;The second part is the lower red frame that shows which options are available. They are organized in groups of radio buttons (the screen shot below shows the defaults). All options add a group of additional columns to your data table; the combination of “Routing” and “Detailed Routes” creates an additional data set with a copy of your data. These points are identified as “Points of Interest.” In addition, there are “Waypoints,” the points that need turns along your route.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_1-1596910022113.png" style="width: 803px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26117i6D640D30C22B6299/image-dimensions/803x656?v=v2" width="803" height="656" role="button" title="bernd_heinen_1-1596910022113.png" alt="bernd_heinen_1-1596910022113.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;An example&lt;/H3&gt;
&lt;P&gt;To test how it all works, I gathered some address information from the internet. I grew up in Solingen, a small town in the western part of Germany. It was well-known during medieval times for producing high-quality swords and cutlery, which is why you’ll find the German Museum of Cutlery here. Next to the museum is a small but very impressive baroque church. There are also some other famous places nearby:&lt;/P&gt;
&lt;TABLE width="529"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_2-1596910022119.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26116i26928118E8154FAE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_2-1596910022119.jpeg" alt="bernd_heinen_2-1596910022119.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Deutsches Klingenmuseum&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;German Museum of Cutlery&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_3-1596910022125.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26119i41CD0410466A89E6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_3-1596910022125.jpeg" alt="bernd_heinen_3-1596910022125.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Gräfrather Klosterkirche&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;Baroque monastery church&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_4-1596910022125.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26118iEB8BED7C92E3ADFB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_4-1596910022125.jpeg" alt="bernd_heinen_4-1596910022125.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Das Neandertal&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;The region where the remains of a branch of our ancestors were first discovered&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_5-1596910022132.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26120iF96083E951CE4618/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_5-1596910022132.jpeg" alt="bernd_heinen_5-1596910022132.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Die Wuppertaler Schwebebahn&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;A 13-km-long suspension railway, the oldest electric elevated railway with hanging cars in the world, inaugurated in 1901&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_6-1596910022137.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26122iB9BD5FEC5CEBB896/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_6-1596910022137.jpeg" alt="bernd_heinen_6-1596910022137.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Die Müngstner Brücke&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;The highest railway bridge in Germany, built in 1897&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="113"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_7-1596910022143.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26123i00A9D66AFE9B26FA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_7-1596910022143.jpeg" alt="bernd_heinen_7-1596910022143.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="113"&gt;
&lt;P&gt;Schloss Burg&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="302"&gt;
&lt;P&gt;A reconstructed castle, originating from the 12&lt;SUP&gt;th&lt;/SUP&gt; century&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;After searching the internet for the addresses, I copied the strings into a JMP data table. None of the addresses included a country name, so I prepended “Deutschland,&amp;nbsp;” to all the strings. The strings now look like this&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Talstraße 300, 40822 Mettmann&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Alte Freiheit 24a, 42103 Wuppertal&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Klosterhof 4, 42653 Solingen&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Klosterhof 3, 42653 Solingen&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Müngstener Brückenweg, 42659 Solingen&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="397"&gt;
&lt;P&gt;Deutschland, Schloßplatz 2, 42659 Solingen&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;I choose the German country name “Deutschland” on purpose. In the dialog, assign this column to the “Single Address” role and go.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_8-1596910022145.png" style="width: 687px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26121i2702FB488924512B/image-dimensions/687x253?v=v2" width="687" height="253" role="button" title="bernd_heinen_8-1596910022145.png" alt="bernd_heinen_8-1596910022145.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As result of the run, these columns are appended to your data set:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;&lt;STRONG&gt;Geo-Information&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Latitude&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Longitude&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Country Code&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#State&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#District&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Postal Code&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#City&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Street&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Quality Assessment&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="208"&gt;
&lt;P&gt;GC#Return Message&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think that the column names speak for themselves. MapQuest provides an estimated quality rating for each hit. It is quite elaborate, so I summarized that information into four categories: Exact, Close, Approximate, Far. The rows in your data table get symbols and colors according to this rating. All positions are displayed in a map, and a script that reproduces this map is added to the data table. Depending upon the area over which your points are distributed, the background map is either Street Map or Simple Earth.&lt;/P&gt;
&lt;P&gt;In that data table, I split the address string into its single components (it’s easy if you use Cols à Utilities à Text to Column…) and requested the coordinates using the “Separate address fields” roles.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_9-1596910022157.png" style="width: 722px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26126i0B7AA11E77D09D79/image-dimensions/722x673?v=v2" width="722" height="673" role="button" title="bernd_heinen_9-1596910022157.png" alt="bernd_heinen_9-1596910022157.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;There is no need to fill all the role fields in this section. Country is a minimum requirement. The more information you provide, the better the hit rate. Results from both methods for requesting coordinates are not completely identical. The coordinates themselves may deviate a little bit and for the detailed request, more information (such as district) may be given. The quality assessment may vary as well.&lt;/P&gt;
&lt;P&gt;For performance reasons, single address fields are concatenated to one string and single string requests are sent to MapQuest if there are more than 200 addresses in your data table.&lt;/P&gt;
&lt;P&gt;If you choose the combination of “Routing” and “Distances/Time only,” you will get the same information back as for geocoding, plus three additional columns. From time to time, you may receive error messages:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Point of Interest&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;GC#Return Message&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158"&gt;
&lt;P&gt;GC#Distance (km)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;GC#Time (Bicycle)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;GC#Legs&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Neandertal&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Wuppertaler Schwebebahn&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;Unable to calculate route.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158" class="lia-align-right"&gt;
&lt;P&gt;19.1287&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;:0:00:52:39&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Deutsches Klingenmuseum&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;Unable to calculate route.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158" class="lia-align-right"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;:0:00:00:00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Gräfrather Klosterkirche&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158" class="lia-align-right"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;:0:00:00:00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Müngstner Brücke&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158" class="lia-align-right"&gt;
&lt;P&gt;9.92&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;:0:00:26:26&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="122"&gt;
&lt;P&gt;Schloss Burg&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="142"&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="158" class="lia-align-right"&gt;
&lt;P&gt;5.0163&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="116"&gt;
&lt;P&gt;:0:00:13:55&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="66"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;Consecutive rows build one leg of the total route. The target row holds the information of the leg. In the example, the first leg is from Neandertal to Wuppertaler Schwebebahn. The distance for a bicycle route is roughly 19 kilometers, and the estimated cycling time is 52 minutes.&lt;/P&gt;
&lt;P&gt;For whatever reasons, cycling routes could not be found to Deutsches Klingenmuseum or Gräfrather Klosterkirche. Therefore, legs two and three have no travel information, while legs four and five provide the respective information again.&lt;/P&gt;
&lt;P&gt;This combination of options requests details for a route between two consecutive rows in the data table with distances given in miles:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_10-1596910022158.png" style="width: 670px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26124iD32FC25E5DF2A3EC/image-dimensions/670x181?v=v2" width="670" height="181" role="button" title="bernd_heinen_10-1596910022158.png" alt="bernd_heinen_10-1596910022158.png" /&gt;&lt;/span&gt;Your data table will get extended by the columns described above for geocoding. For the routing, an extra table with a copy of each row of your data table is created; between these rows, new lines are inserted, one per significant point along the route. The last segment of the Solingen tour looks like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_11-1596910022165.png" style="width: 804px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26125i7DBE679E49154963/image-dimensions/804x372?v=v2" width="804" height="372" role="button" title="bernd_heinen_11-1596910022165.png" alt="bernd_heinen_11-1596910022165.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Row 49 holds the next-to-last address in the data table, which is where leg 4 ends. The route leading from the place before to this point was 9.3 miles long and has an estimated travelling time of 15 minutes by car. It is a “Point of Interest.” The next row is the end of the first segment of leg 5 after +/- 300 feet and five seconds of driving time. It is the first waypoint in a series of seven, before the next (and last) point of interest is reached. Maps show the results, and their scripts are in the tables as well.&lt;/P&gt;
&lt;P&gt;The data table is part of the add-in and can be opened using the “Help” button. You may use it to start playing around and looking at the pictures of the attractions that I included.&lt;/P&gt;
&lt;P&gt;And if you&amp;nbsp;&lt;SPAN style="font-family: inherit;"&gt;should ever come to this area and visit some of the places, don’t forget to look for a restaurant that serves &lt;/SPAN&gt;&lt;EM style="font-family: inherit;"&gt;Bergische Kaffeetafel&lt;/EM&gt;&lt;SPAN style="font-family: inherit;"&gt;, a very rich combination of local specialties including bread, sausages, sweet rice, waffles and more. It’s well-known all around the area that I picked as a demonstration, so you should be able to find it at many restaurants.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_12-1596910022166.jpeg" style="width: 407px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26127i1C76C67C1383D975/image-dimensions/407x271?v=v2" width="407" height="271" role="button" title="bernd_heinen_12-1596910022166.jpeg" alt="bernd_heinen_12-1596910022166.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;At the first run&lt;/H3&gt;
&lt;P&gt;MapQuest requires you to have a personal API key. You get it from their &lt;A href="https://developer.mapquest.com/" target="_blank" rel="noopener"&gt;developer’s website&lt;/A&gt; for free. The add-in asks for this key and provides a field to paste it into.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_13-1596910022167.png" style="width: 713px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26128iC1FA142ED9F974F0/image-dimensions/713x88?v=v2" width="713" height="88" role="button" title="bernd_heinen_13-1596910022167.png" alt="bernd_heinen_13-1596910022167.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The add-in stores the key in the user’s appdata directory for SAS\JMP. Before every run, it tries to read the key and will use it as long as it’s there.&lt;/P&gt;
&lt;H3&gt;Excluded rows/routing not possible&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_14-1596910022168.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26129iA934CBD3DD3BB52E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_14-1596910022168.png" alt="bernd_heinen_14-1596910022168.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The add-in assigns symbols, colors and labels to the rows, but it also respects the “excluded” row state, which has specific consequences for the routing application. If a row is excluded or routing to its address is not possible, then this row is ignored and a route to the next address is searched for.&lt;/P&gt;
&lt;P&gt;In this situation, routes between Neandertal and Wuppertaler Schwebebahn, between Wuppertaler Schwebebahn and Müngstner Brücke and between Müngstner Brücke and Schloss Burg will be searched.&lt;/P&gt;
&lt;P&gt;Similarly, locations will be skipped if routing to them is not possible.&lt;/P&gt;
&lt;H3&gt;Technical details&lt;/H3&gt;
&lt;P&gt;The attentive observer may have noticed that the main dialog is contained in a tab. Tabs are useless if they stand alone. This tab reflects the idea that locations for routings may appear in different formats. If there should be requests for alternative ways of providing locations for routing, that tab may get siblings.&lt;/P&gt;
&lt;P data-unlink="true"&gt;I was motivated to write this add-in as a result of my combined interest in maps in general and the REST API technique. To make the latter one more transparent and perhaps even more widely used, I put three files into the JSL cookbook. They are defining functions that can be called by other programs. One is the REST call to MapQuest. I describe content and a description of the interface in a blog post about the &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/The-Crude-MapQuest-Call/ba-p/284852" target="_blank" rel="noopener"&gt;crude MapQuest call&lt;/A&gt;. The other scripts are envelopes for the REST call. They take JMP lists as inputs and build the JSON structures that are needed for the &lt;A title="Geo-coding JSL function" href="https://community.jmp.com/t5/JSL-Cookbook/A-Geo-coding-function/ta-p/302525" target="_blank" rel="noopener"&gt;geocoding&lt;/A&gt; or &lt;A title="Routing JSL function" href="https://community.jmp.com/t5/JSL-Cookbook/A-routing-function/ta-p/302486" target="_blank" rel="noopener"&gt;routing&lt;/A&gt; call. If there are many addresses to be coded, it packages them into blocks of 50 for better reliability and performance. In my blog posts about the &lt;A title="Explanation of geocoding JSL snippet" href="https://community.jmp.com/t5/JMP-blog-authoring/A-geocoding-function/ba-p/284801" target="_blank" rel="noopener"&gt;geocoding&lt;/A&gt; and the &lt;A title="Explanation of routing JSL snippet" href="https://community.jmp.com/t5/JMP-blog-authoring/A-routing-function/ba-p/284815" target="_blank" rel="noopener"&gt;routing&lt;/A&gt; subroutines, I describe these pieces of code in greater detail.&lt;/P&gt;
&lt;P&gt;As mentioned before, JMP programmers did a great job of providing JSL functions that translate in both directions between JMP data structures and JSON. In JSL terms, there are lists and associative arrays involved. These elements can be stacked. You may have an associative array that contains a list of associative arrays that contains… . A single MapQuest call delivers a rich set of data from which I only needed some of the elements. Sometimes, these were two levels deep in the stack; other times, many levels deep. So, I found it useful to write a &lt;A title="JSL to analyze stacked arrays" href="https://community.jmp.com/t5/JSL-Cookbook/The-stack-mole/ta-p/302563" target="_blank" rel="noopener"&gt;little script&lt;/A&gt; that iterates through this structure. And I would not be a respectable JMPer if I didn’t look for a visualization of the result. I found the perfect way in the Ishikawa diagram. Programming this reminded me of the power of recursion, which is the best technique to step down a deep stack and return safely. I thought it might help or inspire other programmers as well. I put the script into the cookbook and – naturally – I &lt;A title="How to visualize hierarchical data structures" href="https://community.jmp.com/t5/JMP-blog-authoring/The-stack-mole/ba-p/284864" target="_blank" rel="noopener"&gt;wrote a post&lt;/A&gt; about recurse and draw hierarchical structures.&lt;/P&gt;
&lt;P&gt;I used JMP 15 for the development, using a JMP Project. I wouldn’t say that my little project couldn’t have taken place without Projects, but Projects made it a lot easier.&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 14:57:28 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Geocoding-2020-add-in/ba-p/284840</guid>
      <dc:creator>bernd_heinen</dc:creator>
      <dc:date>2020-09-30T14:57:28Z</dc:date>
    </item>
    <item>
      <title>A routing function</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/A-routing-function/ba-p/284815</link>
      <description>&lt;P&gt;I used the new technique of REST interfaces to provide a new geocoding add-in. At its core is the call to the respective REST interface of &lt;A href="https://mapquest.com" target="_blank" rel="noopener"&gt;MapQuest&lt;/A&gt;, a company providing lots of routing services and applications.&lt;/P&gt;
&lt;P&gt;One of MapQuest’s services is routing. For every pair of addresses provided, MapQuest sends back the latitude and longitude of each location, as well as administrative information such as country and state. It also supplies the locations of all waypoints between the two points and where to change direction to travel from the first address to the second. Summary information such as total distance and estimated traveling time is also provided. If the function is called with just two addresses, it returns the route and/or distance between them. If you provide a list of addresses, then routes will be calculated for each pair of consecutive list elements. Connections will then be given between element 1 and element 2, between element 2 and element 3 and so on. A list of n locations will produce n-1 routes.&lt;/P&gt;
&lt;P&gt;Since data tables are the usual way to collect information in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, analysis starts with the user assigning roles to the columns of the data table via a user dialog. The&lt;A title="Geocoding Addin" href="https://community.jmp.com/t5/JMP-Add-Ins/Geocoding-2020/ta-p/302505" target="_self"&gt; Geocoding 2020 add-in&lt;/A&gt; works the same way. After the user has completed the dialog, the program collects the relevant data from the data table, translates it into the structure needed by the REST API and then sends it to MapQuest. So, the rough structure of the program is: 1) complete the user dialog, 2) collect data, 3) prepare data for interface, 4) send interface request, 5) interpret results, 6) write JMP data table(s). The third step, data preparation, is defined as a function and is available as &lt;A title="JSL function for routing" href="https://community.jmp.com/t5/JSL-Cookbook/A-routing-function/ta-p/302486" target="_blank" rel="noopener"&gt;MapQuest_route.jsl&lt;/A&gt; in the JSL Cookbook. You can embed it in your own geo application or use it to get ideas of how to structure data for REST calls.&lt;/P&gt;
&lt;H3&gt;Baseline functionality&lt;/H3&gt;
&lt;P&gt;You, or any user of your program needs a vlid&lt;A title="Registration for MapQuest services" href="https://developer.mapquest.com/plan_purchase/steps/business_edition/business_edition_free/register" target="_blank" rel="noopener"&gt; API-key&lt;/A&gt; from MapQuest.&lt;/P&gt;
&lt;P&gt;JMP data comes in form of data table columns, while REST interfaces most likely use JSON structures. As a result, there needs to be functionality that translates between both formats. The JSL also has structures for data collection, either lists or associative arrays. The purpose of this function is to encapsulate all non-native JSL commands. The necessary data is provided with the typical JSL variables in character, numeric or list formats. The data that is returned from the call comes as JSL lists as well. So, embedding this function in a JSL script doesn’t require any additional knowledge beyond JSL standards.&lt;/P&gt;
&lt;H3&gt;The interface&lt;/H3&gt;
&lt;P&gt;JSL functions are called with a statement like:&lt;/P&gt;
&lt;P&gt;result = function();&lt;/P&gt;
&lt;P&gt;If the function needs or accepts parameters, they are listed in the brackets. This function, GC_route, can be called with empty brackets or with a full list of parameters. Calling it with empty brackets invokes a parameter definition window with an outline for input and output, as shown in the following sections:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596909166655.png" style="width: 835px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26113i224B05915CE37C88/image-dimensions/835x600?v=v2" width="835" height="600" role="button" title="bernd_heinen_0-1596909166655.png" alt="bernd_heinen_0-1596909166655.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Parameters in a function call are always positional parameters. When the function is called with parameters, ALL mandatory parameters need to be supplied, but they may be empty.&lt;/P&gt;
&lt;P&gt;In my &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Geocoding-2020-add-in/ba-p/284840" target="_blank" rel="noopener"&gt;blog post about my geocoding add-in&lt;/A&gt;, I used a few of the local tourist sites around my hometown as examples of how to use the add-in. Let’s take two of those to see how this interface works:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="175"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_1-1596909166660.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26111iDC20905B790AB02C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_1-1596909166660.jpeg" alt="bernd_heinen_1-1596909166660.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="174"&gt;
&lt;P&gt;Alte Freiheit 24a, 42103 Wuppertal, Deutschland&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="255"&gt;
&lt;P&gt;Wuppertaler Schwebebahn, a 13-km- long suspension railway, the oldest electric elevated railway with hanging cars in the world, inaugurated 1901.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="175"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_2-1596909166665.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26112iAFAA3646034292D5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bernd_heinen_2-1596909166665.jpeg" alt="bernd_heinen_2-1596909166665.jpeg" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="174"&gt;
&lt;P&gt;Schloßplatz 2, 42659 Solingen, Deutschland&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="255"&gt;
&lt;P&gt;Schloss Burg, a reconstructed castle, originating from the 12&lt;SUP&gt;th&lt;/SUP&gt; century.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First, you need an access key from MapQuest, let’s assume it is 1234ABCD. Also, assume that:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Every address is just one string of text.&lt;/LI&gt;
&lt;LI&gt;You have provided a pair of address strings; no data table is involved.&lt;/LI&gt;
&lt;LI&gt;You want to travel by car.&lt;/LI&gt;
&lt;LI&gt;You’re only interested in distances and travel times.&lt;/LI&gt;
&lt;LI&gt;You want the distances in miles.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;One way of using this interface is to take the address strings as they are. In this case, the format indicator (Position 2) needs to be 1 or larger. Then, the function call looks like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;routes = GC_route ("1234ABCD", "", 1, "fastest", "m", {"Alte Freiheit 24a, 42103 Wuppertal, Deutschland",&lt;BR /&gt; "Schloßplatz 2, 42659 Solingen, Deutschland"}, {}, {}, {}, {}, {}, {});&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If the addresses are not in one string, but in separate elements, the format indicator needs to be 0 (zero), meaning your call would look like:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;routes = GC_route ("1234ABCD", "", 0, "fastest", "m", {}, {"Deutschland", "Deutschland"}, {},
  {"Wuppertal", "Solingen"}, {42103, 42659}, {"Alte Freiheit 24a", "Schloßplatz 2"}, {})&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Of course, you don’t need to put the values in as parameters; you can also supply a variable, e.g., a list variable with the list of country names.&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-center" image-alt="bernd_heinen_3-1596909166707.png" style="width: 835px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26114i76233D7340EB14D5/image-dimensions/835x711?v=v2" width="835" height="711" role="button" title="bernd_heinen_3-1596909166707.png" alt="bernd_heinen_3-1596909166707.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In any case, the result is the same list of data:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;{200, "HTTP/1.1 200 OK", "", {}, {""}, {51.256414, 51.137675}, {7.148503, 7.152488}, {"close", "exact"},{"DE", "DE"},&lt;BR /&gt;{"North Rhine-Westphalia", "North Rhine-Westphalia"}, {"Wuppertal", "Solingen"}, {"42103", "42659"},&lt;BR /&gt; {"Elberfeld", "Unterburg"}, {"Alte Freiheit", "Schloßplatz 2"}, {., 16.002}, {., 1600}, {}, {}, {0, 1}, [=&amp;gt;], }&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Both locations are found, and the distance and traveling time are calculated. Therefore, parameter five is a list with an empty string. At the end, there is the symbol for an empty associative array ([=&amp;gt;]). It is empty because parameter 13, the detail flag, was set to zero. Otherwise, the routing information could be found in this array.&lt;/P&gt;
&lt;P&gt;A minor change in the parameter list of the call causes a significant change in the output. That is the change of parameter 13, the “detail” flag. If it is set to 1, the output is extended by an array that holds all the routing information:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;{200, "HTTP/1.1 200 OK", "", {}, {""}, {51.20971, 51.21327}, {7.07255, 7.08376},{"exact", "exact"}, {"DE", "DE"},&lt;BR /&gt; {"Nordrhein-Westfalen", "Nordrhein-Westfalen"}, {"", ""}, {"42653", "42653"}, {"Solingen", "Solingen"},&lt;BR /&gt; {"Klosterhof 4", "Lützowstraße 347"}, {., 1.0767}, {., 965}, {}, {}, {0, 1},&lt;BR /&gt; ["gc#city" =&amp;gt; {"Solingen", ., ., ., ., ., ., ., ., "Solingen"},
"gc#coordtype" =&amp;gt; {"Point of Interest", "Waypoint", "Waypoint", "Waypoint", "Waypoint", "Waypoint", "Waypoint", "Waypoint", "Waypoint", "lPoint of Interest"},
"gc#ctrycd" =&amp;gt; {"DE", ., ., ., ., ., ., ., ., "DE"},
"gc#dist" =&amp;gt; {., 0.0064, 0.0499, 0.1481, 0.0853, 0.2366, 0.2993, 0.2478, 0.0032, 1.0767},&lt;BR /&gt;"gc#district" =&amp;gt; {"", ., ., ., ., ., ., ., ., ""},
"gc#lat" =&amp;gt; {51.20971, 51.2099, 51.209949, 51.210171, 51.209187, 51.209667, 51.210789, 51.212135,51.213226, 51.21327},
"gc#leg" =&amp;gt; {0, 1, 1, 1, 1, 1, 1, 1, 1},
"gc#long" =&amp;gt; {7.07255, 7.072152, 7.072176, 7.072798, 7.074032, 7.074655, 7.077532, 7.081177, 7.084009, 7.08376},
"gc#msg" =&amp;gt; {"", ., ., ., ., ., ., ., .},
"gc#postalc" =&amp;gt; {"42653", ., ., ., ., ., ., ., ., "42653"},
"gc#ql" =&amp;gt; {"exact", ., ., ., ., ., ., ., ., "exact"},
"gc#resp" =&amp;gt; {0, ., ., ., ., ., ., ., .},
"gc#state" =&amp;gt; {"Nordrhein-Westfalen", ., ., ., ., ., ., ., ., "Nordrhein-Westfalen"},&lt;BR /&gt;"gc#street" =&amp;gt; {"Klosterhof 4", "Klosterhof", ., "Gerberstraße", ., "Gräfrather Heide", .,&lt;BR /&gt;    "Gräfrather Heide", "Lützowstraße", "Lützowstraße 347"},
"gc#time" =&amp;gt; {., "00:00:05", "00:00:45", "00:02:13", "00:01:17", "00:03:32", "00:04:28", "00:03:42", "00:00:03", "00:16:05"},
"gc#wpidx" =&amp;gt; {0, 1, 2, 3, 4, 5, 6, 7, 8, 0}], }&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;For simplicity’s sake, this example uses a route between two places that are close to one other. The route is composed of eight waypoints between the start and end point. They are enumerated in the last list of the associative array with the key “gc#wpidx”. Some information is only available for the start and end positions, which is why some lists have so many missing values. Every list has the same number of elements so that the whole array can easily be turned into a data table.&lt;/P&gt;
&lt;H3&gt;Technical details&lt;/H3&gt;
&lt;P&gt;The function takes a pair of addresses or a list of addresses as input. MapQuest sends back location and geoinformation about the endpoints of each journey, each location’s coordinates, the directions for each point between them, and where a change in direction must take place. For this simple task, MapQuest offers different input formats. The address information can be supplied as one text string with comma separated parts, like “Deutschland, Schloßplatz 2, 42659 Solingen”, which is the address of a famous castle near my hometown. Alternatively, the address can be given as single elements: country = “Deutschland”, Street = “Schloßplatz 2”, city = “Solingen”, postal code = “42659”.&lt;/P&gt;
&lt;P&gt;I assume that, in most cases, more than one address will be looked up. So, the function expects to get address information as lists, either a list of strings with complete addresses or several lists with address elements. Each address, regardless of its format, needs to provide its country. And there is no check if the required minimum information is given. All other elements are optional.&lt;/P&gt;
&lt;P&gt;If detailed routing is requested, an array with lots of lists is returned. The first element of each list belongs to the first location, subsequent elements to the route, then again one element for the second location and so on. In order to distinguish between the locations that have been input to the request and the routing points that have come back, the gc#coordtype names the original locations “Point of Interest” and the points in between “Waypoints.” The gc#leg list glues together all points that lead to a destination. The first location does not belong to a leg (my definition). For the route to and including the first destination, it is one; for the route to the second destination, it is two, and so on.&lt;/P&gt;
&lt;P&gt;If a JSL variable with a reference to a data table is supplied for parameter 2 and detailed routing is requested, then it is assumed that the list of locations is identical to the list of locations in the data table. All content of the referenced data table will be copied and inserted into the array with the detailed routing. This information can only be linked to the points of interest, since all lists have missing values for the waypoints.&lt;/P&gt;
&lt;P&gt;If a route can’t be found, an error message is given at the position that corresponds to the point of origin for that leg. Subsequent routes will be calculated, if possible.&lt;/P&gt;
&lt;P&gt;If you provide a link to a data table and that data table has excluded rows, then you must supply a list of excluded rows (&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;excludedrows = As List( dt &amp;lt;&amp;lt; Get Excluded Rows )&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;); as parameter 12. Otherwise, lists will get out of sync. In the message list, these observations are marked as “excluded”. If there are more “excluded” observations than originally in the data table, these observations failed to provide a minimum of location information.&lt;/P&gt;
&lt;P&gt;I hope this piece of code can help you with your project or just provide some insight into the application of JSL. I’m open to any questions or suggestions, but since it is part of the Geocoding&amp;nbsp;2020 add-in, I will only make changes that are consistent with its intended use in that add-in.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Sep 2020 19:56:15 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/A-routing-function/ba-p/284815</guid>
      <dc:creator>bernd_heinen</dc:creator>
      <dc:date>2020-09-22T19:56:15Z</dc:date>
    </item>
    <item>
      <title>A geocoding function</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/A-geocoding-function/ba-p/284801</link>
      <description>&lt;P&gt;I used the new technique of REST interfaces to provide a new geocoding add-in. At its core is the call to the respective REST interface of &lt;A href="https://mapquest.com" target="_blank" rel="noopener"&gt;MapQuest&lt;/A&gt;, a company providing lots of routing services and applications. One of MapQuest’s services is geocoding. For every address provided, MapQuest sends back the latitude and longitude of the location, as well as administrative information such as the country and state.&lt;/P&gt;
&lt;P&gt;Since data tables are the usual way to collect information in JMP, analysis starts with the user assigning roles to the columns of the data table via a user dialog. The &lt;A title="Geocoding 2020 blog" href="https://community.jmp.com/t5/JMP-blog-authoring/Geocoding-2020/ba-p/284840" target="_blank" rel="noopener"&gt;Geocoding 2020 add-in&lt;/A&gt; works the same way. After the user has completed the dialog, the program collects the relevant data from the data table, translates it into the structure needed by the REST API and then sends it to MapQuest. So, the rough structure of the program is: 1) complete the user dialog, 2) collect data, 3) prepare data for interface, 4) send interface request, 5) interpret results, 6) write JMP data table(s). The third step, data preparation, is defined as a function and is available as &lt;A title="Geo-code function for MapQuest services" href="https://community.jmp.com/t5/JSL-Cookbook/A-Geo-coding-function/ta-p/302525" target="_blank" rel="noopener"&gt;MapQuest_geocode.jsl&lt;/A&gt; in the JSL cookbook. You can embed it in your own geo application or use it to get ideas of how to structure data for REST calls.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Baseline functionality&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You, or any user of your program needs a valid&lt;A title="Registration for MapQuest services" href="https://developer.mapquest.com/plan_purchase/steps/business_edition/business_edition_free/register" target="_blank" rel="noopener nofollow noopener noreferrer"&gt; API-key&lt;/A&gt; from MapQuest.&lt;/P&gt;
&lt;P&gt;JMP data comes in form of data table columns, while REST interfaces most likely use JSON structures. As a result, there needs to be functionality that translates between both formats. The JSL also has structures for data collections, either lists or associative arrays. The purpose of this function is to encapsulate all non-native JSL commands. The necessary data is provided with the typical JSL variables in character, numeric or list formats. The data that is returned from the call comes as JSL lists as well. So, embedding this function in a JSL script doesn’t require any additional knowledge beyond JSL standards.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The interface&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;JSL functions are called with a statement like:&lt;/P&gt;
&lt;P&gt;result = function();&lt;/P&gt;
&lt;P&gt;If the function needs or accepts parameters, they are listed in the brackets. This function, GC_geocode, can be called with empty brackets or with a full list of parameters. Calling it with empty brackets invokes a parameter definition window with an outline for input and output, as shown in these two graphs:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_0-1596908357756.png" style="width: 802px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26107i8BAB62FC50C28CA9/image-dimensions/802x547?v=v2" width="802" height="547" role="button" title="bernd_heinen_0-1596908357756.png" alt="bernd_heinen_0-1596908357756.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="bernd_heinen_1-1596908405312.png" style="width: 802px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26108i5627847D36C4BD01/image-dimensions/802x486?v=v2" width="802" height="486" role="button" title="bernd_heinen_1-1596908405312.png" alt="bernd_heinen_1-1596908405312.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Parameters in a function call are always positional parameters. When the function is called with parameters, ALL mandatory parameters need to be supplied, but they may be empty.&lt;/P&gt;
&lt;P&gt;In my &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Geocoding-2020-add-in/ba-p/284840" target="_blank" rel="noopener"&gt;blog post about the Geocoding 2020 add-in&lt;/A&gt;, I’ve used a few of the local tourist sites around my hometown as examples of how to use the add-in. Let’s take two of those to see how this interface works:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="175"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_2-1596908505638.png" style="width: 202px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26109iEBB13965C3AF37EE/image-dimensions/202x134?v=v2" width="202" height="134" role="button" title="bernd_heinen_2-1596908505638.png" alt="bernd_heinen_2-1596908505638.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="174"&gt;
&lt;P&gt;Alte Freiheit 24a, 42103 Wuppertal, Deutschland&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="255"&gt;
&lt;P&gt;Wuppertaler Schwebebahn, a 13-km-long suspension railway, the oldest electric elevated railway with hanging cars in the world, inaugurated 1901.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="175"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bernd_heinen_3-1596908542634.png" style="width: 168px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26110i15DC132B5224AC90/image-dimensions/168x111?v=v2" width="168" height="111" role="button" title="bernd_heinen_3-1596908542634.png" alt="bernd_heinen_3-1596908542634.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="174"&gt;
&lt;P&gt;Schloßplatz 2, 42659 Solingen, Deutschland&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="255"&gt;
&lt;P&gt;Schloss Burg, a reconstructed castle, originating from the 12&lt;SUP&gt;th&lt;/SUP&gt; century.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First, you need an access key from MapQuest, let’s assume it is 1234ABCD. One way of using this interface is to take the address strings as they are. In this case, the format indicator (Position 2) needs to be 1 or larger. Then, the function call looks like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;coordinates = GC_geocode ("1234ABCD", 1, {"Alte Freiheit 24a, 42103 Wuppertal, Deutschland",&lt;BR /&gt; "Schloßplatz 2, 42659 Solingen, Deutschland"}, {}, {}, {}, {}, {}, {}); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If the addresses are in separate elements rather than in one string, the format indicator needs to be 0 (zero), meaning your call would look like:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;coordinates = GC_geocode ("1234ABCD", 0, {}, {"Deutschland", "Deutschland"}, {}, {"Wuppertal", "Solingen"}, {42103, 42659},&lt;BR /&gt; {"Alte Freiheit 24a", "Schloßplatz 2"}, {})&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Of course, you don’t need to put the values in as parameters; you can also supply a variable, e.g., a list variable with the list of country names.&lt;/P&gt;
&lt;P&gt;In any case the result is the same list of data:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;{200, "HTTP/1.1 200 OK", "", {0, 0}, {"", ""}, {51.25603, 51.13768}, {7.14865, 7.15245}, {"exact", "exact"}, {"DE", "DE"},&lt;BR /&gt; {"Nordrhein-Westfalen", "Nordrhein-Westfalen"}, {"", ""}, {"42103", "42659"}, {"Wuppertal", "Solingen"},&lt;BR /&gt; {"Alte Freiheit 24A", "Schloßplatz 2"}, 0}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since the addresses could be found and tagged, the response code for each address is “0” (Element&amp;nbsp;4), which is why there are empty texts in element 5, where error messages would appear otherwise. The rest can easily be understood, given the interface declaration above.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Technical details&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The basic functionality is simple. We send an address to MapQuest and get latitude and longitude back. For this simple task, MapQuest offers different input formats and process modes. The address information can be supplied as one text string with comma separated parts, like “Deutschland, Schloßplatz 2, 42659 Solingen”, which is the address of a famous castle near my hometown. Alternatively, the address can be given as single elements: country = “Deutschland”, Street = “Schloßplatz 2”, city = “Solingen”, postal code = “42659”.&lt;/P&gt;
&lt;P&gt;I assume that, in most cases, more than one address might be looked up. So, the function expects to get address information as lists, either a list of strings with complete addresses or several lists with address elements. MapQuest has two different URLs for the two address formats. The single string interface operates in a batch mode, i.e., one call can resolve multiple addresses. The interface for separate address elements only accepts one address at a time. For performance reasons, the function combines separate elements into one string and runs the batch mode when many addresses need to be located (currently: &amp;gt; 100).&lt;/P&gt;
&lt;P&gt;Each address, regardless of the format supplied, needs to provide its country. And there is no check if the required minimum information is given. All other elements are optional. The more precise you describe the address, the better the quality of the result. If the whole address is provided as a single string, the sequence of address elements within that string doesn’t matter.&lt;/P&gt;
&lt;P&gt;If you are reading the locations from a data table and that data table has excluded rows, you must provide the list of excluded rows (excludedrows = As List( dt &amp;lt;&amp;lt; Get Excluded Rows )) as parameter 12. Otherwise, the lists returned may not be in sync to your data table. In the message list these observations are marked as “excluded.” If there are more “excluded” observations than originally in the data table, the observations failed to provide a minimum of location information.&lt;/P&gt;
&lt;P&gt;MapQuest is an American company, and I found consistent results for all the U.S. addresses I tested. With addresses in other regions of the world, that was not always the case. Location information such as state, district or city is often returned in the local language but sometimes the results are in English.&lt;/P&gt;
&lt;P&gt;I hope this piece of code can help you with your project or just provide some insight into the application of JSL. I’m open to any questions or suggestions, but since it is part of the Geocoding&amp;nbsp;2020 add-in, I will only make changes that are consistent with its intended use in that add-in.&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 14:54:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/A-geocoding-function/ba-p/284801</guid>
      <dc:creator>bernd_heinen</dc:creator>
      <dc:date>2020-09-30T14:54:20Z</dc:date>
    </item>
    <item>
      <title>The new thing I'm going to show people when they start scripting: The Enhanced Log</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-new-thing-I-m-going-to-show-people-when-they-start-scripting/ba-p/284724</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JSLThing7-thomas-bormans-IHQHXj3jv6E-unsplash.jpg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26087i5985714794668F24/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JSLThing7-thomas-bormans-IHQHXj3jv6E-unsplash.jpg" alt="This new capability has me breaking out my thesaurus, scrambling for new superlatives." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;This new capability has me breaking out my thesaurus, scrambling for new superlatives.&lt;/span&gt;&lt;/span&gt;&lt;SPAN style="color: inherit; font-family: inherit;"&gt;So yeah, so much for being done with the series…&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Normally&lt;/EM&gt;, when I write a series like this, I write the whole thing – start to finish – before I start publishing anything. &lt;EM&gt;Normally,&lt;/EM&gt; I don’t want to leave my readers hanging while I write the next entry. &lt;EM&gt;Normally,&lt;/EM&gt; I try to avoid the stress of writing under a deadline. Alas, there is nothing normal about this entry. This entry is being written as the other entries are being published. I normally wouldn’t attempt something like this, but the information that I’m going to share here is not just salient to the discussion, it completely changes how I’m going to approach this topic going forward. As a refresher, here are the links to the other entries:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 1st thing I wish I knew when I started scripting: There are different kinds of scripts&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581" target="_blank" rel="noopener"&gt;The 2nd thing I wish I knew when I started scripting: Getting help&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 3rd thing I wish I knew when I started scripting: The Answer Button is your friend&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 4th thing I wish I knew when I started scripting: What to do when things go wrong&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-5th-thing-I-wish-I-knew-when-I-started-scripting-How-to/ba-p/276584" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 5th thing I wish I knew when I started scripting: How to string things together&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-other-5th-thing-I-wish-I-knew-when-I-started-scripting-How/ba-p/276585" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The (other) 5th thing I wish I knew when I started scripting: How to package things up&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;And now, let’s turn nearly everything I just finished telling you over the past weeks on its ear.&lt;/P&gt;
&lt;P&gt;There is a cycle to how &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; releases work. Usually, the Product Management team doesn’t start discussing the new release with the general public until about two or three months before the release date. So, you can imagine my shock when I was given the green light to write about this new capability – a full six months before JMP 16 is slated for release.&lt;/P&gt;
&lt;P&gt;As I sat in a meeting where the developers demonstrated this new capability to JMP staff, I shared my excitement about this feature and my eagerness to show it to customers. Imagine my surprise when, later that day, I was asked to write an article about it. So, what is this magical feature that has my heart all aflutter? What has me breaking out my thesaurus, scrambling for new superlatives? What is the new feature that’s going to completely alter how I introduce people to the world of JMP scripting? Well…and, stay with me here…it’s actually &lt;EM&gt;the log&lt;/EM&gt;.&lt;/P&gt;
&lt;H3&gt;A preview of things to come&lt;/H3&gt;
&lt;P&gt;JMP 16 will introduce a new log, currently called the &lt;EM&gt;Enhanced&amp;nbsp;Log&lt;/EM&gt;. But, that’s a bit like saying a smartphone is a thing to make phone calls (you do remember they do that, right?). The Enhanced Log tracks a fair bit of what you do when you interact with JMP and (here’s the awesome part) &lt;EM&gt;will generate JSL for it with a mouse click&lt;/EM&gt;! Let that sink in for a second.&lt;/P&gt;
&lt;P&gt;This goes way beyond Source scripts and the red triangle Save Script options. They’re not trying to boil the ocean, so some stuff isn’t going to be captured in the first release; data import and data table manipulation are the primary goals for JMP 16. But it covers a lot of ground right out of the gate. Let me show you what this thing is already able to do (with six months of development time to go).&lt;/P&gt;
&lt;H3&gt;Turning on the Enhanced Log&lt;/H3&gt;
&lt;P&gt;First things first, turning on the Enhanced Log is as easy as going into the preferences in JMP (under &lt;STRONG&gt;JMP &amp;gt; Preference&lt;/STRONG&gt; for MacOS; &lt;STRONG&gt;File &amp;gt; Preferences&lt;/STRONG&gt; for Windows) and changing the Log Style drop-down to “Enhanced.”&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Click &lt;STRONG&gt;OK&lt;/STRONG&gt; and you’re off to the races! (note the screenshot below is from an early release and the log now has its own menu item toward the bottom of the list.) &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image1.png" style="width: 707px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26088iAC86588B932A97A0/image-size/large?v=v2&amp;amp;px=999" role="button" title="image1.png" alt="image1.png" /&gt;&lt;/span&gt; &lt;/P&gt;
&lt;P&gt;Now open the log (&lt;STRONG&gt;Window &amp;gt; Log&lt;/STRONG&gt;&amp;nbsp;for MacOS; &lt;STRONG&gt;View &amp;gt; Log&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;for Windows). You’ll see something that looks a little different than you’re used to. I’ve cleared mine out in the screenshot, just so you can see the different regions. The top part is where actions will be recorded, which I’ll cover in a moment. The bottom part is where the JMP generated JSL will appear.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image2.png" style="width: 840px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26089i206C427B4600C124/image-size/large?v=v2&amp;amp;px=999" role="button" title="image2.png" alt="image2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;How that fits into our story&lt;/H3&gt;
&lt;P&gt;I’ve put everything into a JMP Project, just to keep everything organized. When the Enhanced Log goes into a project, it’s automatically put at the bottom and goes into a side-by-side configuration (Enhanced Log on the left; the JSL output on the right).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image3.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26090iA2A8CECEC9429949/image-dimensions/800x465?v=v2" width="800" height="465" role="button" title="image3.png" alt="image3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Since this isn’t meant to be a blow-by-blow discussion of how I did things, I’m just going to go through a few steps and point out some things. But I’m going to use the same example we used back in &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;my third post&lt;/A&gt;. If you’ve been following along, have a look back and compare how easy this is now.&lt;/P&gt;
&lt;P&gt;First, let’s get some data into JMP. I opened Big Class Families.jmp. The Enhanced&amp;nbsp;Log area has an entry that shows the action was a user click (under Type), what it did, where the action came from in JMP (under Origin), and what happened. It also has a nice time stamp. Now have a look at the JSL area. There’s an Open(…) command (properly commented!) ready for you to use! No diving through the Scripting Index required!&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image4.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26091i585887C89482ADAD/image-dimensions/800x465?v=v2" width="800" height="465" role="button" title="image4.png" alt="image4.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Let’s continue with our analysis. I made a Distribution with the Height, Weight, Sex, and Age columns. In the Enhanced&amp;nbsp;Log, there is now an entry showing that a user command started with a data table and resulted in a Distribution Platform window. In the JSL area, I’ve got the properly formatted (and commented!!!) entry to reproduce the Distribution platform.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image5.png" style="width: 801px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26092iA9D159D5C73B593F/image-dimensions/801x466?v=v2" width="801" height="466" role="button" title="image5.png" alt="image5.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now, let’s do a Fit Y by X of Weight vs. Height. The same story – there’s an entry in the Enhanced&amp;nbsp;Log and JSL areas.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image6.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26093i76C0494AEDF5506A/image-dimensions/800x465?v=v2" width="800" height="465" role="button" title="image6.png" alt="image6.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;But, that’s not generally why we open Fit Y by X, is it? We want to do line fitting or hypothesis testing. If we do that, there isn’t an update to the Enhanced&amp;nbsp;Log or any new JSL code.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image7.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26094iB1F01BAAD0F97BE9/image-dimensions/800x503?v=v2" width="800" height="503" role="button" title="image7.png" alt="image7.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;We appear to have hit a roadblock. But wait! We haven’t, have we? We haven’t followed the &lt;A href="https://community.jmp.com/t5/JMP-Blog/The-2nd-thing-I-wish-someone-had-told-me-when-I-started-using/ba-p/213611" target="_self"&gt;JMP Workflow&lt;/A&gt; yet! So (following the workflow) the question is, &lt;EM&gt;how do we get the Enhanced Log to capture the changes we made to Fit Y by X by fitting a line? &lt;/EM&gt;As always, the answer is found by PUSHING THE ANSWER BUTTON! For those who missed my &lt;A href="https://community.jmp.com/t5/tag/5%20Things/tg-p/board-id/jmp-blog" target="_blank" rel="noopener"&gt;first blog series&lt;/A&gt;, I call the little red triangle the Answer Button.) Since we’re in a &lt;EM&gt;JSL blog series,&lt;/EM&gt; we’re going to the &lt;STRONG&gt;Save Script To…&lt;/STRONG&gt; part of the little red triangle menu, where we find a new entry, &lt;STRONG&gt;To Log&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image8.png" style="width: 391px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26095i26C945E8A142B4C8/image-size/large?v=v2&amp;amp;px=999" role="button" title="image8.png" alt="image8.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Clicking that puts a new pair of entries in the Enhanced&amp;nbsp;Log for Fit Y by X with the fitted line options on.&lt;/P&gt;
&lt;P&gt;So. Freaking. Cool.&lt;/P&gt;
&lt;P&gt;Side note: Did you notice that it’s also handling the glue operators (;)?&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image9.png" style="width: 800px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26096iE23E06AFF0E46EEE/image-dimensions/800x465?v=v2" width="800" height="465" role="button" title="image9.png" alt="image9.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now, the last bit. How do we get that JSL out of the Enhanced&amp;nbsp;Log? Well, I just asked a question, so let’s push the answer button for the Enhanced&amp;nbsp;Log. And, there we find a &lt;STRONG&gt;Save Script &amp;gt; To Script Window&lt;/STRONG&gt; option.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image10.png" style="width: 365px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26097iCC617A8F2019B77B/image-size/large?v=v2&amp;amp;px=999" role="button" title="image10.png" alt="image10.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;And we’re done! I could delete the extra Bivariate call (the first one, without the line) and put the two report windows into a New Window() function, but the point here is that I got 80%, maybe 90% of the way to a completed script without writing a lick of code. IT EVEN COMMENTS FOR YOU!!! (I’m totally geeking out at the moment…hold on a sec…I need to take a breath.)&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image11.png" style="width: 801px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/26098iA21A76851A006030/image-dimensions/801x466?v=v2" width="801" height="466" role="button" title="image11.png" alt="image11.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Here's the finished code, if you want to play with it (Note: I did change the file path so that it would work on other versions of JMP):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// Open Data Table: Big Class Families.jmp
Open( "$SAMPLE_DATA/Big Class Families.jmp" );

// Launch platform: Distribution
Distribution(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Continuous Distribution( Column( :height ) ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Continuous Distribution( Column( :weight ) ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nominal Distribution( Column( :sex ) ),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nominal Distribution( Column( :age ) )
);

// Launch platform: Bivariate
Bivariate( Y( :height ), X( :weight ) );
Bivariate( Y( :height ), X( :weight ), Fit Line( {Line Color( {230, 159, 0} )} ) )&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;Where to go from here…again&lt;/H3&gt;
&lt;P&gt;Here we are at the end of the blog series…again. I promise this time is for real. So, what’s your homework for this entry? Well, you might be tempted to just sit on your hands and wait for Enhanced&amp;nbsp;Log to arrive. I know it’s tempting, but I recommend that you practice what we’ve gone over in the earlier episodes. It’s important stuff, and you should use what you’ve learned. Good luck and happy coding!&lt;/P&gt;</description>
      <pubDate>Thu, 28 Jan 2021 14:30:25 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-new-thing-I-m-going-to-show-people-when-they-start-scripting/ba-p/284724</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2021-01-28T14:30:25Z</dc:date>
    </item>
    <item>
      <title>The (other) 5th thing I wish I knew when I started scripting: How to package things up</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-other-5th-thing-I-wish-I-knew-when-I-started-scripting-How/ba-p/276585</link>
      <description>&lt;H3&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JSLThing6-giammarco-boscaro-zeH-ljawHtg-unsplash.jpg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24950i309B1FC69C98B91C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JSLThing6-giammarco-boscaro-zeH-ljawHtg-unsplash.jpg" alt="You've created a script. Now how can you share what you’ve created?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;You've created a script. Now how can you share what you’ve created?&lt;/span&gt;&lt;/span&gt;&lt;/H3&gt;
&lt;P&gt;Welcome back! If you’ve made it this far, you’ve probably got a working script of some sort. Congrats! If you’ve just discovered &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;this series&lt;/A&gt;, you might want to put a pin in this article and start from the beginning.&lt;/P&gt;
&lt;P&gt;Here are links to the ones you may have missed:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 1st thing I wish I knew when I started scripting: There are different kinds of scripts&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581" target="_blank" rel="noopener"&gt;The 2nd thing I wish I knew when I started scripting: Getting help&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 3rd thing I wish I knew when I started scripting: The Answer Button is your friend&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 4th thing I wish I knew when I started scripting: What to do when things go wrong&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-5th-thing-I-wish-I-knew-when-I-started-scripting-How-to/ba-p/276584" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 5th thing I wish I knew when I started scripting: How to string things together&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So, you’ve got a nice new bit of code. What are your plans for it? If you’ve gone to the trouble of creating a script, you should probably consider how to package it for others (or yourself) to easily use. In this last entry, I want to give you some ideas about how to share what you’ve created. &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; has several options depending on how you want to share it.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Sharing your work&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;There are four or five methods (depending on who you talk to) for packaging scripts for others to consume: JSL files, Query Builder files, JMP add-ins, JMP applications, and JMP Live and/or JMP Public reports. For the level of scripting we’re doing here, some of these methods are a bit out of scope (particularly applications; we’ll save those for another series). What I’d like to do here is give you some options and good resources for each method and work through some examples for the ones that will give you the most bang for the buck in the current phase of your scripting journey.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;JSL files&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;This is what people think of when they talk about working in JSL. If you’ve been following along in the series, this is where your script currently lives. The thing is, JSL files aren’t the best way to store or share files. They can be accidentally edited. They require someone to know how to run a script. And, to be honest, for some people, seeing the code is a bit intimidating.&lt;/P&gt;
&lt;P&gt;JSL files should probably only be used for the most trivial of tasks or for prototyping methods for a larger project. There are exceptions, of course. If you’re creating a library of functions or something, it’s going to exist as a JSL file. There are also bits of JMP that let you provide JSL directly (for example, &lt;A href="https://www.jmp.com/support/help/en/15.1/#page/jmp/add-code-folding-markers.shtml#" target="_self"&gt;the code folding keywords file&lt;/A&gt;), but these tend to be the exception rather than the rule. My personal bias is to stop at a JSL file only as a last resort, if I’m collaborating with another coder on something or if the code is entirely for my personal use (e.g., a snippet for testing something). &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Query Builder files&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;JMP has Query Builder support for most file types through ODBC drivers or JMP data tables. If your script involves a data manipulation step, chances are that you could probably offload a bunch of the heavy lifting to the Query Builder file and use the post-query script (more on that in a second) to do the bits that Query Builder can’t handle. Using these files as a packaging method simplifies the workflow and makes the script more robust. They also make the script portable. Plus, you gain the ability to use the built-in filter prompts to make your code even more flexible.&lt;/P&gt;
&lt;P&gt;Let’s look at a simple example. I’m going to use the JMP data table Query Builder under &lt;STRONG&gt;Tables &amp;gt; Query Builder&lt;/STRONG&gt; rather than the one for ODBC or SAS connections just to keep things simple, but the workflow would be similar for those cases, and &lt;A href="https://www.jmp.com/en_us/events/ondemand/mastering-jmp/accessing-databases.html" target="_blank" rel="noopener"&gt;there are resources to show how those work&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;First, let’s set up a Table Query. I’m not going to write that out. The JMP documentation team did a great job with an example for the SATByYear sample data. Just follow the instructions in &lt;A href="https://www.jmp.com/support/help/en/15.0/index.shtml#page/jmp/jmp-query-builder.shtml" target="_self"&gt;this example&lt;/A&gt;&amp;nbsp;and stop after you run the query, but keep the Query Builder open. Once you have the data table, create a Graph Builder map:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Graph Builder (&lt;STRONG&gt;Graph &amp;gt; Graph Builder&lt;/STRONG&gt;).&lt;/LI&gt;
&lt;LI&gt;Drag State to the Map Shape drop zone below the Y-axis.&lt;/LI&gt;
&lt;LI&gt;Drag % Taking (2004) into the Color drop zone.&lt;/LI&gt;
&lt;LI&gt;Go to the red triangle next to Graph Builder and select &lt;STRONG&gt;Redo &amp;gt; Column Switcher&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;% Taking (2004)&lt;/STRONG&gt; as what you want to switch out and click &lt;STRONG&gt;OK&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Select all the continuous variables as what you want to switch between and click &lt;STRONG&gt;OK&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Select &lt;STRONG&gt;Done&lt;/STRONG&gt; to close the control panel.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image081.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25642iB95EB553CB1F012E/image-dimensions/750x352?v=v2" width="750" height="352" role="button" title="image081.png" alt="image081.png" /&gt;&lt;/span&gt;Now, that’s a lot of clicking around for a graph and a very common view for this kind of data. Using our new scripting skills, we can have Query Builder reproduce this graph (and any additional ones we may choose to add later). Here’s how you do it:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Save Script &amp;gt; To Clipboar&lt;/STRONG&gt;d from the Graph Builder.&lt;/LI&gt;
&lt;LI&gt;In the Query Builder select the &lt;STRONG&gt;Post-Query Script&lt;/STRONG&gt; tab in the bottom half of the window.&lt;/LI&gt;
&lt;LI&gt;Paste (&lt;STRONG&gt;CTRL+P&lt;/STRONG&gt; for PC or&lt;STRONG&gt; CMD+P&lt;/STRONG&gt; for MacOS) the script into the Post-Query Script tab.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image083.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25643i45825402669C4F90/image-dimensions/750x455?v=v2" width="750" height="455" role="button" title="image083.png" alt="image083.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI&gt;Save the Query Builder file by clicking &lt;STRONG&gt;Save&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Now, close the data table Query Builder created and Graph Builder.&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG&gt;Run Query&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;See how that works? By using Query Builder, you got some interactivity for free in the form of the filtering dialog and were able to significantly increase the efficiency of this workflow. If someone had the two data files, you could send the Query Builder file to them and it would produce the same result.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;JMP add-ins&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;If you want to make your code show up in JMP, an add-in is the way to go. Add-ins show up in the Add-in menu in JMP, which will only appear after you’ve installed your first add-in. They are stored in the JMP file system, so the user doesn’t have to remember where a script file is. And they provide a certain element of polish to a completed project. Admittedly, they can be a skosh intimidating at first, but they’re really easy to work with using the Add-in Wizard.&lt;/P&gt;
&lt;P&gt;I’m going to create a really simple add-in that uses this code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// Set up the namespace
Names Default to here(1);

// open the log window and clear it
Open Log();
Clear Log();

// write my message
Write(“Hello World!”);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The code will open the log and print a message. We’re going to call this add-in “My First Add-in.” The first step is to open an Add-in Builder (&lt;STRONG&gt;File &amp;gt; New &amp;gt; New Add-in&lt;/STRONG&gt;). After that, it’s just a matter of filling in the form. There are five tabs along the top of the interface. We’re just going to need the first two for our add-in. The first tab (General Info) is more about bookkeeping and getting JMP to know where things are. The second tab actually sets up the bits that are in the JMP GUI.&lt;/P&gt;
&lt;P&gt;Under General Info, the Add-in Name and Version fields are pretty self-explanatory. You can limit legacy versions of JMP from running your code with the Minimum JMP Version. You can also limit your add-in to run on MacOS or Windows using the Host. I recommend setting the Minimum Version and Host to match the configuration of the system that the code was written on (unless you have the ability to test on other configurations). It’s easier than trying to make sure your code is bulletproof for all situations, particularly when you’re just starting out. The Add-in ID is a unique folder name that is created in the JMP file system when the add-in is installed. JMP recommends using the “Reverse DNS” naming convention (no idea why). It basically means you create something that looks like a website address and reverse it. For the add-in, we’ll use com.myAddin.MyFirstAddin. Here’s what the first tab should look like:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image085.png" style="width: 646px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25644i24B9122DCEF6EC5C/image-dimensions/646x361?v=v2" width="646" height="361" role="button" title="image085.png" alt="image085.png" /&gt;&lt;/span&gt;Under the &lt;STRONG&gt;Menu Items&lt;/STRONG&gt; tab, you just need to click on the &lt;STRONG&gt;Add Command&lt;/STRONG&gt; button. Then under Details, give the menu item a name. If you want to be fancy, you can give it a tool tip to explain what your add-in does when you hover over it. Then you just copy and paste your JSL into the Action area. If you’re using the code snippet above, your &lt;STRONG&gt;Menu Items&lt;/STRONG&gt; tab should look like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image087.png" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25645iB1F7CD1146881375/image-dimensions/751x420?v=v2" width="751" height="420" role="button" title="image087.png" alt="image087.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;And that’s it. Just save the file, and you’re done! Because the default action (on the &lt;STRONG&gt;General Info&lt;/STRONG&gt; tab) is to install the add-in when you save it, clicking &lt;STRONG&gt;Save&lt;/STRONG&gt; will both create a file to send around to others and install it on your own instance of JMP. Once you’ve saved the add-in, you should see an entry like this in your add-in’s menu:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image089.png" style="width: 294px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25646iB586F3D3CD88C8E5/image-dimensions/294x185?v=v2" width="294" height="185" role="button" title="image089.png" alt="image089.png" /&gt;&lt;/span&gt; &lt;/P&gt;
&lt;H3&gt;JMP applications&lt;/H3&gt;
&lt;P&gt;So, you want to make something that looks like it’s a native part of JMP? Application Builder is, in my opinion, the most flexible and efficient method for generating high-quality, custom JSL solutions. It provides you with the ability to control every aspect of the software, leverage existing parts of JMP, and use custom-designed routines. That flexibility and power does come at a cost in the form of a learning curve.&lt;/P&gt;
&lt;P&gt;That said, you shouldn’t let it intimidate you. There are lots of resources out there for getting started with Application Builder, and the things that you can do with it are incredible. It’s just going to take some work to get up and running. There’s also a “lite” version of Application Builder built into JMP. You’ll know it as the drag-and-drop tool called Dashboard Builder. Once you’ve got a bit of experience with JSL, taking &lt;A href="https://support.sas.com/edu/schedules.html?crs=JIAB&amp;amp;ctry=US" target="_blank" rel="noopener"&gt;the Application Builder course from SAS Education&lt;/A&gt; would not be a bad way to learn about this very powerful tool. I’m also toying with doing another “Five Things” series on this topic at some point, so keep an eye out for that!&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;JMP Live and JMP Public&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;While JMP Live and JMP Public are heavier on the "consume" end of things, you can create and publish dashboards and reports for others to consume using this method. For the most part, you’re just using the bits of JSL that I’ve shown you in this series. Dan Valente did a &lt;A href="https://community.jmp.com/t5/JMPer-Cable/10-useful-tips-for-automating-the-publishing-of-JMP-Live-reports/ba-p/87707" target="_self"&gt;great blog post on scripting the JMP Live&lt;/A&gt; (and JMP Public) publication process, so I’m not going to belabor the point.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Homework&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Well, you made it! The last homework assignment is really easy. Package up your code, give it to a colleague, and have them try it out and see if it works. If it doesn’t, look at the error messages and figure out why. If it does, then you’ve made your first JMP add-in! Nice work.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Where to go from here&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Like I said earlier, this series was not meant to blow your hair back and dazzle you with my scripting prowess. It was meant to point your nose in the right direction, give you a good map, a pat on the back, and some help to reach out to in case you get stuck. It’s a starting point; there’s still a lot more road ahead of you than there is behind you.&lt;/P&gt;
&lt;P&gt;So, from here, the trick is to keep trying and experimenting. Keep taking people’s add-ins and applications apart to see how they work. Keep trying new things and looking for opportunities to make your workflow more efficient with little scripts. The more you do that, the better you’ll get and the more approachable the bigger projects you’re thinking about will seem. Just keep at it.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Aug 2020 19:11:15 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-other-5th-thing-I-wish-I-knew-when-I-started-scripting-How/ba-p/276585</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-08-11T19:11:15Z</dc:date>
    </item>
    <item>
      <title>The 5th thing I wish I knew when I started scripting: How to string things together</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-5th-thing-I-wish-I-knew-when-I-started-scripting-How-to/ba-p/276584</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JSLThing5-tim-van-cleef-1JBOZwuW7sI-unsplash.jpg" style="width: 183px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24948i63F64C9D3C0F62B2/image-dimensions/183x275?v=v2" width="183" height="275" role="button" title="JSLThing5-tim-van-cleef-1JBOZwuW7sI-unsplash.jpg" alt="Ready to learn about stringing everything together into an actual script?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Ready to learn about stringing everything together into an actual script?&lt;/span&gt;&lt;/span&gt;Welcome back to my series on the basics of scripting in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;. This is the fifth entry in a series that is structured for you to work along. If you’re just joining us, you’re really going to want to have a look at the earlier entries in &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;the series&lt;/A&gt;, because this one’s a doozy. Here are the links to them for you to review:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 1st thing I wish I knew when I started scripting: There are different kinds of scripts&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581" target="_blank" rel="noopener"&gt;The 2nd thing I wish I knew when I started scripting: Getting help&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 3rd thing I wish I knew when I started scripting: The Answer Button is your friend&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 4th thing I wish I knew when I started scripting: What to do when things go wrong&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;All right? Still here? Did you look at the earlier episodes? Excellent! Onward to glory!&lt;/P&gt;
&lt;P&gt;From the homework a couple of weeks ago, we should all have a bunch of JSL snippets from using &lt;STRONG&gt;Save Script&lt;/STRONG&gt; &lt;STRONG&gt;to Script Window&lt;/STRONG&gt; or the Scripting Index to get pieces of code that we need. You &lt;EM&gt;did&lt;/EM&gt; do your homework, &lt;EM&gt;right&lt;/EM&gt;? Good! Let’s get into stringing everything together into an actual script. But first, we gotta have a little chat.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;One of Mikey's coding pet &lt;/SPAN&gt;&lt;SPAN&gt;peeves&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Okey-dokey, folks. Let me, just for a moment, get up on my soapbox about something. When we write code, we must &lt;EM&gt;always&amp;nbsp;&lt;/EM&gt;comment it! We can’t make any assumptions about the person who will read our code after us, including ourselves.&lt;/P&gt;
&lt;P&gt;Back in college, I took a Visual Basic coding class. The first thing we learned was how to comment code and write pseudocode. Pseudocode, by the way, are comments that you write before writing code to help you map out what you need to do (they are similar to the punch list I had you write in &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;that first post&lt;/A&gt;). The instructor called commenting and pseudocode “being a good citizen in the coding community.”&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;We were even graded on how well we commented the code we submitted. It’s that important.&lt;/P&gt;
&lt;P&gt;The truth of the matter is that you rarely have complete control over who sees your code. Case in point: In this blog series, I have given you step-by-step instructions on how to reverse-engineer someone else’s add-in. I can guarantee that some (if not most) of the people who wrote those add-ins were not expecting others to peek under the hood at their code. I can also guarantee that you’re not going to find as much commenting in the code to help you figure out what’s going on as you’d hope.&lt;/P&gt;
&lt;P&gt;You need to comment your code to make sure that someone who views it later can understand what you’re doing easily. Yes, commenting is a pain. And, yes, it takes extra time. But, &lt;EM&gt;no&lt;/EM&gt;, you can’t just skip over doing it. It will pay dividends in the long run. And I do practice what I preach here. I’ve got add-ins that I wrote five years ago that I can still understand because I did detailed commenting (and I still remember how tedious it was to do!).&lt;/P&gt;
&lt;P&gt;So, those of you who already code, make sure you’re commenting your code so that someone else can understand what you’re doing. Those of you who are learning, get into the habit and stay in the habit of heavily commenting your code. Now, let me get down from this soapbox and show you how.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Commenting in JSL&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Let’s open up JMP and open that Big Class Families.jmp data table we’ve been using. If you didn’t save the script example from the last session, go ahead and recreate it. You should have something that looks like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image061.png" style="width: 749px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25618i4F32BC38FE7DA319/image-dimensions/749x607?v=v2" width="749" height="607" role="button" title="image061.png" alt="image061.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;There are two ways to put comments into your JSL code. The first is to comment out individual lines using a double forward slash ("//"). Anything after the slashes until a carriage return (hitting return on the keyboard) will be ignored. I generally use this method to do my short inline commenting. It’s also useful to turn off single lines of code that you don’t want to run. Let’s have a look at what that means:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image063.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25619i28FDA1605953E5D2/image-dimensions/750x503?v=v2" width="750" height="503" role="button" title="image063.png" alt="image063.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The second way you can comment is used in cases where you want to turn off large blocks of code or to generate large blocks of comments and text. This type of comment is called a comment block. It’s done using an opening comment flag made of a forward slash and an asterisk ("/*") and a closing comment flag made of an asterisk and a forward slash ("*/"). Here’s an example of how this might be used:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image065.png" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25620i75611E5B919E2781/image-dimensions/751x769?v=v2" width="751" height="769" role="button" title="image065.png" alt="image065.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that I’m not discussing commenting &lt;EM&gt;style&lt;/EM&gt; here. That’s actually up to you. You’ll develop your own style as you go along and may even have different commenting styles for different purposes. My inline comments (like the ones in the examples) are completely different from the commenting I do in something like an application. The point is to write the comments and to be internally consistent in a script with how you do it.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;The hardest bits in this entire series&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Really, this entire series has been leading up to these next items. There are three core things you need to know to get started in JSL. The first is commenting (see the sermon earlier in this article). The second and third are &lt;EM&gt;how to name things&lt;/EM&gt; and &lt;EM&gt;how to send messages&lt;/EM&gt; to them.&lt;/P&gt;
&lt;P&gt;I suppose it’s possible to code up your own ANOVA algorithm (a colleague of mine tells a very entertaining story about that). But, it’s a lot easier to tell a data table to run an ANOVA using Fit Y by X through a message, like we learned in the previous episode. That basic workflow (name something, send a message to it) is a lot of what JSL is about. Yes, you can get into logic and loops, GUI development, etc., but brute force scripting really only requires names, messages, and a little searching the Scripting Index.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Naming things&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Let’s start with naming things. You name things by giving JMP a name following it with an equal sign and then writing the text, number, code, etc., you want that name to represent. The name is called a &lt;EM&gt;variable&lt;/EM&gt;. You can think of variables as containers that you can put stuff into or as nicknames for open reports in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Let’s look at an example using an ANOVA. To create the code for an ANOVA, first run the analysis in Fit Y by X (under Analyze), then turn on the ANOVA test, and then save the code out to a script window. Here’s the report for that using Big Class Families.jmp and the resultant JSL code saved from the red triangle menu (height as Y, sex as X, and selecting &lt;STRONG&gt;Means/Anova/Pooled t&lt;/STRONG&gt; under the red triangle) :&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image067.png" style="width: 699px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25621iB34D5F84A9E12DCA/image-dimensions/699x1048?v=v2" width="699" height="1048" role="button" title="image067.png" alt="image067.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image069.png" style="width: 749px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25622iB1587CE87AF184A7/image-dimensions/749x745?v=v2" width="749" height="745" role="button" title="image069.png" alt="image069.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This little JSL snippet will produce an ANOVA for any data table that has the same column names as the original data table. (We’re not going to worry about parameterization in this series, though. It’s a bit out of scope.)&lt;/P&gt;
&lt;P&gt;Now, what if you’ve got a bunch of data tables open and you want to control which data table you want to run that ANOVA on? Well, you can edit the script by giving a name to the data table you want to run the ANOVA on and then sending the JMP-generated code as a message. If you were to look in the Scripting Index (see the article on getting help), you would find a couple of ways to do this. You could either call a data table directly or grab a reference to the data table JMP is currently focused on by using Current Data Table(). There is a third option that’s a little more advanced, where you give a data table a name as you open it. I’ve put examples of all three below (and again note the use of comments to convey information!):&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image071.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25623i7E85F529BF75D8A1/image-dimensions/750x746?v=v2" width="750" height="746" role="button" title="image071.png" alt="image071.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Calling the data table by name will work as long as there is a data table open that has the name you are trying to use. This can be handy if you have a list of data table names to work from. It can also be handy if you’ve hidden or minimized your data table. In either case, you can still send messages to the data table even if you can’t necessarily see it. This method uses the form:&lt;/P&gt;
&lt;P&gt;&amp;lt;variable name&amp;gt; = Data Table(“&amp;lt;data table name&amp;gt;”);&lt;/P&gt;
&lt;P&gt;Probably the most useful way to assign a variable to a data table for our purposes is to use the Current Data Table () function. This function grabs whatever is the active or current data table and assigns it to the variable that you’ve indicated. Once the table is assigned to the variable, it doesn’t matter if another data table becomes “current” (e.g., by creating a summary table, you’ll always have a reference to the first data table until you redefine the variable). It has a simpler form:&lt;/P&gt;
&lt;P&gt;&amp;lt;variable name&amp;gt; = Current Data Table();&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The last method is useful if you want to assume that the data table may not be open when someone runs the script. By using this method, JMP will generate a file dialog that allows the user to select the file they want to open. When the user confirms their choice, the file will be opened and assigned the variable name you’ve given it. Again, it’s a simple form:&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;variable name&amp;gt; = Open();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Using the &lt;/SPAN&gt;&lt;SPAN&gt;Open(…); method can also be handy if you’re comfortable working file paths and directories. You can put the file path inside the parentheses to tell JMP where to look for the file, like this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image073.png" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25624iF2F8439D4BBA08EC/image-dimensions/751x577?v=v2" width="751" height="577" role="button" title="image073.png" alt="image073.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Also, note that I’m using something called a &lt;EM&gt;Path Variable&lt;/EM&gt; in the &lt;/SPAN&gt;&lt;SPAN&gt;Open(…); command to shorten the string. There’s a section on them in the &lt;A href="https://www.jmp.com/support/help/en/15.1/index.shtml#page/jmp/path-variables.shtml" target="_blank" rel="noopener"&gt;Scripting Guide&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Sending messages&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Now, once you’ve named something, it’s possible to send it a message. It works similarly to sending a text message to someone on your phone. When you send a text, the first thing you need to know is their name, email address or phone number of the recipient, something to identify them. You enter that into the messaging app and then you send the message. Here’s how to do it using the Big Class ANOVA. I’m going to have some fun and have JMP ask me to open a file in this case:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image075.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25625iBAC8B355EA50B3EC/image-dimensions/750x746?v=v2" width="750" height="746" role="button" title="image075.png" alt="image075.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Let’s unpack what we’re seeing here starting at line 5. The first thing that we see is the variable name of the data table we want to give an instruction. Just like when we send a text or give an instruction to a person, we have to identify who we are talking to. Next there are two “less than” symbols (&amp;lt;&amp;lt;). We’ve already seen something like this with the Glue Operator (;). The “&amp;lt;&amp;lt;” symbol is referred to as the Message Operator. It lets the message recipient know that what follows is a message. After that, we see a function called Oneway(…); with the arguments that the function needs to create the ANOVA report. Note: you can get all the information on the options for that function in the documentation or Scripting Index, but you don’t actually have to write any of it out longhand. Simply run the analysis through once and grab the finished script (with all the options) using one of the &lt;STRONG&gt;Save Script to...&lt;/STRONG&gt; commands I showed you earlier.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Some odds and ends&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Okay, there are three last details that need to be addressed. The first is the issue of stringing things together. For instance, if you wanted to do an ANOVA and create a Graph Builder in the same script, you’d need to warn JMP that further instructions are to follow. To do this, use that Glue Operator (;) that I keep mentioning.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image077.png" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25626i14C46F684DA942CA/image-dimensions/751x747?v=v2" width="751" height="747" role="button" title="image077.png" alt="image077.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Like a semicolon in written English, the semicolon at the end of a command lets JMP know that there are more instructions to come. Glue is found at the end of an instruction like Bivariate(...)&lt;STRONG&gt;&lt;U&gt;;&lt;/U&gt;&lt;/STRONG&gt;, or Distribution(...)&lt;STRONG&gt;&lt;U&gt;;&lt;/U&gt;&lt;/STRONG&gt; , or giving something a name: stuff = 5 + 6&lt;STRONG&gt;&lt;U&gt;;&lt;/U&gt;&lt;/STRONG&gt;. As you may recall from earlier posts, JMP includes the semicolon automatically when we use &lt;STRONG&gt;Save Script…To Script Window&lt;/STRONG&gt;, but when scripting freehand, this happens to be the most common error I commit during scripting – forgetting to glue things together.&lt;/P&gt;
&lt;P&gt;The second detail is ensuring your scripts are good citizens in a JMP session. This is done by assigning all the variables you create to a &lt;EM&gt;namespace&lt;/EM&gt;. A namespace is a little sandbox that keeps the variable names that you create from interfering with other parts of the software. The default namespace is called the “Here” namespace. In scripts it looks like this (see line 2):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image079.png" style="width: 751px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25627iD849EB26A1D19E41/image-dimensions/751x747?v=v2" width="751" height="747" role="button" title="image079.png" alt="image079.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This instruction should always go at the beginning of a script (until you learn when not to use it!) to keep your variable names from colliding with other scripts or parts of JMP. &amp;nbsp;&lt;SPAN&gt;Before you start pulling out your hair on this point, here's a TL;DR version of what I just said: Just remember to always put "Names Default To Here(1);" at the beginning of your script and you'll be fine for the moment. If you want to learn more about Namespaces, there's a paragraph on the topic in &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Total-Recall-A-New-Strategy-and-Library-for-Recall-Functionality/ba-p/49330" target="_blank" rel="noopener"&gt;this other post I wrote a while back&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The last detail I need to discuss is how to change a column name in a saved script. It’s really simple. Look in your saved script. You should see your column names with a colon (“:”) in front of them. That colon indicates that they are column names (it can mean other things, but for now, it means column names). To change a column name, just change it, but remember to put the colon in front. If your column names contain special characters, you might run into something like :Name(“…”) when JMP outputs the script for you. That’s how JMP handles the fact that your column name has characters that would cause problems if it wasn’t clear that they were part of a string. Even though it’s bad coding form to use :Name(“…”) in our scripts, the software gets to use it because it doesn’t have a choice. You should try to choose better column names.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;But you forgot about...&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;OK, I realize some of you are probably getting a little twitchy at this point. You may be thinking, “YOU FORGOT ABOUT FUNCTIONS!!!” or “BUT WHAT ABOUT EXPRESSIONS!!!” or even, “YOU TWIT!!! YOU COMPLETELY GLOSSED OVER LOGIC AND LOOPING!”&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;First off, it’s not nice to call names. Second, I didn’t forget about any of that. I &lt;EM&gt;consciously&lt;/EM&gt; omitted it.&lt;/P&gt;
&lt;P&gt;The thing is, this series is not meant to blow your hair back. Like I said toward the beginning of the series, it’s meant to point your nose down the right path, give you a good map, some snacks, a pat on the back, and show you where to look for help in case you get stuck. It’s a starting point. (You have my permission to get a snack at this point, btw.)&lt;/P&gt;
&lt;P&gt;For those of us who script regularly, a lot of what I’m talking about here is so foundational – so basic – that it’s muscle memory. The thing we’ve forgotten is that, just by using the foundational knowledge I’m covering here, a neophyte scripter can cover a lot of ground. Anyway, if you’re hyperventilating because I didn’t cover anything super fancy, relax. We’re going to go way down the rabbit hole in the next series. For now, let’s get back to the discussion and talk about this week’s homework.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Homework&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;All right – here we are. The big homework exercise. This week, you’re going to take the bits of code that you made last week and glue them together. Do this one bit at a time. If your script is going to live outside a data table (as a JSL file), then start with opening your data table and putting it in a variable. After that, regardless of where your script is going to live, add a bit and check that it does what you expect. Then add more and check again that you get the expected result. Remember the Community, help files, etc., are your friends. If you get error messages, look at the log (&lt;STRONG&gt;View &amp;gt; Log&lt;/STRONG&gt; for PC and &lt;STRONG&gt;Window &amp;gt; Log&lt;/STRONG&gt; for MacOS) and the &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583" target="_self"&gt;previous episode&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Good luck and see you next week!&lt;/P&gt;</description>
      <pubDate>Tue, 04 Aug 2020 15:06:01 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-5th-thing-I-wish-I-knew-when-I-started-scripting-How-to/ba-p/276584</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-08-04T15:06:01Z</dc:date>
    </item>
    <item>
      <title>The 4th thing I wish I knew when I started scripting:  What to do when things go wrong</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583</link>
      <description>&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JSLThing4-dmitrij-paskevic-YjVa-F9P9kk-unsplash.jpg" style="width: 291px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25984i83192D8455E08AAE/image-dimensions/291x194?v=v2" width="291" height="194" role="button" title="JSLThing4-dmitrij-paskevic-YjVa-F9P9kk-unsplash.jpg" alt="What should you do when things go awry with your scripting?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;What should you do when things go awry with your scripting?&lt;/span&gt;&lt;/span&gt;Welcome back!&lt;/P&gt;
&lt;P&gt;If you’re just joining us, you’ve jumped in right in the middle of a series that aims to get people started with using JMP scripting language. Unlike the previous entries in &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;the series&lt;/A&gt;, you probably don’t need to read the others for this one to make sense, but if you want to play along and do the homework from the other entries, here are the links&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 1st thing I wish I knew when I started scripting: There are different kinds of scripts&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581" target="_blank" rel="noopener"&gt;The 2nd thing I wish I knew when I started scripting: Getting help&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 3rd thing I wish I knew when I started scripting: The Answer Button is your friend&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Also, a big thanks to Christian Stopp (&lt;LI-USER uid="11788"&gt;&lt;/LI-USER&gt;)&amp;nbsp;for suggesting this entry in the series.&lt;/P&gt;
&lt;P&gt;This part of the series is very much a standalone entry. But, in the flow of things, this is probably the point where you’ve started to play with some code and may have seen an error message or two. So, before we start with any serious code wrangling, let’s cover what do to when things go sideways.&lt;/P&gt;
&lt;H3&gt;The most common mistakes in JSL&lt;/H3&gt;
&lt;P&gt;Justin Chilton (&lt;LI-USER uid="1855"&gt;&lt;/LI-USER&gt;) and Wendy Murphrey (&lt;LI-USER uid="5579"&gt;&lt;/LI-USER&gt;) are among the best scripters at &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;. At the 2020 Americas JMP Discovery Summit, they (virtually) presented a paper titled, “The Most Common JSL Mistakes and How to Avoid Them.” The PowerPoint file for that presentation can be found &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Americas-2020/Most-Common-JSL-Mistakes-and-How-to-Avoid-Them-2020-US-30MP-571/ta-p/281519" target="_self"&gt;here&lt;/A&gt; on the Community.&lt;/P&gt;
&lt;P&gt;For the new scripter, this is 14 pages of solid gold. In the context of what we’re doing in this series, some of it is a bit out of scope but will be invaluable for the next steps in your scripting journey. Just do me a solid, download the pdf, put it somewhere that you won’t forget about it, and give the paper a thumbs up on the Community page.&lt;/P&gt;
&lt;H3&gt;Mike’s most common JSL mistakes&lt;/H3&gt;
&lt;P&gt;As a bit of a riff on Justin and Wendy’s work, I want to add a couple of things to their list. These are pretty basic and will generally cause a script to crash before it’s even run (which is why they don’t show up in the Discovery Summit paper).&lt;/P&gt;
&lt;H4&gt;Glue&lt;/H4&gt;
&lt;P&gt;Missing Glue Operators are probably the most common JSL mistake out there. Like I mentioned before, the Glue Operator is the semicolon (“;”) that you see at the end of every instruction in JSL. If you’re saving scripts to a script window using the red triangle menu (see&amp;nbsp;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;the previous post&lt;/A&gt;&lt;SPAN style="font-family: inherit;"&gt;), JMP will add the glue where it needs to go. If you’re writing code manually, there’s a trick that you can use to make sure you haven’t forgotten one somewhere. &lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;Right-click in the Script Editor and select &lt;/SPAN&gt;&lt;STRONG style="font-family: inherit;"&gt;Reformat Script&lt;/STRONG&gt;&lt;SPAN style="font-family: inherit;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image029.png" style="width: 701px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25602i2DE994FDC6639AD0/image-dimensions/701x838?v=v2" width="701" height="838" role="button" title="image029.png" alt="image029.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;This trick will actually catch a lot of basic syntax related errors in the script. There is also a keyboard shortcut when you are in the Script Editor (it doesn’t work in “script editor boxes” though). I prefer the keyboard shortcut myself. For Windows, it’s &lt;STRONG&gt;CTRL+M&lt;/STRONG&gt;. For MacOS, it’s &lt;STRONG&gt;CMD+M&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Now, before I show you how to unpack what Reformat Script tells you when there is an error, let me show the other error that drives me nuts. Since they both use a similar debugging workflow, this will make sense in a second, I promise.&lt;/P&gt;
&lt;H4&gt;Parentheses&lt;/H4&gt;
&lt;P&gt;Getting your parentheses (brackets, braces, etc.) out of place (or missing) is probably the most insidious bug to track down. And I do mean it is a &lt;EM&gt;special&lt;/EM&gt; kind of frustrating. There is one tool that you have available in JMP to help you with tracking down mismatched pairs of parentheses. When you put your cursor on the outside of a parenthesis, the Script Editor will highlight it (and what it thinks its match is) in blue.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image031.png" style="width: 703px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25603i96D8ECE592BDEF69/image-dimensions/703x119?v=v2" width="703" height="119" role="button" title="image031.png" alt="image031.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If the Script Editor is confused, or can’t find a match, it will highlight the parenthesis in red.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image033.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25604iF8E6BF1157F2A36C/image-dimensions/700x117?v=v2" width="700" height="117" role="button" title="image033.png" alt="image033.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;So, if the blue match for a parenthesis is not where you expect it to be, or if the parenthesis is highlighted in red, you probably have a problem.&lt;/P&gt;
&lt;P&gt;When you get errors for missing parentheses, you might be tempted to just keep adding them to the end until the error goes away. Let me just say that’s a bad idea and move on to some better strategies for this issue and for the issue of missing glue. And they both revolve around setting up JMP’s Script Editor.&lt;/P&gt;
&lt;H3&gt;Setting up (and using) the Script Editor for success&lt;/H3&gt;
&lt;P&gt;The JMP Script Editor (we saw it in &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582" target="_blank" rel="noopener"&gt;the previous post&lt;/A&gt;) has a number of features that make working with code and debugging easier. I have these on by default in my preferences, and I’d suggest you do the same. To access the JMP Preferences Dialog, select &lt;STRONG&gt;Preferences&lt;/STRONG&gt; from either the JMP menu (MacOS) or File menu (PC).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image035.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25605i19C6A01B9A4B1F19/image-dimensions/700x681?v=v2" width="700" height="681" role="button" title="image035.png" alt="image035.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;I’ve highlighted the options that I find really useful in the screenshot. The code folding comes in handy for larger scripts. The line numbers and autocomplete options are more important to our current discussion.&lt;/P&gt;
&lt;H3&gt;How to use the log&lt;/H3&gt;
&lt;P&gt;Now that we have our Script Editor set up, let’s learn how to use the log. First, to open the log, go to &lt;STRONG&gt;View &amp;gt; Log&lt;/STRONG&gt; (&lt;STRONG&gt;Window &amp;gt; Log&lt;/STRONG&gt; on a Mac). This will open a window that looks similar to a Script Editor. It is different from the Script Editor in that it shows the &lt;EM&gt;output&lt;/EM&gt; and results of the commands run in the Script Editor. If you would prefer to keep your input and output in the same window, you can turn on the Embedded Log in the Script Editor by right-clicking in the Script Editor and selecting &lt;STRONG&gt;Show Embedded Log&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image037.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25606iCCFDFDBA5ED8919E/image-dimensions/700x635?v=v2" width="700" height="635" role="button" title="image037.png" alt="image037.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Let’s have a look at how it works using this script:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image039.png" style="width: 821px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25607iAAABA32D6F039D8F/image-dimensions/821x746?v=v2" width="821" height="746" role="button" title="image039.png" alt="image039.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The script is pretty simple. Aside from line 2 and the comments, it was created using &lt;STRONG&gt;Save Script…To Script Window&lt;/STRONG&gt;. If I run &lt;STRONG&gt;Reformat Script&lt;/STRONG&gt; (also found by right-clicking in the Script Window), I get the following error message:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image041.png" style="width: 552px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25608i9CDAAF280D64FE2F/image-dimensions/552x273?v=v2" width="552" height="273" role="button" title="image041.png" alt="image041.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In the log, you get something similar:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image043.png" style="width: 796px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25609iCE28F388DACF6D18/image-dimensions/796x1014?v=v2" width="796" height="1014" role="button" title="image043.png" alt="image043.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In the gray area, you can see what was input. Below it, you see a message about something unexpected and a suggestion about what could be the problem. In this case, JMP thinks there is missing glue (;). It also tells you where the unexpected input came in the script with a line number. Since JSL is run sequentially (from top to bottom), this means that the error is somewhere above line 5. Because we’ve got the line numbers turned on, we can see that line 2 is missing the Glue Operator, which means JMP isn’t expecting a new command to start at line 5 and is caught by surprise. After adding the semicolon at the end of line 2, running &lt;STRONG&gt;Reformat Script&amp;nbsp;&lt;/STRONG&gt;shouldn’t return any errors.&lt;/P&gt;
&lt;P&gt;Similarly, if we’re missing part of a bracket pair (e.g., parentheses), like this (notice line 7):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image045.png" style="width: 803px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25610iE2E3B5973EFC2542/image-dimensions/803x730?v=v2" width="803" height="730" role="button" title="image045.png" alt="image045.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;we would get this error message:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image047.png" style="width: 663px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25611i73415DD14D7C2BF1/image-dimensions/663x354?v=v2" width="663" height="354" role="button" title="image047.png" alt="image047.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;with a log message:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image049.png" style="width: 801px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25612i0ADF6B58D6116FFC/image-dimensions/801x424?v=v2" width="801" height="424" role="button" title="image049.png" alt="image049.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These messages from JMP are a little less clear-cut, but here’s how to interpret them. First, from the error message, we know that the problem is in the Distribution. Between the log and the error message, it’s most likely that there is a missing parenthesis somewhere. The log says that the something unexpected happened at line 11 (the “Column …” can sometimes be helpful, but you have to count characters to use it). The color highlighting the parentheses shows that the first one is missing its pair (note the red color on the parenthesis next to Distribution in line 5 after placing the cursor to its left).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image051.png" style="width: 802px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25613i132040B93CAA9EE6/image-dimensions/802x729?v=v2" width="802" height="729" role="button" title="image051.png" alt="image051.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Work forward using the highlighting to figure out where the missing one should go (line 7 in this case). For the most part, the log is a really useful window into what JMP thinks is going on. However, if you want to check your JSL for errors or work through the code stepwise, there’s another tool for that.&lt;/P&gt;
&lt;H3&gt;How to use the JSL Debugger&lt;/H3&gt;
&lt;P&gt;The JSL Debugger is a bit of an odd beast. If you’ve accidentally hit the debugger button:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image053.png" style="width: 82px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25614iF1FC6DF92E484BCB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image053.png" alt="image053.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;you probably already know that it locks up the main interface in JMP while running. When I started scripting, I really didn’t use it a lot. Now that I’ve had a few chats with the development team about it, I can say that I’m coming around to it. Let’s talk a bit about it and what it can do.&lt;/P&gt;
&lt;P&gt;First, that bit about it locking up JMP. It’s a little confusing, but what it’s actually doing is creating a second instance of JMP to run the debugging. The main instance of JMP isn’t going to be responsive as long as the JSL Debugger is active. If you close the JSL Debugger, you’ll get control back.&lt;/P&gt;
&lt;P&gt;When you launch the JSL Debugger, in addition to another instance of JMP, you get the JSL Debugger window. This window contains your code, lists of the different variables, a log, and other information. It looks something like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image055.png" style="width: 829px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25615i404ACEDDBD3716DB/image-dimensions/829x650?v=v2" width="829" height="650" role="button" title="image055.png" alt="image055.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When you’re debugging, this window is your eyes and ears into what your script is doing in JMP. If you’ve got a second screen, move it over there, so you can always see it (sometimes it can get buried behind other windows).&lt;/P&gt;
&lt;P&gt;Now, I could go crazy with describing everything that you could do with the JSL Debugger, but the documentation has a great chapter (with examples!) that you can find &lt;A href="https://www.jmp.com/support/help/en/15.1/index.shtml#page/jmp/debug-or-profile-scripts.shtml#" target="_self"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;There is also a good &lt;A href="https://community.jmp.com/t5/JMP-Blog/5-reasons-I-love-the-new-JSL-Debugger/ba-p/30102" target="_self"&gt;blog post by Melanie Drake&lt;/A&gt;&amp;nbsp;(&lt;LI-USER uid="4451"&gt;&lt;/LI-USER&gt;) that covers some of the cool things that you can do with the JSL Debugger. So, if you want to go into the weeds a bit, have a look at those. For our purposes, I want you to pay attention to these buttons:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image057.png" style="width: 528px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25616iB84A24130C857605/image-dimensions/528x124?v=v2" width="528" height="124" role="button" title="image057.png" alt="image057.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The first two run the script. The first one runs the script to its end or to where it encounters a breakpoint (a point that you want to stop evaluation if you don’t want to run the entire script). You can set a breakpoint in your code by right-clicking next to the line number in the JSL Debugger. A red dot will appear next to that line (the breakpoint needs to be on a line of code, not a comment!). &lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image059.png" style="width: 801px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25617i847796B86ADB3F1D/image-dimensions/801x354?v=v2" width="801" height="354" role="button" title="image059.png" alt="image059.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you were to run this script using the first &lt;STRONG&gt;Run&lt;/STRONG&gt; button, it would run until line 10 and then stop. A second press of the &lt;STRONG&gt;Run&lt;/STRONG&gt; button would then finish the script. The second &lt;STRONG&gt;Run&lt;/STRONG&gt; button runs the entire script without paying attention to breakpoints. The red &lt;STRONG&gt;Stop Button&lt;/STRONG&gt; exits the debugger, which is useful if you opened it by accident or have finished your debugging session. The &lt;STRONG&gt;Repeat&lt;/STRONG&gt; button resets everything to run the script again (e.g., if you want to change where a breakpoint is and then rerun the code).&lt;/P&gt;
&lt;H3&gt;Homework&lt;/H3&gt;
&lt;P&gt;The homework this week is pretty light. I want you to get the Script Editor set up, find the log, and start playing with the JSL Debugger using some of the example scripts from the documentation. Have a look at which variables pop up in the tabs on the lower left of the debugger window. Also, find the &lt;STRONG&gt;Log&lt;/STRONG&gt; tab in the lower right (so you know where it is).&lt;/P&gt;
&lt;P&gt;Next week, we’re going to get into the last bit of the “coding” we’re going to cover in &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;this series&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 15:51:11 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-4th-thing-I-wish-I-knew-when-I-started-scripting-What-to-do/ba-p/276583</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-09-30T15:51:11Z</dc:date>
    </item>
    <item>
      <title>The 3rd thing I wish I knew when I started scripting: The Answer Button is your friend</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JSL 5 Things post 3henry-be-TCsCykbwSJw-unsplash.jpg" style="width: 249px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25992iAEBF788EA9A5AAB3/image-dimensions/249x233?v=v2" width="249" height="233" role="button" title="JSL 5 Things post 3henry-be-TCsCykbwSJw-unsplash.jpg" alt="Make the Answer Button (the red triangle) your friend." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Make the Answer Button (the red triangle) your friend.&lt;/span&gt;&lt;/span&gt;Welcome back to my series on the basics of scripting in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;. This is the third entry in &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;a series&lt;/A&gt; that is structured for you to work along. If you’re just joining us, you’ll probably want to have a look at the earlier entries in the series. Here are some links to those:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;The 1st thing I wish I knew when I started scripting: There are different kinds of scripts&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581" target="_blank" rel="noopener"&gt;The 2nd thing I wish I knew when I started scripting: Getting help&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Have a look; it will help you with what’s coming up.&lt;/P&gt;
&lt;P&gt;All right, buckle up. Thus far we haven’t actually worked with any code (unless you count the JSL Scripting Index). That ends today. Today we are going to use the JSL script window. I know that can be anxiety-inducing to some of you. Let’s take some deep breaths and get to it.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Don't script for the sake of scripting!&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Let’s be honest about something: Coding is not an efficient process in the short term. For one-off analytics and graphics, drag-and-drop tools are going to almost always beat out coding in terms of ROI (the cost of someone going through a development exercise is just too great). There are those who insist on scripting regardless of whether a GUI solution is faster. I don’t know why, and I am not in their number. I will consider coding when a workflow is difficult or circuitous enough that using a GUI introduces a significant chance for errors down the road. I will also consider coding when I’m going to do something over and over again and I can justify the time through the efficiency I gain by automation. That’s not to say I don’t code just to see if I can do something. Or that I don’t choose a more convoluted way of coding just to learn something new. But those cases are the exception rather than the rule.&lt;/P&gt;
&lt;P&gt;Now, I’ve probably tweaked a few people’s noses with that generalization. The problem with this kind of blanket statement is that it’s pretty black and white. The truth, just like everything in life, is that there’s a gray area where the value proposition is a toss-up between a point-and-click solution and coding. The gray area also happens to be where most aspiring coders find themselves. They know they can probably gain some efficiency through scripting, but they just don’t know where to start or they are worried that the time lost to the initial learning effort will be too great. What’s nice about the design of JMP is that it gives us tools that we can use to start introducing JSL into a workflow without losing too much efficiency when manipulating JSL. And, like all things in JMP, it starts with &lt;A href="https://community.jmp.com/t5/JMP-Blog/The-2nd-thing-I-wish-someone-had-told-me-when-I-started-using/ba-p/213611" target="_blank" rel="noopener"&gt;The JMP Workflow&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;The JMP Workflow (scripting edition)&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;The JMP Workflow generally ends with a user going to a red triangle menu to answer a question. Another function of the red triangle menu is to provide methods for users to save their work (save scripts).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_0-1595345055084.png" style="width: 616px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25588iE29F05E9EFF311CE/image-dimensions/616x452?v=v2" width="616" height="452" role="button" title="MikeD_Anderson_0-1595345055084.png" alt="MikeD_Anderson_0-1595345055084.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are three main ways to save scripts:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;To Data Table&lt;/STRONG&gt;: This method saves the scripts to the data table as "Table Scripts."&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;These scripts save the method used to generate a given report in JMP and are portable (i.e., can be copied and pasted between data tables with the same column names).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;To Script Window&lt;/STRONG&gt;: This method saves the information needed to reproduce a given report to a script window. It is useful for multiple-step operations or producing multiple reports. The contents of a script window can be turned into a table script as well.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;To Clipboard&lt;/STRONG&gt;: This method is useful for moving the code needed for a report into other JMP Platform (e.g., Query Builder, Application Builder, etc.) or for generating prototype code for larger projects.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;It turns out that really efficient coders will leverage these red triangle options extensively during their coding sessions. They use them to speed up their coding (why pound keys when you don’t need to?) or generate platform prototype code that would otherwise be easy to mess up and difficult to debug. For the beginning coders, these options provide different opportunities to learn about and utilize JSL while easing into the details of working with it. This is where we want to start our coding adventure.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Save Script &amp;gt; To Data Table&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;If you happen to be a JMP user in the NY or NJ area: Hi! I’ve probably visited your company at some point. (If not, drop me a PM; we need to fix that.) And, when I’ve come on site, you’ve probably heard me harp on this point:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;You MUST save your work, and by “save your work,” I mean use the &lt;STRONG&gt;Save Script…To Data Table&lt;/STRONG&gt; option under the red triangle menu. Going back to my first experience with automating a workflow, this is how I started: by saving a bunch of standardized Graph Builder reports to a JMP table that I would regularly update. I cannot stress strongly enough the of power this one little tip. It’s like having Dr. Who’s Sonic Screwdriver. The possibilities are endless.&lt;/P&gt;
&lt;P&gt;Let’s look at a quick example:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open &lt;STRONG&gt;Help &amp;gt; Sample Data Library &amp;gt; Big Class Families.jmp&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Open a distribution dialog: &lt;STRONG&gt;Analyze &amp;gt; Distribution&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Put age, sex, height, and weight into&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Y, Columns and click &lt;STRONG&gt;OK&lt;/STRONG&gt;. &lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_1-1595345102604.png" style="width: 640px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25589i577DC697B743C869/image-dimensions/640x373?v=v2" width="640" height="373" role="button" title="MikeD_Anderson_1-1595345102604.png" alt="MikeD_Anderson_1-1595345102604.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Under the Distributions red triangle menu, select &lt;STRONG&gt;Save Script &amp;gt; To Data Table&lt;/STRONG&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_2-1595345140764.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25590iA385BE633D49B3B3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="MikeD_Anderson_2-1595345140764.png" alt="MikeD_Anderson_2-1595345140764.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Give it a name (or just use the default). If you use the default in this case, it will show up in the data table as &lt;EM&gt;Distribution 2&amp;nbsp;&lt;/EM&gt;because there’s already a &lt;EM&gt;Distribution&lt;/EM&gt; script in the data table.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_3-1595345156141.png" style="width: 501px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25591iDF8E44263348EFCD/image-dimensions/501x308?v=v2" width="501" height="308" role="button" title="MikeD_Anderson_3-1595345156141.png" alt="MikeD_Anderson_3-1595345156141.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Now look back at the data table in the upper left corner. You should see your table script in the list with a green check mark next to it.&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_5-1595345227147.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25593iACC1318BEF66C734/image-size/medium?v=v2&amp;amp;px=400" role="button" title="MikeD_Anderson_5-1595345227147.png" alt="MikeD_Anderson_5-1595345227147.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In the context of this series, those table scripts can be thought of as little applets (mini applications) or macros. They are directly portable between data tables (just copy and paste), &lt;EM&gt;provided the column names used in the script are the same&lt;/EM&gt;. They can also be edited (right-click on one and select &lt;STRONG&gt;Edit&lt;/STRONG&gt;). So, they are also portable to data tables that don’t have the same column names if you are willing to edit the column names in the script, which is not a big deal. We’ll cover how to do that in the next post. Table scripts can also be used to string smaller scripts to automate a larger workflow. We’ll also cover that in the next post.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Save Script &amp;gt; To Clipboard&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;We’re going to cover the last entry in the red triangle menu: &lt;STRONG&gt;to clipboard&lt;/STRONG&gt; item. We’re going to cover this one next because the entry is identical to the &lt;STRONG&gt;to Script Window&lt;/STRONG&gt; option, but a lot less instructive. That’s not to say it’s not useful, just that you can’t see what’s going on. So, for the sake of time, here’s what it does. It takes the code that is created by &lt;STRONG&gt;Save Script…To Data Table&lt;/STRONG&gt; and puts it in the clipboard so that you can put it in another script somewhere. It’s handy. And, as your scripting skills grow, you’ll figure out where it’s useful for you. For the moment, I want to back up into the more interesting and useful option: saving to a script window.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Save Script &amp;gt; To Script Window&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;The next entry in the &lt;STRONG&gt;Save Script to…&lt;/STRONG&gt; red triangle menu, we are going to cover what is probably the most instructive of the three I’m discussing. Saving a script to a script window does just what it says: It creates a Script Editor window (we’re going to go deeper on the Script Editor in the next episode) and populates it with JMP-generated JSL to recreate whatever was in the window you were working from. The important point with this entry is that you can study the code and learn from what JMP generated.&lt;/P&gt;
&lt;P&gt;Let’s look at a trivial example using Big Class again. Go ahead and click the green button next to your saved script to rerun the analysis. Then, in the report window, select &lt;STRONG&gt;Save Script &amp;gt; To Script Window&lt;/STRONG&gt; from the red triangle menu. Now, look at what JMP has written in the Script Window.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_6-1595345272102.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25594i8FAE9549F251AB8C/image-dimensions/700x584?v=v2" width="700" height="584" role="button" title="MikeD_Anderson_6-1595345272102.png" alt="MikeD_Anderson_6-1595345272102.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;JMP has created a Distribution Report: Distribution(…);. JMP has put two Nominal Distribution subgroups into the report: Nominal Distribution(Column(…)) and two Continuous Distribution subgroups: Continuous Distribution(Column(…)). At the end of the script, JMP has put an incredibly important piece of code: the “;”. It’s called the “Glue Operator” and we’ll cover it in more detail in the next episode. For now, you just need to know that it’s a way to signal to JMP when it’s running the code that another instruction is coming. The fact that JMP puts that on the end automatically makes the novice scripter’s life a lot less complicated.&lt;/P&gt;
&lt;P&gt;The last point that makes this entry so useful is what happens if you leave that script window open. Go ahead and close the Distribution Platform, but leave your Script Editor open. Now, using the open data table, create a Fit Y by X report (under Analyze) using Height as the X variable and Weight as the Y variable.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_7-1595345320297.png" style="width: 691px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25595i6A1015B4C644D2FB/image-dimensions/691x514?v=v2" width="691" height="514" role="button" title="MikeD_Anderson_7-1595345320297.png" alt="MikeD_Anderson_7-1595345320297.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Next, select &lt;STRONG&gt;Save Script to Script Window&lt;/STRONG&gt; again.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_8-1595345344637.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25596iFECFFBB0BB4331E2/image-dimensions/700x584?v=v2" width="700" height="584" role="button" title="MikeD_Anderson_8-1595345344637.png" alt="MikeD_Anderson_8-1595345344637.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Did you notice how the window was updated with another entry? That script will now recreate the two windows you were just working with, once you know how to run one. Speaking of which…&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Running scripts&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;So, you’ve got some code in a script window, now what? You probably want to be able to run the code that you’ve created. I mean, you could just leave it up to impress people that walk by your desk, but it’s probably better to run it. There are a few ways to run code in JMP: the main menu, keyboard shortcuts, the tool bars at the top of the scripting window, the Enter key, or just right-clicking. Let’s quickly go through each of these.&lt;/P&gt;
&lt;H4&gt;The main menu and keyboard shortcuts&lt;/H4&gt;
&lt;P&gt;The &lt;STRONG&gt;Run Script&lt;/STRONG&gt; command is in the same place in Windows and MacOS. If you’re in a scripting window, go under &lt;STRONG&gt;Edit &amp;gt; Run Script&lt;/STRONG&gt;. The hotkey for this is &lt;STRONG&gt;CTRL+R &lt;/STRONG&gt;for windows and &lt;STRONG&gt;CMD+R&lt;/STRONG&gt; for MacOS.&lt;/P&gt;
&lt;H4&gt;The tool bar button at the top of the scripting window&lt;/H4&gt;
&lt;P&gt;If you look at the top of the script window, you should find a &lt;STRONG&gt;Run Script&lt;/STRONG&gt; button (unless you’ve got the tool bars hidden). In Windows, it looks like a little green play button, similar to the ones for table scripts. In MacOS, it looks like a little JSL document with a JMP Man and the green play button.&lt;/P&gt;
&lt;H4&gt;Using the Enter key&lt;/H4&gt;
&lt;P&gt;Note here that I mean the button in the lower right part of the number pad on an extended keyboard. If you push that button, JMP will run the line of JSL where the cursor is located. I used this one a lot before I got comfortable with the JSL Debugger.&lt;/P&gt;
&lt;H4&gt;Right-clicking&lt;/H4&gt;
&lt;P&gt;Selecting some code and right-clicking will bring up a context menu that has a &lt;STRONG&gt;Run Script&lt;/STRONG&gt; option toward the bottom.&lt;/P&gt;
&lt;P&gt;I recommend that you try the different forms of running scripts and find the one that you like best. I’m partial to the hotkey, except when I’m in Application Builder, where I prefer using the tool bar options. Over time, you’ll probably gravitate to one or two that become your favorites. Also, as a side note: All of these options do slightly different things depending on whether you have a section of code selected, your cursor is at the end of a line, or your cursor is on a blank line. So you might want to experiment a bit with that, too.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Wrapping up for this week&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;All right, believe it or not, you’ve now got enough information to be insanely dangerous with JSL...in a good way, of course. Let me show you what I mean.&lt;/P&gt;
&lt;P&gt;Let’s use that script we created today. I’m going to make one little tweak by wrapping a New Window(); function around the distribution and bivariate functions JMP created. You can learn more about New Window(…); in the Scripting Index. Note that the first part of New Window(…); starts on line 1 and the last part is on line 10! I’ve got my Script Editor set up to draw a nice little line connecting them so I can see where they are (more on that later).&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_9-1595345391310.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25597iC92DAC1EB42C7DB2/image-dimensions/700x584?v=v2" width="700" height="584" role="button" title="MikeD_Anderson_9-1595345391310.png" alt="MikeD_Anderson_9-1595345391310.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Then, let’s copy the text for that script and go back to the data table. Select &lt;STRONG&gt;New Script&lt;/STRONG&gt; from the red triangle menu in the uppermost left corner of the data table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_10-1595345414437.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25598i322675B0C4497E58/image-size/medium?v=v2&amp;amp;px=400" role="button" title="MikeD_Anderson_10-1595345414437.png" alt="MikeD_Anderson_10-1595345414437.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Paste the script text into the dialog, give it a useful name and click &lt;STRONG&gt;OK&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_11-1595345441739.png" style="width: 700px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25599i4863E4BDFCBE42F2/image-dimensions/700x428?v=v2" width="700" height="428" role="button" title="MikeD_Anderson_11-1595345441739.png" alt="MikeD_Anderson_11-1595345441739.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you’re following along, you should see your report in the script area of the data table. If you run it, you should get something like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_12-1595345454214.png" style="width: 775px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25600i025755D284D55843/image-dimensions/775x873?v=v2" width="775" height="873" role="button" title="MikeD_Anderson_12-1595345454214.png" alt="MikeD_Anderson_12-1595345454214.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;And that’s the little trick I used to turn a two-day analytical marathon into a 15-minute exercise in cutting and pasting. I spent a little time getting the data into a JMP data table that I could easily update. I then exported all the graphs I needed for that report into a single JSL window using &lt;STRONG&gt;Save Script to Script Window&lt;/STRONG&gt;. I wrapped them in a new window (so that they were all in one place) and put that script in a Table Script in the data table. Was I working with JSL? Yes. Was I writing lots of code? No. &lt;EM&gt;Did I increase my efficiency?&lt;/EM&gt; Definitely. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Now that we are getting into the actual coding, I need to stress this last point. Coding is about increasing your &lt;EM&gt;efficiency&lt;/EM&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;How efficiently you can solve problems.&lt;/LI&gt;
&lt;LI&gt;How efficiently you can create reports (so you can get back to solving problems).&lt;/LI&gt;
&lt;LI&gt;How efficiently you can work with your data.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The code that we are going to create in this series is computer-generated or it’s simple. And that’s OK. It’s about &lt;EM&gt;efficient&lt;/EM&gt; code not &lt;EM&gt;sexy&lt;/EM&gt; code. When I was in college, one of my professors (a fellow musician) had a quote on the wall outside his office: Music that is simple is no better or worse than music that is complex. The same goes with code. I was reminded of this a while back by the person that taught me coding. So, remember: &lt;EM&gt;Code that is simple is no better or worse than code that is complex.&lt;/EM&gt; All that matters is that it meets its intended purpose and increases the efficiency or productivity of those who use it.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Homework&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;For this week’s exercise, you’re going to look back at your problem statement. Think through the punch list you created and generate code using the workflows we’ve covered today. The code can be the actual code that you are going to use or prototype code that you think you’ll need to modify a little to answer your problem statement. Try to generate as many of the bits and pieces you think you’ll need using the red triangle menu and save them out as .jsl files. If you get stuck or can’t find a way to get JMP to generate the code you need, reach out for help, either in the Community or in the comments here. Don’t forget to search the Help, and don’t forget that you can search the Community, too!&lt;/P&gt;
&lt;P&gt;Until next time, good luck and happy coding!&lt;/P&gt;</description>
      <pubDate>Tue, 04 Aug 2020 14:50:40 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-3rd-thing-I-wish-I-knew-when-I-started-scripting-The-Answer/ba-p/276582</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-08-04T14:50:40Z</dc:date>
    </item>
    <item>
      <title>The 2nd thing I wish I knew when I started scripting: Getting help</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="5thingjslpost2kieran-sheehan-TorHqzyJobc-unsplash.jpg" style="width: 212px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25991iBD64DE0B8021A946/image-dimensions/212x201?v=v2" width="212" height="201" role="button" title="5thingjslpost2kieran-sheehan-TorHqzyJobc-unsplash.jpg" alt="These are my favorite helps for JSL." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;These are my favorite helps for JSL.&lt;/span&gt;&lt;/span&gt;Welcome back!&lt;/P&gt;
&lt;P&gt;Apparently, the esoteric content from &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;my first entry in this series&lt;/A&gt; didn’t frighten you off. Great! If you’re just tuning in to the series, I’m discussing the five things I wished someone had told me when I started learning to script in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;. (In all fairness, I was told a lot of this stuff in the JSL course I took from SAS Education and interactions with the instructors after the fact.)&lt;/P&gt;
&lt;P&gt;The series is set up for you to follow along with some homework at the end of each episode. So, go back and have a look at &lt;A href="https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580" target="_blank" rel="noopener"&gt;the previous entry&lt;/A&gt; in the series so you’re not wondering what’s going on or check out &lt;A href="https://community.jmp.com/t5/tag/5%20Things%20for%20JSL/tg-p/board-id/jmper-cable" target="_blank" rel="noopener"&gt;the whole series&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Getting Help&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;In my day job, I talk to people about JMP. All day long. I talk to people that have never seen the software before and people who have been using it since before I knew how to use a mouse. It’s a lot of fun, and I learn a lot from all the questions that I answer. One of the things I cover with everyone (because some people refuse to use Google and some just don’t know any better) is where to get help with the software. A lot of programming books I read actually fail to address this incredibly important topic or shove it in the last chapter, almost as an afterthought. My position on this topic, particularly in the context of JSL, is more pragmatic. There is no way we can cover everything in the context of this blog series (or even the next blog series I’m planning, for that matter). There’s just too much to cover. So, before we follow the white rabbit any further down the hole, here are my favorite helps for JSL.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;The Scripting Index&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Open up JMP and go to &lt;STRONG&gt;Help &amp;gt; Scripting Index&lt;/STRONG&gt;. Congratulations! You just accomplished one of the most important tasks for learning JSL. This one tool has got me out of more jams than I care to mention. Every scripter I know has this open during a serious coding session. Every. Single. One. Just get used to having it open.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_0-1594741497536.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25328iC1B560B0594CFFDF/image-size/large?v=v2&amp;amp;px=999" role="button" title="MikeD_Anderson_0-1594741497536.png" alt="MikeD_Anderson_0-1594741497536.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;It is the collected knowledge (with examples!) of the JMP developers. It’s updated every release with any changes to JSL or new commands for new platforms in JMP. Why is this so important? Unless you’re scripting all day, every day, there no chance that you will know everything about JSL. This tool fills that gap.&lt;/P&gt;
&lt;P&gt;Here's a little example. Open up the Scripting Index, and type "powerpoint" in the filter field. The bottom entry in the second column says "Save Presentation." This gives you the form of the command export a report as a PowerPoint File and an example of how to use it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_1-1594741570105.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25329i4EA82B6C2A20569F/image-size/large?v=v2&amp;amp;px=999" role="button" title="MikeD_Anderson_1-1594741570105.png" alt="MikeD_Anderson_1-1594741570105.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;JMP Tutorials and Sample Data&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Now, in JMP go to &lt;STRONG&gt;Help &amp;gt; Sample Data&lt;/STRONG&gt;. Note the buttons along the top of the interface. One of them says, “Open the Sample Scripts Directory.”&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MikeD_Anderson_2-1594741728217.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25330iAEF80DAC55F4AF09/image-size/large?v=v2&amp;amp;px=999" role="button" title="MikeD_Anderson_2-1594741728217.png" alt="MikeD_Anderson_2-1594741728217.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Guess what’s in there? Examples of completed scripts! If you want to know how to get a script to add a formula column to a data table, there’s an example in there. If you want to know how to get JMP to connect to an external dll file, there are a few examples in there. There is nothing wrong with starting from these scripts or using them as templates when you are getting started! That is why they are there.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;JMP Documentation&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;JMP includes a massive amount of documentation, more than 6,500 pages in JMP 15. At ~1,500 pages, the JSL resources make up roughly 20% of that documentation. There are two books in the JSL resources: “The Scripting Guide” and “The JSL Syntax Reference.” This content is also fully searchable on the web, either here &lt;A href="https://www.jmp.com/support/help/en/15.1/index.shtml#page/jmp/introduction.shtml#%20" target="_self"&gt;The Online Scripting Guide&lt;/A&gt;&amp;nbsp;or &lt;A href="https://www.jmp.com/support/help/en/15.1/index.shtml#page/jmp/jsl-functions.shtml#" target="_self"&gt;The Online JSL Syntax Reference&lt;/A&gt;. These resources have a lot of useful information and examples about specific use cases. They are good counterpoints to the Scripting Index; the Index is a tactical tool, while the JSL documentation is more of a strategic tool or general reference. The two books provide a lot of material on the different things that JSL can do. In practice, you would look to the Scripting Guide for things like how to work with scripting graphs or how to use Application Builder. You would look to the Syntax reference if you wanted to know all the options for the Bivariate() function or how to use the F Sample Size() function. The Syntax Reference has a lot of overlap with the Scripting Index. &amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Reverse Engineering Scripts and Add-Ins&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Now, let’s take a break for some trivia:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Did you know that there are multiple copies of da Vinci’s Mona Lisa? &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;It’s true. Da Vinci ran an art studio with many apprentices who studied his work and attempted to replicate it. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="220px-Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg" style="width: 134px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25175i5BC7F877D925035F/image-size/small?v=v2&amp;amp;px=200" role="button" title="220px-Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg" alt="The Mona Lisa (1503–1516) by Leonardo da Vinci" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The Mona Lisa (1503–1516) by Leonardo da Vinci&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="300px-Isleworthml.JPG" style="width: 153px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25176i1F8A9F6C36B14067/image-size/small?v=v2&amp;amp;px=200" role="button" title="300px-Isleworthml.JPG" alt="Isleworth Mona Lisa (16th Century) by Workshop of Leonardo da Vinci" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Isleworth Mona Lisa (16th Century) by Workshop of Leonardo da Vinci&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="460px-Gioconda_(copia_del_Museo_del_Prado_restaurada).jpg" style="width: 154px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25177i576DB8337A84833C/image-size/small?v=v2&amp;amp;px=200" role="button" title="460px-Gioconda_(copia_del_Museo_del_Prado_restaurada).jpg" alt="Prado Mona Lisa (16th Century) by Workshop of Leonardo da Vinci" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Prado Mona Lisa (16th Century) by Workshop of Leonardo da Vinci&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Raffaello_Sanzio_-_Portrait_of_a_Woman_-_WGA18948.jpg" style="width: 143px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25178iA8FF8628DB8CB15E/image-size/small?v=v2&amp;amp;px=200" role="button" title="Raffaello_Sanzio_-_Portrait_of_a_Woman_-_WGA18948.jpg" alt="Portrait of a Woman (16th Century) by Raffaello Sanzio (a.k.a. Raphael)" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Portrait of a Woman (16th Century) by Raffaello Sanzio (a.k.a. Raphael)&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Here’s another one:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Did you know that Michelangelo made his money early in his career by copying other artists’ work? &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;He studied the work of prior masters to improve his skills. He also &lt;A href="https://news.artnet.com/art-world/michelangelo-art-forgery-742172" target="_blank" rel="noopener"&gt;took commissions&lt;/A&gt; to recreate ancient works for people (the Renaissance equivalent of ordering a high-quality touch-up print).&lt;/P&gt;
&lt;P&gt;OK, one more:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Do you know what the difference is between an art student and an art forger? &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;One copies art to learn the techniques while the other tries to pass their work off as being done by the original painter.&lt;/P&gt;
&lt;P&gt;Do you see a trend here? I am of the opinion that there is nothing wrong with borrowing from other people’s work &lt;EM&gt;with full transparency and proper attribution&lt;/EM&gt;. Why should you reinvent the wheel? Find someone else’s wheel and see if you can make it better or better fit your needs, as long you give them a mention somewhere. That’s how you learn this stuff!&lt;/P&gt;
&lt;P&gt;So, what does that have to do with JMP scripting? Well, there’s a wealth of information put out by people that have studied scripting for years (or &lt;EM&gt;actually wrote the code&lt;/EM&gt; for JSL). It’s all there for you to learn from. But how do you do that? The easy way is to look in the JMP Community in the JSL Scripts section of the &lt;A href="https://community.jmp.com/t5/File-Exchange/ct-p/FileExchange" target="_self"&gt;File Exchange&lt;/A&gt;&amp;nbsp;or the &lt;A href="https://community.jmp.com/t5/JSL-Cookbook/tkb-p/jsl-cookbook-tkb" target="_self"&gt;JSL Cookbook&lt;/A&gt;. Now, what if you want to have a peek at what people are doing in their add-ins? You can do that, too; it just takes an extra step.&lt;/P&gt;
&lt;P&gt;The thing most people don’t know about the JMP add-in transport file (the ones with the &lt;EM&gt;.jmpaddin&lt;/EM&gt; file extension) is that it’s just a zip file with a custom file extension. Unless the author has encrypted their code, there is nothing stopping you from taking a peek under the hood. Just change the “.jmpaddin” to “.zip” and let your operating system (OS) unpack it for you. After the OS has unpacked the zip file, you’ll find a number of files in the folder (the ones you want have the .jsl extension). Tear into them (and pray that the person you’re cribbing from does a good job of commenting their code; more on that later).&lt;/P&gt;
&lt;P&gt;You can also have a look at add-ins that you've installed already. You just have to go diving into the file system. The location can be a little hard to find (especially if your IT Admin's have made it hard to go into hidden directories). But, if you can get there, you can find the possible location of your add-in directory &lt;A href="https://www.jmp.com/support/help/en/15.1/index.shtml#page/jmp/installing-multiple-add-ins.shtml" target="_blank" rel="noopener"&gt;here&lt;/A&gt;&amp;nbsp;(there are two possible locations each for MacOS and Windows). In that directory, you'll find a bunch of folders (one per add-in) that are named like a backward URL. Inside each folder are the JSL files for a given add-in. Go ahead and have a look!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Authors note (15Jul2020):&lt;/STRONG&gt; &amp;nbsp;After publishing this article,&amp;nbsp;&lt;LI-USER uid="982"&gt;&lt;/LI-USER&gt;,&amp;nbsp;the author of the &lt;A href="https://community.jmp.com/t5/Uncharted/bg-p/chales-blog" target="_self"&gt;Uncharted Blog&lt;/A&gt;&amp;nbsp;and JSL wizard, reminded me in the comments section that you can get to installed add-ins directly from the JMP GUI. &amp;nbsp;Have a look at the comments below for details!&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Paid Resources (Courses and Books)&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Strictly speaking, it is possible to learn JSL with just the resources provided in the JMP installation and help on the JMP Community. If all you want to do is string together some bits to make your life a little easier, then that will probably be enough. The thing is, there is a learning curve with JSL. If you want to take your coding beyond what we’re covering in this series, one way or another, you’re going to have to fight up; there are no shortcuts here. You can get some help using the resources I’ve mentioned already, but you’ll still have to put in the time. That said, this is one of the places where I really recommend using some paid resources if you can. If nothing else, you’ll be more committed by putting some skin in the game.&lt;/P&gt;
&lt;P&gt;The first one is the Introduction to &lt;A href="https://support.sas.com/edu/schedules.html?crs=JSCR&amp;amp;ctry=US" target="_self"&gt;JMP Scripting Language course&lt;/A&gt; offered through SAS Education. I took this course when I started scripting seriously, and I highly recommend it. There is a distinct value in sitting in a classroom and being guided through increasingly more complex exercises. It also gives you someone you can ping if you get stuck on something. (I still talk with my instructor all the time. Hi, Di!) And the course notes are a really helpful resource. There are also two books out there that are really helpful: “&lt;A href="https://www.sas.com/store/books/categories/examples/jump-into-jmp-scripting-second-edition/prodBK_71421_en.html" target="_self"&gt;Jump into JMP Scripting&lt;/A&gt;”&amp;nbsp;and “&lt;A href="https://www.sas.com/store/books/categories/usage-and-reference/jsl-companion-applications-of-the-jmp-scripting-language-second-edition/prodBK_70331_en.html" target="_self"&gt;The JSL Companion&lt;/A&gt;.”&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Conclusions&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;That’s the end of this week’s lesson. And it’s the last of the preliminaries. Next week we’re getting into the code. Your homework for this week is to look through the resources I’ve outlined and get to know them. Specifically, start looking at the Scripting Index. Using your problem statement from the last lesson, search through the index for some possible tools or examples that you think might be useful.&lt;/P&gt;</description>
      <pubDate>Tue, 04 Aug 2020 14:49:29 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-2nd-thing-I-wish-I-knew-when-I-started-scripting-Getting/ba-p/276581</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-08-04T14:49:29Z</dc:date>
    </item>
    <item>
      <title>The 1st thing I wish I knew when I started scripting:  There are different kinds of scripts</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580</link>
      <description>&lt;P&gt;Once more unto the breach!&lt;/P&gt;
&lt;P&gt;I was talking with my dad a few weeks back. Not to date him, but he’s been using &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; since version 1.0. I remember seeing the 3.5” discs sitting next to our Mac II-se when I was first learning to use a mouse. The same machine was on display at the 2019 Discovery Summit conference in Tucson, Arizona. Here’s a picture of it:&lt;/P&gt;
&lt;DIV id="tinyMceEditorMikeD_Anderson_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="IMG_0508.jpeg" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/25101iB465D7FE11CBD748/image-size/medium?v=v2&amp;amp;px=400" role="button" title="IMG_0508.jpeg" alt="IMG_0508.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;Anyway, my dad and I were discussing &lt;A href="https://community.jmp.com/t5/tag/5%20Things/tg-p/board-id/jmp-blog" target="_blank" rel="noopener"&gt;my first Five Things blog series&lt;/A&gt;. He mentioned that he wished someone would write a series about how to get started with scripting in JMP. At the time, I was already in the process of writing some other articles, so I tucked it away for a future project. Life, however, had other plans. A week later, I was asked to help with a customer presentation and, to my surprise, one of the topics they wanted me to cover was an introduction to scripting! The universe loves jokes, apparently.&lt;/P&gt;
&lt;P&gt;Anyway, here we go again! Following the format of my first Five Things series, here are the five(ish) things that I think everyone should know when they are starting to script. Up first, a conceptual thought.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;See a need, fill a need&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Before you start scripting, you need to consider the need. Odds are, if you want to script, there is some reason. Maybe you’re doing it to make yourself more efficient at work. Maybe you’re looking to standardize analytical methods for a group. Or maybe you are, in fact, one of those rare people that decided to pick it up for grins and giggles. None of these are bad reasons, although the last one may make things a little more difficult (I’ll explain why in a bit). The point is that you should have a reason in your head and a specific purpose for your first script.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;There are scripts, and then there are scripts&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;There are, in my mind anyway, two different types of scripts: those that act on existing data, and those that create data. Scripts that work on existing data interact with a data table and existing platforms in JMP to create a new user defined output. These can be things as simple as wrapping a window around multiple reports or as complex as a custom-built report in Application Builder. The key commonality is that scripts like this are &lt;EM&gt;modifying existing content&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;The second group are scripts that create data. Scripts that create data can be simulation tools, custom graphics, tools for managing metadata in a JMP file, etc. This group is a little more nebulous, but the common theme is that the scripts extend JMP in ways beyond enriching existing data or analyses. Most of the time, these scripts are going to &lt;EM&gt;create new content&lt;/EM&gt; from scratch.&lt;/P&gt;
&lt;P&gt;Scripts that modify existing content are generally where people start when they think about learning JMP scripting language (JSL). This is also where we are going to start our discussion. So, let’s take a step back and think about why you are interested in learning JSL.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Give me a sentence, Vasily. One sentence only, please.&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Take a moment and think about your &lt;EM&gt;need&lt;/EM&gt;. Which pain point are you hoping to address with JSL? Do you now see why scripting for grins and giggles (at least at first) can be tricky? You’re much more likely to fight up the learning curve if you’ve got a reason to reach the top. I’m not saying you can’t pick up JSL for the heck of it, just that the fight is harder without the extra motivation.&lt;/P&gt;
&lt;P&gt;The next step, and the final one that we’re going to cover in this episode, is what you do with that need. The simple answer is that you are going to do two things. First, you are going to write down that (possibly nebulous) idea that’s driving you to learn JSL into a single sentence – a problem statement. And, I do mean just one sentence. Make sure you are able to crystallize the idea into something tangible that you can build off of. It will also help with reining in scope creep. Here are some examples:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;I want to automate all the graph generation for my weekly report into one script.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;I want to automate the formatting work for a customer provided data table.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;I&gt;I want to generate a set of control charts&amp;nbsp;from a data file provided by my factory&amp;nbsp;computer system.&amp;nbsp;&lt;/I&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Note that I’m not talking about specifics; I am simply stating the pain point that has me looking at JSL. And then I stopped writing.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Make your punch list&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Got your problem statement? Good! Now we are going to write a series of specific deliverables for your script. It will be our punch list to help us locate the resources SAS provides for learning JSL. Do not list any graphical user interface (GUI) or user interface (UI) specifically. List the actions that the script needs to perform. Here are examples for the problem statements above:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Problem Statement 1:&amp;nbsp;&lt;/STRONG&gt;&lt;EM&gt;I want to automate all the graph generation for my weekly report into one script.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Punch List:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;EM&gt;Pull a data set from our production database containing the last three weeks of data.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Make a graph of time vs temperature for my product. &lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Run an analysis of time vs temperature using a polynomial model.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Export the graphs and reports to a PowerPoint file. &lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Problem Statement 2: &lt;/STRONG&gt;&lt;EM style="font-family: inherit;"&gt;I want to automate the formatting work for a customer provided data table.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Punch List:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;EM&gt;Rename columns based on internal standards (using table from specs).&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Assign units to the needed columns (using table from specs).&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Convert Lat and Long to Geographic coordinates.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;I&gt;Change&amp;nbsp;&lt;/I&gt;defective units&lt;I&gt; column from &lt;/I&gt;continuous&lt;I&gt; to &lt;/I&gt;ordinal&lt;I&gt;.&lt;/I&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Problem Statement 3:&lt;/STRONG&gt; &lt;I&gt;I want to generate a set of control charts&amp;nbsp;from a data file provided by my factory&amp;nbsp;computer system.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Punch List:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;EM&gt;Import data from network location.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Assign spec limits.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Build control charts.&lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Note here that I’m not boxing myself in too much. I’m just building a punch list of things I need the script to do. Since I’m assuming that you’ve never worked in JSL before, I’m also assuming that you don’t know how you’re going to attack these problems. By writing them down, you know what you need to look for in the help and resources. Which is where I will pick up in the next installment of this series.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Closing thought for this week&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Since this series is going to span a few weeks, I decided to make it more of a work-along series than something you just read. So, take these last points I made as homework. If you want some accountability or feedback, put them in the comments below. I’ll chime in if I can help or let you know if you might be setting yourself up for some trouble down the road.&lt;/P&gt;
&lt;P&gt;For bonus points, open up a script window in JMP (&lt;STRONG&gt;File &amp;gt; New &amp;gt; Script&lt;/STRONG&gt;) and put your problem statement and bullet points into the script window, one per line with a double forward slash (“//”) at the start of the line. You may see the text color change to green for those lines in the JSL Script Editor. We’ll cover what you just did in an upcoming episode.&lt;/P&gt;
&lt;P&gt;Oh, and if you’re wondering who Vasily is and why he should be giving you a singular sentence have a look &lt;A href="https://www.youtube.com/watch?v=jr0JaXfKj68" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jul 2020 02:10:22 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-07-09T02:10:22Z</dc:date>
    </item>
    <item>
      <title>How to make JMP Live reports more interactive</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-to-make-JMP-Live-reports-more-interactive/ba-p/273044</link>
      <description>&lt;P&gt;Although many types of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; graphics are currently interactive in the latest version of &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt;, sometimes specific options within a JMP platform prevent full interactivity when enabled. By using an incremental approach, it may be possible to slightly adjust the appearance of a graph in order to obtain better interactivity on JMP Live.&lt;/P&gt;
&lt;P&gt;JMP Live output is built using an HTML5 foundation. What does that mean? It means that while there are additional features beyond HTML5 found on JMP Live (for example, the inclusion of filtered rows in calculations used to regenerate graphs on the server), many of the interactivity tests can be performed without JMP Live by examining only the HTML5 output.&lt;/P&gt;
&lt;P&gt;Let’s examine two approaches for examining and remedying interactivity: interactively (no pun intended) and through the script editor. Both approaches will use the graphics generated by running the following example JSL script.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp", Invisible );

jmpreport = NewWindow("Test",
    VListBox(
        DataFilterContextBox(
            HListBox(
                dt &amp;lt;&amp;lt; DataFilter(Conditional, Count Excluded Rows(0), Local, Add Filter(columns(:age))),
                dt &amp;lt;&amp;lt; GraphBuilder(
					Show Control Panel( 0 ),
					Fit to Window( "Off" ),
					X Group Edge( "Bottom" ),
					Variables(
						Y( :weight ),
						Group X( :age )
					),
					Elements( Box Plot( Y, Legend( 1 ), Jitter( "None" ), Box Style( "Solid" ) ) )
				)
            )
        )
    )
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result looks like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Script_initial.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24636i80B3A611252104C8/image-size/large?v=v2&amp;amp;px=999" role="button" title="Script_initial.gif" alt="A data filter and box plot as they appear on the JMP client." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A data filter and box plot as they appear on the JMP client.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;The Interactive Approach&lt;/H3&gt;
&lt;P&gt;One way to examine interactivity is through the Publish menu option. On any JMP window’s menu bar, click File &amp;gt; Publish. On the Select Reports window, check the Test box for the test results window. Notice the message immediately below the window list: “Interactive HTML is partially implemented for this report. Please see log messages.” This is the first clue that some aspect of your results may not be fully interactive.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Publish_SelectReports.gif" style="width: 474px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24638i6564762FDC141D92/image-size/large?v=v2&amp;amp;px=999" role="button" title="Publish_SelectReports.gif" alt="The interactive Publish menu option." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;The interactive Publish menu option.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Inspect the log window (View &amp;gt; Log). Among other messages, you’ll see this one: “Interactive HTML: Box plot with solid style is not interactive.” Now you can focus on this specific graphical element.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Log_InteractiveHTML.gif" style="width: 553px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24639i8C0D3948BA78ED76/image-size/large?v=v2&amp;amp;px=999" role="button" title="Log_InteractiveHTML.gif" alt="Log containing interactivity messages." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Log containing interactivity messages.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you proceed to publish this report (either to File or to JMP Live) and hover your mouse pointer over a box in the box plot, you’ll see this tooltip: “This feature is not interactive.” (Although the boxes won’t have descriptive hover text for the corresponding data table rows, JMP Live still allows the graph to be redrawn based on filter selection changes in the Local Data Filter.)&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMPLive_FeatureNotInteractive_DFC.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24640i09DF8365DC4720BA/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMPLive_FeatureNotInteractive_DFC.gif" alt="A data filter and box plot in JMP Live. The box plot is marked non-interactive." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A data filter and box plot in JMP Live. The box plot is marked non-interactive.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In this instance, if you’re willing to choose a box plot style other than Solid, you can achieve better interactivity. Go back to your original Test window in the JMP client, right-click on a box in the box plot and choose Box Plot &amp;gt; Box Style &amp;gt; Normal.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="GB_BoxStyleNormalMenu.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24641i6A478314D916F3B4/image-size/large?v=v2&amp;amp;px=999" role="button" title="GB_BoxStyleNormalMenu.gif" alt="Changing the box plot options interactively in the JMP client." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Changing the box plot options interactively in the JMP client.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you repeat the Publish process, you’ll see descriptive text for data points when hovering over the box plot.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMPLive_FeatureInteractive_DFC.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24642i54C267DAF64F2494/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMPLive_FeatureInteractive_DFC.gif" alt="Interactive data filter and box plot in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Interactive data filter and box plot in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;The Script Editor&lt;/H3&gt;
&lt;P&gt;Another way to examine interactivity is through the script editor. Append the following code to the example script and run it to save the web report locally:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;webreport = New Web Report();
webreport &amp;lt;&amp;lt; Add Report(
	jmpreport,
	Title( "Test" )
);

url = webreport &amp;lt;&amp;lt; Save("$DOCUMENTS/Test");

If( !Is Empty( url ),
	Web( url )
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Alternatively, append and run the following code (substituting your actual URL, username, and API key appropriately) to publish to JMP Live:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;webreport = New Web Report();
webreport &amp;lt;&amp;lt; Add Report(
	jmpreport,
	Title( "Test" )
);

url = webreport &amp;lt;&amp;lt; Publish(URL("https://your_url.com/"), username("your_username"), ApiKey("your_api_key"));

If( !Is Empty( url ),
	Web( url )
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Inspect the log window. You will see the same messages that the interactive approach generated, including “Interactive HTML: Box plot with solid style is not interactive.”&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Log_InteractiveHTML.gif" style="width: 553px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24643i6254C12B76D612FC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Log_InteractiveHTML.gif" alt="Log containing interactivity messages." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Log containing interactivity messages.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When you inspect the report (either locally or on JMP Live) by hovering your mouse pointer over a box in the box plot, the tooltip “This feature is not interactive.” is revealed.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMPLive_FeatureNotInteractive_DFC.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24644i7E1A31A2A20E1ED6/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMPLive_FeatureNotInteractive_DFC.gif" alt="A data filter and box plot in JMP Live. The box plot is marked non-interactive." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A data filter and box plot in JMP Live. The box plot is marked non-interactive.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You can make the same fix as you did in the interactive method by simply updating the script directly in the script editor window. Specifically, change the GraphBuilder() &amp;gt; Elements() &amp;gt; Box Style() from Solid to Normal.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Elements( Box Plot( Y, Legend( 1 ), Jitter( "None" ), Box Style( "Normal" ) ) )&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you re-run the script (which contains the Save or Publish message) and re-examine the output, you’ll see the descriptive box plot data point text when you hover over it.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMPLive_FeatureInteractive_DFC.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24645i870E6A3F8A519AF5/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMPLive_FeatureInteractive_DFC.gif" alt="Interactive data filter and box plot in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Interactive data filter and box plot in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Bonus Tip: Moving Between Interactive and Scripting Approaches&lt;/H3&gt;
&lt;P&gt;You can easily move between interactive and scripting methods. On most JMP graphics’ red triangle menu on the client, there is a command to reveal the script used to generate the graphics. Click Save Script &amp;gt; To Script Window.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SaveScriptToScriptWindow.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24646i376F53EE452F89A2/image-size/large?v=v2&amp;amp;px=999" role="button" title="SaveScriptToScriptWindow.gif" alt="Saving a graphics script to a script window." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Saving a graphics script to a script window.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;By doing so, you can open a new script window or append to the current script window with the script used to generate the graphics.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ScriptWindowFromSaveToScriptWindow.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24647iF2293F2221CED340/image-size/large?v=v2&amp;amp;px=999" role="button" title="ScriptWindowFromSaveToScriptWindow.gif" alt="Graphics script saved to a script window." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Graphics script saved to a script window.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Similarly, when viewing the graphics on JMP Live, you can navigate to the Details section (click the button that looks like a lowercase ‘i’) and click the download buttons (the downward-pointing arrows) next to each data table or the JSL Script to save a local copy of them. (Note that these download buttons are available only if the Publish Data and Allow Data to be Downloaded publish options were specified.)&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMPLive_DownloadDtScript.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/24648i3B19F2D11DBFE71B/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMPLive_DownloadDtScript.gif" alt="Data table and JSL script available for download from JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Data table and JSL script available for download from JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;With both data table and script in hand, you can incrementally examine the effect of platform script option changes on the resulting interactivity, even if you were not the author of the script published to JMP Live.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jun 2020 14:19:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-to-make-JMP-Live-reports-more-interactive/ba-p/273044</guid>
      <dc:creator>john_cromer</dc:creator>
      <dc:date>2020-06-24T14:19:20Z</dc:date>
    </item>
    <item>
      <title>JMP Live admin tricks: Administrating groups</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Administrating-groups/ba-p/264833</link>
      <description>&lt;H3&gt;Administrating Groups&lt;/H3&gt;
&lt;P&gt;Administrating groups in &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; presents a different challenge, as groups have their own subsets of users and administrators. A system admin is a group admin, but a group admin does not necessarily have to be a system admin. As a system admin, you are not immediately added to every group contained within the server. However, you can still view and administrate a group you are not a part of.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Group with Posts.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23589iDEF366E7DD25852C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Group with Posts.png" alt="A view of the available options in the Posts tab, showing all published reports when a group is opened in JMP Live." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A view of the available options in the Posts tab, showing all published reports when a group is opened in JMP Live.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The following steps show how to view a group that you are not a part of, as well as how to access all the group’s settings:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Go the Groups section under the Admin tab to see all the created groups within the server.&lt;/LI&gt;
&lt;LI&gt;Select the desired group by clicking on Group Name.&lt;/LI&gt;
&lt;LI&gt;View the Manage Group tab. As an admin, you can:
&lt;OL&gt;
&lt;LI&gt;Edit Permissions to change a user’s ability to publish and remove posts, as well as change a user’s status as an admin.&lt;/LI&gt;
&lt;LI&gt;Add Members to add new members to the group.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Select the Posts tab. This shows all of the reports published to this group. As an admin, you can view and administrate the reports (see Administrating User Reports section).&lt;/LI&gt;
&lt;LI&gt;Select the Join button in the top right to join the group.&lt;/LI&gt;
&lt;LI&gt;Select the … button in the top right to perform the following actions:
&lt;OL&gt;
&lt;LI&gt;Add Members.&lt;/LI&gt;
&lt;LI&gt;Edit Groups to make changes to three possible settings:
&lt;OL&gt;
&lt;LI&gt;Change the Group Name.&lt;/LI&gt;
&lt;LI&gt;Change the Description of the Group.&lt;/LI&gt;
&lt;LI&gt;Change the Group Type, choosing among four different types of groups; each group is defined in a box to the right in the Edit Group window.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Delete Group.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Groups.png" style="width: 1002px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23588iC3AB81D7F9D55981/image-dimensions/1002x417?v=v2" width="1002" height="417" role="button" title="Groups.png" alt="A display of the Manage Group tab for a group, with various permissions available that can be edited for each user. The group admin is indicated by the Crown symbol." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A display of the Manage Group tab for a group, with various permissions available that can be edited for each user. The group admin is indicated by the Crown symbol.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;A group admin can access the same settings using the same steps as above, but replacing Steps 1 and 2 with the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Go to the Groups tab to see all the groups that you are a part of, including groups for which you are not an admin.&lt;/LI&gt;
&lt;LI&gt;To see if you are an admin of a group, click on Group Name. If you are not its admin then you will not be able to change any settings for that group.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;There are three ways to assign a group admin:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A system admin changes a user’s permissions within a group to make that user a group admin.&lt;/LI&gt;
&lt;LI&gt;A group admin changes a user’s permissions within a group to make that user a group admin.&lt;/LI&gt;
&lt;LI&gt;The group owner (user who created the group) can set his/her permissions to be a group admin.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;&lt;BR /&gt;Trick #4: Editing user permissions using JSL code&lt;/H3&gt;
&lt;P&gt;A system/group admin can also script administrative actions using JMP Live’s REST API in conjunction with JMP Live’s HTTP Request() function.&lt;/P&gt;
&lt;P&gt;The attached script (&lt;EM&gt;JMP Live Login.jsl)&lt;/EM&gt;&amp;nbsp;is used to log in the admin. This process requires four pieces of information:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;JMP Live URL - line 8&lt;/LI&gt;
&lt;LI&gt;API Key - line 9&lt;/LI&gt;
&lt;LI&gt;Username - line 10&lt;/LI&gt;
&lt;LI&gt;Password - line 11&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Once logged in, the code below&amp;nbsp;provides examples of administrative actions that can be scripted:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// --------------------------------------------------
// Get a list of all the groups and generate a table with all the groups
// --------------------------------------------------
request &amp;lt;&amp;lt; reset( Url( webJMPUrl || "/api/groups/?all_groups=true" ), Method( "GET" ), Insecure );

data = request &amp;lt;&amp;lt; Send;
dt2 = JSON To Data Table( data );

// --------------------------------------------------
// Add a member to a group with the following permissions:
// “allow_publish” – can this user publish to this group?
// “allow_delete” – can user delete content published by other members?
// “allow_admin” – can user add, delete and change permissions of group members?
// --------------------------------------------------
request &amp;lt;&amp;lt; reset(
	Url( webJMPUrl || "/api/groups/" || Char( Group ID number ) || "/members" ),
	Method( "POST" ),
	Form( Fields( ["uid" =&amp;gt; user’s id number, "allow_publish" =&amp;gt; 1, "allow_delete" =&amp;gt; 1, "allow_admin" =&amp;gt; 1] ) ),
	Insecure
);
data = request &amp;lt;&amp;lt; Send;

// --------------------------------------------------
// Change permissions
// --------------------------------------------------
request &amp;lt;&amp;lt; reset(
	Url( webJMPUrl || "/api/groups/" || Char( Group ID Number ) || "/members/" || Char( User ID Number ) ),
	Method( "PATCH" ),
	Form( Fields( ["allow_publish" =&amp;gt; 1, "allow_delete" =&amp;gt; 0, "allow_admin" =&amp;gt; 0] ) ),
	Insecure
);
data = request &amp;lt;&amp;lt; Send;

// --------------------------------------------------
// Delete a member from a group
// --------------------------------------------------
request &amp;lt;&amp;lt; reset(
	Url( webJMPUrl || "/api/groups/" || Char( Group ID Number ) || "/members/" || Char( User ID Number ) ),
	Method( "Delete" ), Insecure
);
data = request &amp;lt;&amp;lt; Send;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="xmsonormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;Editor's note:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;&amp;nbsp;Have you read the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/forums/searchpage/tab/message?advanced=false&amp;amp;allow_punctuation=false&amp;amp;filter=location&amp;amp;location=blog-board:jmper-cable&amp;amp;q=%22JMP%20Live%20admin%20tricks%22" target="_self"&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #0168b2; background: white;"&gt;other&amp;nbsp;installments in our JMP Live admin tricks series&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;? &lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 May 2020 16:40:37 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Administrating-groups/ba-p/264833</guid>
      <dc:creator>andyzhou</dc:creator>
      <dc:date>2020-05-06T16:40:37Z</dc:date>
    </item>
    <item>
      <title>JMP Live admin tricks: Administrating users and reports</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Administrating-users-and-reports/ba-p/261953</link>
      <description>&lt;H3&gt;Administrating Users&lt;/H3&gt;
&lt;P&gt;Users and their respective permissions can be managed in the Users section under the Admin tab. Once you open the Users section, all of the users present within the server are listed by their username/email. There are five different edit options available to a &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; admin:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Changing their display name.&lt;/LI&gt;
&lt;LI&gt;Checking and unchecking “User is enabled”:
&lt;UL&gt;
&lt;LI&gt;This checkbox determines whether the user has access to the reports in JMP Live&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Checking and unchecking “User can publish content.”&lt;/LI&gt;
&lt;LI&gt;Checking and unchecking “User has administrative privileges.”&lt;/LI&gt;
&lt;LI&gt;Checking and unchecking "User can use the API."&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Users.png" style="width: 831px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23427i68A57904C1FB9682/image-dimensions/831x292?v=v2" width="831" height="292" role="button" title="Users.png" alt="Users section of the Admin tab, where admins have a handful of options available to them to determine user permissions." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Users section of the Admin tab, where admins have a handful of options available to them to determine user permissions.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Trick #3: Generate a table of JMP Live user data&lt;/H3&gt;
&lt;P&gt;A full table of data on users can be generated using a REST API through JSL’s HTTP Request() function.&lt;/P&gt;
&lt;P&gt;The attached script (&lt;EM&gt;JMP Live Login.jsl)&lt;/EM&gt;&amp;nbsp;is used to log in the admin. This process requires four pieces of information:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;JMP Live URL - line 8&lt;/LI&gt;
&lt;LI&gt;API Key - line 9&lt;/LI&gt;
&lt;LI&gt;Username - line 10&lt;/LI&gt;
&lt;LI&gt;Password - line 11&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Once logged in, the code below can then be used to generate a table containing data on the users.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// --------------------------------------------------
// List all users and generate a data table with users
// --------------------------------------------------
request &amp;lt;&amp;lt; reset( Url( webJMPUrl || "/api/v2/users" ), Method( "GET" ), Insecure );
data = request &amp;lt;&amp;lt; Send;
dt = JSON To Data Table( data );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Administrating User Reports&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Details.png" style="width: 338px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23425iF00BE15EE8AF27D0/image-dimensions/338x657?v=v2" width="338" height="657" role="button" title="Details.png" alt="Private report where the edit options are indicated by the &amp;quot;Pencil&amp;quot; symbol." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Private report where the edit options are indicated by the "Pencil" symbol.&lt;/span&gt;&lt;/span&gt;An important aspect of being a &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; admin is knowing how to manage your users’ reports. As an admin, you have access to all reports that are published publicly to the JMP Live server (e.g., any published report where the “shared to:” option selected is “everyone”). You also have access to all privately published reports (e.g., any published report where the “shared to:” option selected is “only me”) and all reports that are published to groups of which you are a member. You do not have immediate access to reports published within groups to which you are not a member, but these reports can be accessed by going to the Groups section under the Admin tab.&lt;/P&gt;
&lt;P&gt;Each report can be managed by selecting the “three dots” button, which allows you four options:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Edit, so that you can edit the report.&lt;/LI&gt;
&lt;LI&gt;Delete, so that you can delete the report.&lt;/LI&gt;
&lt;LI&gt;Flag as Inappropriate, so that you can flag the report for future review in the Flagged Content section found in the Admin tab.&lt;/LI&gt;
&lt;LI&gt;Stop Sharing with Groups, so that you can select the report to no longer be shared to a specific group.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Selecting “Edit” allows you to edit the user report with the following options:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Change the name of the report.&lt;/LI&gt;
&lt;LI&gt;Change the thumbnail of the report.&lt;/LI&gt;
&lt;LI&gt;Change the description of the report.&lt;/LI&gt;
&lt;LI&gt;Allow downloading of the data behind the report.&lt;/LI&gt;
&lt;LI&gt;Change how the report is shared:
&lt;UL&gt;
&lt;LI&gt;“Only Me” makes the report private to the user who published it.&lt;/LI&gt;
&lt;LI&gt;“Everyone” makes the report public to the JMP Live server.&lt;/LI&gt;
&lt;LI&gt;“Groups” allows you to select the groups where the report will be included. A report can be included in multiple groups, with a maximum of 8 groups allowed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="xmsonormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;Editor's note:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;&amp;nbsp;Have you read the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/forums/searchpage/tab/message?advanced=false&amp;amp;allow_punctuation=false&amp;amp;filter=location&amp;amp;location=blog-board:jmper-cable&amp;amp;q=%22JMP%20Live%20admin%20tricks%22" target="_self"&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #0168b2; background: white;"&gt;other&amp;nbsp;installments in our JMP Live admin tricks series&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;? &lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 May 2020 16:39:47 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Administrating-users-and-reports/ba-p/261953</guid>
      <dc:creator>andyzhou</dc:creator>
      <dc:date>2020-05-06T16:39:47Z</dc:date>
    </item>
    <item>
      <title>Analyzing survey responses from virtual hands-on workshop</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Analyzing-survey-responses-from-virtual-hands-on-workshop/ba-p/259110</link>
      <description>&lt;P&gt;We hosted the first &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; Virtual Hands-on Workshop in Europe recently. After the workshop, we surveyed the participants to find what they thought of it and how we could improve their experience. We thought we’d share what we learned with everyone, to show you how we do our analysis in JMP.&lt;/P&gt;
&lt;P&gt;One response was nearly universal: Post a recording of the workshop so people can watch it whenever they have the time. Consider your wish granted. The link to the recording can be found &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Help-us-help-you/ba-p/255510" target="_self"&gt;here&lt;/A&gt;, along with all data sets needed to follow along.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Survey pic 2 (003).PNG" style="width: 484px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23266iF568090B9296087C/image-dimensions/484x549?v=v2" width="484" height="549" role="button" title="Survey pic 2 (003).PNG" alt="Virtual hands-on workshop participants answer survey questions to help us better understand their needs and preferences." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Virtual hands-on workshop participants answer survey questions to help us better understand their needs and preferences.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Length and Time of Day&lt;/H3&gt;
&lt;P&gt;We wanted to know two things about time: what time we should hold future workshops and how long they should be. As can be seen from the figures below, there is a significant interest in having shorter workshops, while the time of day doesn’t seem to make a difference. With that in mind, we plan to offer two sessions for each upcoming workshop, one in the morning and one in the afternoon.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Fig 1.png" style="width: 655px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23211i911F91307B020CBC/image-size/large?v=v2&amp;amp;px=999" role="button" title="Fig 1.png" alt="Most people prefer shorter workshops (a, left), but no significant preference for time of day (b, right)." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Most people prefer shorter workshops (a, left), but no significant preference for time of day (b, right).&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Topic Preferences&lt;/H3&gt;
&lt;P&gt;Next we asked for the topics that users would like to see covered in future workshops. Rather than give respondents a finite set of topics, we allowed them to answer with their own words, which we put into a word cloud using Text Explorer, which you can see below. Three of the top four words are “data,” “analysis” and “studies.” While these are inherently good words, they are rather nebulous. The fourth word – DOE – gave us more to work with. About 40 percent of respondents made some reference to DOE or designed experiments, such as Definitive Screening Designs.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Fig 2.png" style="width: 626px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23212iE52EF243C9AB38A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="Fig 2.png" alt="Most used words in “What topics would you like us to cover in future workshops” free-form response." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Most used words in “What topics would you like us to cover in future workshops” free-form response.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The remaining 60% requested a range of topics, which we divided into three clusters:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Statistical modeling and analytical techniques&lt;/STRONG&gt; (e.g., neural nets, principal components analysis).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Automating analysis through scripting and dashboards.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Unique challenges&lt;/STRONG&gt; specific to their companies’ situations.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;With those requests in mind, we will schedule workshops on DOE, modeling and analytical tools, and scripting and dashboards. For those with specific challenges, we will be reaching out to them to see how we can support them on a one-to-one level.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Comments&lt;/H3&gt;
&lt;P&gt;The last question was also free form: Any other comments? We used Latent Semantic Analysis in Text Explorer to group the responses for us, which yielded meaningful results into three clusters (see below):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Problems playing the posted video (red)&lt;/LI&gt;
&lt;LI&gt;Complaints about the sound during the event; we had some muting problems (blue)&lt;/LI&gt;
&lt;LI&gt;Compliments (green)&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Fig 3.png" style="width: 757px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23213i2325C19255FF662C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Fig 3.png" alt="Clustering terms from “Additional Comments or Suggested” free-form response." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Clustering terms from “Additional Comments or Suggested” free-form response.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In response to the technical issues, we will involve more JMP team members to help with the workshops: one person to deliver the workshop, another to answer questions via the chat, and a third solely responsible for the managing the presentation medium and ensuring attendees are muting upon entry.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks so much to everyone who attended the workshop and then took the survey. We’re happy to report that in the two weeks following our workshop, JMP has rolled out JMP Discovered, an online series on a range of topics. New workshops will be scheduled as part of JMP Discovered so keep an eye out for additional information. In the meantime, stay safe!&lt;/P&gt;</description>
      <pubDate>Wed, 22 Apr 2020 13:09:53 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Analyzing-survey-responses-from-virtual-hands-on-workshop/ba-p/259110</guid>
      <dc:creator>HadleyMyers</dc:creator>
      <dc:date>2020-04-22T13:09:53Z</dc:date>
    </item>
    <item>
      <title>JMP Live admin tricks: Automating publishing</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Automating-publishing/ba-p/257775</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JMP Live Automation (002).png" style="width: 414px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23153i976AEF8C30891047/image-dimensions/414x331?v=v2" width="414" height="331" role="button" title="JMP Live Automation (002).png" alt="JMP Live workflow: from data input to automated report publication." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP Live workflow: from data input to automated report publication.&lt;/span&gt;&lt;/span&gt;As a &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; admin, you are going to be asked by the producers in your organization how to publish reports automatically on a routine schedule without having to manually click “Run.” That's easy!&lt;/P&gt;
&lt;H3 id="toc-hId-1452900702"&gt;Trick #2: Automate Those Reports&lt;/H3&gt;
&lt;P&gt;Tell them all they need to do is use JSL (JMP Scripting Language) in conjunction with Windows Task Scheduler.&lt;/P&gt;
&lt;P&gt;Doing so allows users to automatically publish reports that are updated with fresh sets of data without any manual intervention. Armed with JSL’s HTTP Request function, users can easily create the scripting needed to pull in fresh data from online databases via API requests (more information found in this &lt;A href="https://community.jmp.com/t5/Discovery-Summit-2018/Importing-Web-Service-Data-The-New-HTTP-Request-in-JMP-nbsp-14/ta-p/73717" target="_blank" rel="noopener"&gt;blog post&lt;/A&gt;). HTTP Request can even be used with online databases (like Salesforce) that require OAuth 2.0 token authentication to access the data contained within.&lt;/P&gt;
&lt;P&gt;Once the data is pulled into &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, the user can easily manipulate the data table with the various object calls available in JSL. After using this data table to generate a Graph Builder report, save the script with the Save Script option found in the red triangle menu of the Graph Builder interface. The combination of the HTTP Requests (described above), data manipulation scripts, and Graph Builder scripts is all you need to successfully generate the up-to-date report you want – with just the click of a button.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you have the scripts necessary to generate the up-to-date report, the next step is scripting the first publish to J&lt;SPAN style="font-family: inherit;"&gt;MP Live. However, before the first publish can occur, you must create a JMP Live Connection object that will serve as the reference to your JMP Live site. This objec&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;t is initialized and maintained interactively in the (File -&amp;gt; Publish -&amp;gt; Manage Connections...) menu. If you are creating the JMP Live Connection for the first time, select "Add New..." and input the JMP Live URL in the "URL: " field and the API Key in the "API Key..." field. The API Key is obtained by going to your Profile in JMP Live and selecting "Edit", which will bring up a window with a "Generate API Key" button. Clicking this button will bring up another window where your API Key is displayed. Finally, the input for the "Connection Name: " field can be set as anything that you desire, and will serve as the key used to reference a JMP Live Connection in JSL and in the (File -&amp;gt; Publish -&amp;gt; Publish to JMP Live...) interactive menu.&lt;/SPAN&gt;&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-left" image-alt="andyzhou_1-1630339396816.png" style="width: 404px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/35405i7E0C1B3DE5D7CAA1/image-dimensions/404x231?v=v2" width="404" height="231" role="button" title="andyzhou_1-1630339396816.png" alt="andyzhou_1-1630339396816.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now that the JMP Live Connection has been successfully created, you can begin&amp;nbsp;scripting the first publish to JMP Live. First, start a connection to JMP Live using stored connection information by using the New JMP Live() function and referencing the "Connection Name" key specified earlier. After adding the reports you wish to publish to a New Web Report() object, use the Publish() function to successfully script the first publish of the web report. The Publish() function publishes a webreport to the JMP Live site specified in the JMP Live Connection object.&amp;nbsp;Below is an sample script on how to start a connection to JMP Live and then publish for the first time:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;liveconnection = New JMP Live( Connection( "MyJMPLive" ) );&lt;BR /&gt;webreport = New Web Report();
webreport &amp;lt;&amp;lt; Add Report( r1, Title(“Dashboard of Air Quality”) );&lt;BR /&gt;
jmpliveresult = liveconnection &amp;lt;&amp;lt; Publish( webreport, Public( 1 ), Title( "My Report" ) );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;After the report has been successfully published to JMP Live for the first time, there are two options for successfully updating a single report in JMP Live. The first option is to replace an existing JMP Live report with another single report using the Replace() function. Below is a sample script on how to replace a report:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;liveconnection = New JMP Live( Connection( "MyJMPLive" ) );&lt;BR /&gt;webreport = New Web Report();
webreport &amp;lt;&amp;lt; Add Report( r1, Title(“Dashboard of Air Quality”) );&lt;BR /&gt;
jmpliveresult = liveconnection &amp;lt;&amp;lt; Replace( webreport, ID( "Report Identifier" ) );
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The second option is to use the Update Data() function to update the data table for a report without replacing the report itself. The Update Data() function allows for changing of the file name if desired. Below is a sample script on how to update the data table for a report:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;liveconnection = New JMP Live( Connection( "MyJMPLive" ) );
dt = Data Table ( "Example Table" );

jmpliveresult = liveconnection &amp;lt;&amp;lt; Update Data( "Report Identifier", Data( dt, "Example Table" ) );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And now your script is complete! Use Windows Task Scheduler to set the schedule of when the report is run by following these steps to set up the task correctly:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Once Task Scheduler is open, select “Task Scheduler Library” in the menu on the left.&lt;/LI&gt;
&lt;LI&gt;Select “Create Task…” in the menu on the right, which will open a new window where the task is created.&lt;/LI&gt;
&lt;LI&gt;Make sure to name the task and then select “Run whether user is logged in or not.”&lt;/LI&gt;
&lt;LI&gt;Go to the Actions menu and select “New,” which will open a new window called “New Action.”&lt;/LI&gt;
&lt;LI&gt;Keep Action as “Start a program” and select “Browse.”&lt;/LI&gt;
&lt;LI&gt;Find the location of the jmp.exe file for JMP 15 and select “Open” for that file.&lt;/LI&gt;
&lt;LI&gt;In the New Action window, copy and paste the file location of the script you wish to automate to the “Add arguments (optional)” box. Make sure the file location is contained within quotation marks.&lt;/LI&gt;
&lt;LI&gt;Select “OK” to save your changes.&lt;/LI&gt;
&lt;LI&gt;Select “Triggers” in the Create Task window.&lt;/LI&gt;
&lt;LI&gt;Select “New,” which will open a new window called New Trigger.&lt;/LI&gt;
&lt;LI&gt;Use this menu to set the schedule for the script. Make sure that Enabled is checked before selecting “OK” to save your changes.&lt;/LI&gt;
&lt;LI&gt;Select “OK” to save the task; enter your system username and password.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;There are several important items to keep in mind while using Task Scheduler:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;JMP 15 sessions will remain hanging even if the script is executed without any errors. It is extremely important to include a Quit("No Save") line at the end of your script to prevent this from occurring.&lt;/LI&gt;
&lt;LI&gt;JMP 15 sessions will remain hanging if the script is executed and an error occurs. The best way to prevent this is to modify your script to be Try ( your script, Quit("No Save") ). Doing so will quit the JMP 15 session and prevent it from hanging if an error occurs.&lt;/LI&gt;
&lt;LI&gt;When your system password changes, you must go to each task and re-enter your new system password, otherwise it will not run. After double-clicking the task and selecting “OK,” you will then be prompted to enter your system username and password.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Task Scheduler.JPG" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23151iA535329EA159A5B6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Task Scheduler.JPG" alt="A successfully scheduled task with some of the required settings visible." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;A successfully scheduled task with some of the required settings visible.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="xmsonormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;Editor's note:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;&amp;nbsp;Have you read the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/forums/searchpage/tab/message?advanced=false&amp;amp;allow_punctuation=false&amp;amp;filter=location&amp;amp;location=blog-board:jmper-cable&amp;amp;q=%22JMP%20Live%20admin%20tricks%22" target="_self"&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #0168b2; background: white;"&gt;other&amp;nbsp;installments in our JMP Live admin tricks series&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Aug 2021 18:34:52 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Automating-publishing/ba-p/257775</guid>
      <dc:creator>andyzhou</dc:creator>
      <dc:date>2021-08-30T18:34:52Z</dc:date>
    </item>
    <item>
      <title>Replicating Pandas GroupBy behavior in JMP</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Replicating-Pandas-GroupBy-behavior-in-JMP/ba-p/253852</link>
      <description>&lt;H3&gt;The Engineering Mailbag&lt;BR /&gt;Episode 4: Pythons and Pandas, Oh My!&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="panda.jpg" style="width: 160px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23096i3D963BFF9F6B8D55/image-size/medium?v=v2&amp;amp;px=400" role="button" title="panda.jpg" alt="panda.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Every now and again we systems engineers run into interesting questions that would fall somewhat outside the&amp;nbsp;typical range of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td70114000002KZJq%20&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;&lt;U&gt;JMP&lt;/U&gt;&lt;/A&gt; usage. These applications are generally clever, and often bring home how using data isn’t limited to solving business or technical problems. Other times, the questions are just unexpected, challenging problems. These “curve balls” (as I like to call them) come in many different forms: coding problems, interesting analyses, ways of visualizing data… you get the idea.&lt;/P&gt;
&lt;P&gt;I haven’t written from the mailbag in a while, but this particular question really seemed to be something that needed to be addressed. The tool I used to answer the question really isn’t discussed as much as I think it should be. So, this is an opportunity for me to help out a colleague from New York and show everyone something interesting that you might not be aware that JMP can do.&lt;/P&gt;
&lt;H3&gt;The Question&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Mike[JMP],&lt;/P&gt;
&lt;P&gt;Often, I need to do groupbys where I need to grab say the max value everything grouped by some label where the Python Pandas equivalent would be something like:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="andale mono,times"&gt;df.groupby(['Something', 'Something Else']).max()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Another might be something like &lt;FONT face="andale mono,times"&gt;pandas.nlargest&lt;/FONT&gt; with a groupby, where I would want say the top 5 things out of a groupby.&lt;/P&gt;
&lt;P&gt;And after a couple minutes of fiddling with a column formula I give up and export the data to reimport it into JMP later. Tabulate sort of does this, but not always in the way I want. So a "How to JMP like Pandas" document would be super helpful for me, and might be helpful for JMP with how widespread Pandas has become…&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;My Response&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;Hi, Nick!
&lt;P&gt;There is a trick that you can use to get more flexibility out of formulas that mimics a lot of what [Pandas] can do. It involves telling JMP what columns you want to group by.&amp;nbsp;You do this by right clicking on the column name and selecting New Formula Column &amp;gt; Group By.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image1.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23065i8FA8FF4D9D9BCCBB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image1.png" alt="image1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;After doing that, any formula columns you create by right clicking on the column name and using New Formula Column&amp;gt; … will be grouped by the grouping columns you set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image2.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23066iAF0C96F841CE1805/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image2.png" alt="image2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image3.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23067iB4FC8ECAEB5D751F/image-size/large?v=v2&amp;amp;px=999" role="button" title="image3.png" alt="image3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;After that, it’s just a matter of filtering or subsetting using data filters or local data filters. Let me know if that helps!&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;
&lt;P&gt;M&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;Pandas: Cute Mustelid or Data Analysis Tool&lt;/H3&gt;
&lt;P&gt;All right, for the uninitiated, Pandas is not a cuddly, chromatically challenged mustelid. Pandas (usually abbreviated as “pd” in python scripts) is a “…&lt;A href="https://en.wikipedia.org/wiki/Python_(programming_language)" target="_blank" rel="noopener"&gt;&lt;U&gt;Python programming language&lt;/U&gt;&lt;/A&gt; for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and &lt;A href="https://en.wikipedia.org/wiki/Time_series" target="_blank" rel="noopener"&gt;&lt;U&gt;time series&lt;/U&gt;&lt;/A&gt; [&lt;A href="https://en.wikipedia.org/wiki/Pandas_(software)" target="_self"&gt;source&lt;/A&gt;]." It basically fills the role that the data organization and manipulation parts of JMP (data tables, Row and Column menus, etc.) do in the Python programming environment. So, it’s pretty important to Python data analytics workflows. Now, if you are looking to run Python from within JMP, this ain’t the blog article for you. Go have a look at &lt;A href="https://www.jmp.com/en_us/whitepapers/jmp/jmp-synergies-using-jmp-and-jmp-pro-with-python-and-r.html" target="_blank" rel="noopener"&gt;this white paper&lt;/A&gt;. If you are looking to break yourself free from doing data transformation in a command line, read on.&lt;/P&gt;
&lt;H3&gt;DataFrames and Data Tables&lt;/H3&gt;
&lt;P&gt;Still here? Awesome. Okay, the rest of this article is going to go through some of the common bits of Pandas and their analog in JMP. It’s not a comprehensive list by any means; it’s intended to point your nose in the right direction when thinking about the two environments.&lt;/P&gt;
&lt;P&gt;The first bit I want to cover is the “DataFrame.” In Pandas, this is where everything is stored. Like data tables in JMP, it is essentially a collection of data columns with a name (column name), etc. You act on columns and rows (transform things, summarize, etc.) but you’re always acting on either the DataFrame as a whole or some part of it.&lt;/P&gt;
&lt;P&gt;In JMP, the primary data container is the data table. You can act on columns and rows in the same ways you would in a Pandas DataFrame. In both, you are able to deal with missing values in the data table. In JMP, they are designated as either a cell with a “.” in it (for numerical data) or a blank cell (for character data). You can transform data, summarize it, etc. (more on those bits later). In both cases, the more you tell the software about the data the less leg work you have to do, which brings me to my next point.&lt;/P&gt;
&lt;H3&gt;Column Properties and dtypes&lt;/H3&gt;
&lt;P&gt;In the matter of column properties and data types (dtypes in Pandas), JMP wins hands down. Pandas inherits most of its data type understanding from another Python package called NumPy, which is cool. NumPy is pretty sturdy code, but it’s really limited in this regard. It handles about eight types of data (see the table below[&lt;A href="https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html#basics-dtypes" target="_self"&gt;source&lt;/A&gt;]) with somewhat limited support for different formatting (it gets pretty confused by currencies without help, for instance).&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;&lt;STRONG&gt;Kind of Data&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;STRONG&gt;Data Type&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;STRONG&gt;Scalar&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;STRONG&gt;Array&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;&lt;STRONG&gt;String Aliases&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;STRONG&gt;Documentation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;tz-aware datetime&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeTZDtype.html#pandas.DatetimeTZDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;DatetimeTZDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.html#pandas.Timestamp" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;Timestamp&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.DatetimeArray.html#pandas.arrays.DatetimeArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.DatetimeArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'datetime64[ns, &amp;lt;tz&amp;gt;]'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-timezone" target="_blank" rel="noopener"&gt;&lt;U&gt;Time zone handling&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;Categorical&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.CategoricalDtype.html#pandas.CategoricalDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;CategoricalDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Categorical.html#pandas.Categorical" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;Categorical&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'category'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html#categorical" target="_blank" rel="noopener"&gt;&lt;U&gt;Categorical data&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;period (time spans)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.PeriodDtype.html#pandas.PeriodDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;PeriodDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Period.html#pandas.Period" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;Period&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.PeriodArray.html#pandas.arrays.PeriodArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.PeriodArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'period[&amp;lt;freq&amp;gt;]', 'Period[&amp;lt;freq&amp;gt;]'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-periods" target="_blank" rel="noopener"&gt;&lt;U&gt;Time span representation&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;sparse&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.SparseDtype.html#pandas.SparseDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;SparseDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.SparseArray.html#pandas.arrays.SparseArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.SparseArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'Sparse', 'Sparse[int]', 'Sparse[float]'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/sparse.html#sparse" target="_blank" rel="noopener"&gt;&lt;U&gt;Sparse data structures&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;intervals&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.IntervalDtype.html#pandas.IntervalDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;IntervalDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Interval.html#pandas.Interval" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;Interval&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.IntervalArray.html#pandas.arrays.IntervalArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.IntervalArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'interval', 'Interval', 'Interval[&amp;lt;numpy_dtype&amp;gt;]', 'Interval[datetime64[ns, &amp;lt;tz&amp;gt;]]', 'Interval[timedelta64[&amp;lt;freq&amp;gt;]]'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#advanced-intervalindex" target="_blank" rel="noopener"&gt;&lt;U&gt;IntervalIndex&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;nullable integer&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Int64Dtype.html#pandas.Int64Dtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;Int64Dtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;, …&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.IntegerArray.html#pandas.arrays.IntegerArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.IntegerArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'Int8', 'Int16', 'Int32', 'Int64', 'UInt8', 'UInt16', 'UInt32', 'UInt64'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html#integer-na" target="_blank" rel="noopener"&gt;&lt;U&gt;Nullable integer data type&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;Strings&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.StringDtype.html#pandas.StringDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;StringDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;A href="https://docs.python.org/3/library/stdtypes.html#str" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;str&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.StringArray.html#pandas.arrays.StringArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.StringArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'string'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#text" target="_blank" rel="noopener"&gt;&lt;U&gt;Working with text data&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="196"&gt;
&lt;P&gt;Boolean (with NA)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="260"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.BooleanDtype.html#pandas.BooleanDtype" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;BooleanDtype&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="195"&gt;
&lt;P&gt;&lt;A href="https://docs.python.org/3/library/functions.html#bool" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;bool&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.arrays.BooleanArray.html#pandas.arrays.BooleanArray" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;&lt;U&gt;arrays.BooleanArray&lt;/U&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="390"&gt;
&lt;P&gt;'boolean'&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="293"&gt;
&lt;P&gt;&lt;A href="https://pandas.pydata.org/pandas-docs/stable/reference/arrays.html#api-arrays-bool" target="_blank" rel="noopener"&gt;&lt;U&gt;Boolean data with missing values&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;The column properties in JMP comprise about 43 pages of the &lt;EM&gt;Using JMP&lt;/EM&gt; book. They are significantly more extensive and are good at recognizing data types as they are imported. Of particular interest to a new JMP user is the fact that column properties extend well beyond the data types that Pandas uses. It can handle a host of metadata that trigger actions across the software. Now, to be fair, you can attach attributes to a Pandas DataFrame, but since the DataFrame is just a container, you have to either code in the support for the attributes or hope someone put in the support in the package you are using. All that is already done for you in JMP.&lt;/P&gt;
&lt;H3&gt;Tabulate, Column Formulas and GroupBys&lt;/H3&gt;
&lt;P&gt;The truth is that the previous two items don’t really matter that much in the context of the question I was trying to answer. For our purposes, the data table/ DataFrame is just a box to put stuff in. The column properties/types can help with analytical considerations, but, again, that’s not important for the question we’re working with here. The bit of Pandas that we are interested in is called GroupBy. And it’s for slicing and dicing data in preparation for doing other analyses. A quick example using the JMP Big Class data table and getting the average height and weight of boys and girls by age might look like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Import Pandas
import pandas as pd
 
# Bring in the data
data = pd.read_csv("/Users/mike.anderson@jmp.com/Desktop/Big Class.csv")
 
# Put the data into a DataFrame
df = pd.DataFrame(data)
 
# Run the group by, get the means, and show the results
summ_df= df.groupby(['sex','age']).mean()
print(summ_df)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the output looking something like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;          height   weight
sex age            
F  12  58.600000 100.200000
  13  59.000000  95.333333
  14  62.600000  96.600000
  15  63.000000 102.000000
  16  62.500000 113.500000
  17  62.000000 116.000000
M  12  57.333333  97.000000
  13  61.250000  94.250000
  14  65.285714 103.857143
  15  65.200000 110.800000
  16  68.000000 128.000000
  17  69.000000 153.000000&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Normally, JMP users would look to Summary or Tabulate as their primary tools for these data transformation operations. They might even use the Formula Editor to create a column. But, there is a secret weapon in the data table (and in the &lt;EM&gt;platform column list&lt;/EM&gt;) that you can use to do just about everything you’d want to do in Pandas and more. That secret is the ability to right click on a column name and select New Formula Column. This works &lt;EM&gt;anywhere&lt;/EM&gt; that there is a column list! From there you have many different options for doing various transforms, such as combining columns, doing cumulative sums in rows, etc. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;That, in and of itself, while handy, is not particularly magical. The place where things get really interesting is when you turn on the “Group By” flag for a column in JMP. This will automatically make any formula columns you create aware of the levels in a grouping variable. Just think about that for a second -- you can create a formula column anywhere in the software that can be stratified based on a grouping column.&lt;/P&gt;
&lt;P&gt;Let’s look at an example of what this means from another question I received recently:&lt;/P&gt;
&lt;H3&gt;An Example: TWO QUESTIONS FOR THE PRICE OF ONE!!&lt;/H3&gt;
&lt;P&gt;About the same time the initial question came through, I got a question from another customer about how to do a numerical integral (area under a curve or AUC) for a large collection of samples. Moreover, they were willing to provide me with a sample data set they had published previously for a journal article in &lt;EM&gt;Environmental and Molecular Mutagenesis&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;It turns out that what they wanted to do was easily accomplished using Group By Flags and Function Columns. Here’s the procedure (you can follow along using the data from the &lt;A href="https://public.jmp.com/packages/Replicating-Pandas-GroupBy-Behavior-in-J/js-p/S78g1k2RnpFBZnKJPpzhl" target="_blank" rel="noopener"&gt;JMP Public site&lt;/A&gt;:(&lt;/img&gt;&lt;/P&gt;
&lt;P&gt;First, &lt;A href="https://community.jmp.com/t5/JMP-Blog/The-1st-thing-I-wish-someone-had-told-me-when-I-started-using/ba-p/210542" target="_blank" rel="noopener"&gt;let’s graph the data&lt;/A&gt;. The details of the study aren’t important for this discussion, though it is &lt;A href="https://www.researchgate.net/publication/290443375_Genotoxic_Mode_of_Action_Predictions_from_a_Multiplexed_Flow_Cytometric_Assay_and_a_Machine_Learning_Approach" target="_blank" rel="noopener"&gt;interesting reading&lt;/A&gt;. The short version is that it’s a large collection of chemicals with different concentrations (Conc. (uM)) and a series of genetic responses. For our exercise, they’re interested in calculating the AUC for each of the genetic responses. Here’s a look in Graph Builder with a column switcher:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Replicating-Pandas-GroupBy-Behavior-in-J/js-p/S78g1k2RnpFBZnKJPpzhl/indexPage" width="1000" height="700" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;The first step in the process of calculating the AUC is setting up the grouping. We’re going to right click on the Chemical column, select “New Formula Column,” and then “Group By.” We’re going to do this again for the Biomarker column. Note that order can matter here. We’re grouping &lt;EM&gt;first&lt;/EM&gt; by Chemical and &lt;EM&gt;then&lt;/EM&gt; Biomarker &lt;EM&gt;within&lt;/EM&gt; Chemical. After that, it’s just a matter of using the “New Formula Column” in the data table to build up the calculation.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image5.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23068iEC6BCD81C420D9B9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image5.png" alt="image5.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Going forward, I broke each step out into individual columns for the sake of clarity. And, if you’re really interested, I’m using the &lt;A href="https://en.wikipedia.org/wiki/Riemann_sum%20- Trapezoidal_rule" target="_self"&gt;Trapezoidal Rule Riemann Sum&lt;/A&gt;&amp;nbsp;for the math here.&lt;/P&gt;
&lt;P&gt;Ok, back to the calculation. The first thing we need is the distance between each point in the x-axis (the point-wise change in x). We’re going to select the Conc (um) column, right click on the title and select New Formula Column&amp;gt;Row&amp;gt;Difference. Now open the formula in the new column that JMP created. It should show something like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image6.png" style="width: 850px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23069iCCFE23FBC574CA57/image-size/large?v=v2&amp;amp;px=999" role="button" title="image6.png" alt="image6.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that JMP is handling calculating between rows and has adjusted the formula to reset when it detects a new Chemical or a new Biomarker type.&lt;/P&gt;
&lt;P&gt;Next we need the average value of Value between each data point and the previous one. Right click on the column header and select New Formula Column&amp;gt;Row&amp;gt;Lag. Open the formula and modify it a little so that it’s calculating the difference between rows and not just giving the value of the previous row. That’s shown in this screenshot:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image7.png" style="width: 925px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23070iBDA165296FBFE0CB/image-size/large?v=v2&amp;amp;px=999" role="button" title="image7.png" alt="image7.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Those two columns (I renamed them &lt;EM&gt;dx&lt;/EM&gt; and &lt;EM&gt;dy&lt;/EM&gt; in the data table) need to be multiplied together to get the area of a segment. Select the two columns, and right click on the column name of one of them. Select New Formula Column&amp;gt;Combine&amp;gt;Product. The new column gives us the approximate area under the portion of the curve between each data point and the next one. I renamed that column &lt;EM&gt;iAUC&lt;/EM&gt;(for instantaneous AUC) in the data table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image8.png" style="width: 286px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23071i1D93AFF47C385EDE/image-size/large?v=v2&amp;amp;px=999" role="button" title="image8.png" alt="image8.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The last step is to sum up the values for each section. This is done by right clicking on the iAUC column and selecting New Formula Column&amp;gt;Row&amp;gt;Cumulative Sum. Because we selected the Group By columns at the beginning of the exercise, the tally is reset for each sample in the data set.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image9.png" style="width: 460px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23072iA5C4D494F255F2FD/image-size/large?v=v2&amp;amp;px=999" role="button" title="image9.png" alt="image9.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;From here we could use Tabulate or Summary to create a table with the max values for each sample (the approximate total area under the curve). Here’s an example for a common chemical:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="image10.png" style="width: 350px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23073i2EF96196CFC6EC6E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="image10.png" alt="image10.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Final Thoughts&lt;/H3&gt;
&lt;P&gt;And, that’s it. You can easily replicate behaviors in Pandas using structures that exist in JMP. Just remember to use the Group By variable and you’re off. No mustelids, chromatically challenged or otherwise, required.&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;&lt;STRONG&gt;Editor's note:&lt;/STRONG&gt;&lt;SPAN&gt; Have you read the &lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/tag/Engineering%20Mailbag/tg-p/board-id/jmper-cable" target="_self"&gt;other&amp;nbsp;installments in our Engineering Mailbag series&lt;/A&gt;&lt;SPAN&gt;? See how Mike helps a user who was using &lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=aw&amp;amp;utm_source=bl&amp;amp;utm_medium=referral" target="_self" rel="noopener noreferrer noopener noreferrer"&gt;JMP&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;to decide whether to sign up for a snow removal service and develop unique visualizations for STEAM education programs.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Apr 2020 12:31:01 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Replicating-Pandas-GroupBy-behavior-in-JMP/ba-p/253852</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2020-04-16T12:31:01Z</dc:date>
    </item>
    <item>
      <title>JMP Live admin tricks: Optimizing loading speeds for reports</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Optimizing-loading-speeds-for-reports/ba-p/257762</link>
      <description>&lt;P&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="jmp-live-laptop.jpg" style="width: 280px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23119i96D5C5BB7ED42AD3/image-dimensions/280x195?v=v2" width="280" height="195" role="button" title="jmp-live-laptop.jpg" alt="Learn tips to make your life as a JMP Live admin easier as you meet the needs of users." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Learn tips to make your life as a JMP Live admin easier as you meet the needs of users.&lt;/span&gt;&lt;/span&gt;&lt;SPAN style="font-family: inherit;"&gt;Life as a &lt;/SPAN&gt;&lt;A style="font-family: inherit; background-color: #ffffff;" href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt;&lt;SPAN style="font-family: inherit;"&gt; admin poses a different challenge than the life of an average JMP Live user. Average users’ vistas are limited to their own published reports while admins have access to the entire world of JMP Live, including each user’s more constricted view. Admins ca&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;n manage every aspect of JMP Live, including users’ public and private reports and all the groups these reports are contained within.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Admins also have the addition&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;al, unique responsibility of serving as primary contacts for JMP Live producers’ scripting and automation questions. Want to know more about the essentials needed to answer these questions, as well as the best server management practices? Read on here and this whole series.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Trick #1: Make a Table Summary Instead&lt;/H3&gt;
&lt;P&gt;A slow-loading webpage is perhaps one of the biggest pet peeves of any online user. Similarly, a slow-loading report on JMP Live will just as quickly try the patience of a JMP Live consumer. This headache can be avoided altogether by following a few easy steps to reduce the loading time of a published report.&lt;/P&gt;
&lt;P&gt;Often, the main culprit behind slow-loading reports is the data table. The performance of a report depends on the size of the data tables, as a large data table with over 100,000 rows will certainly cause a report to take its time when loading. With these large tables, even making a simple change in the data filter can significantly bump up the load time. However, there is an easy way to prevent this from occurring.&lt;/P&gt;
&lt;P&gt;To tackle this issue, it is important to understand how a good data visual is made. Often, a good data visual involves aggregating data into different groups (for example, the different bars on a bar graph). The Tables Summary function in JMP is the perfect tool for performing this task, since it easily aggregates the data in the exact format you need. The result? The significantly decreased number of rows in the data table allows you to create the same exact data visual but with much better loading times in JMP Live!&lt;/P&gt;
&lt;P&gt;A great example can be found in the "Auto Raw Data.jmp" file found in the Sample Data library. This data table has 20,000 rows, which would result in a slowdown if a report using this table is published to JMP Live. By using The Tables Summary function in JMP, the data can easily be aggregated to produce a data table with fewer rows. In this example, aggregating the data by AgeClass and Gender produces a table with only four rows, which ensures a much better loading time in JMP Live!&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Summmary.JPG" style="width: 764px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/23105i702EE7B62EEACAAE/image-size/large?v=v2&amp;amp;px=999" role="button" title="Summmary.JPG" alt="Here's a trick: Use the Tables Summary function to easily aggregate data to produce a data table with a lot fewer rows." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Here's a trick: Use the Tables Summary function to easily aggregate data to produce a data table with a lot fewer rows.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="xmsonormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;Editor's note:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;&amp;nbsp;Have you read the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/forums/searchpage/tab/message?advanced=false&amp;amp;allow_punctuation=false&amp;amp;filter=location&amp;amp;location=blog-board:jmper-cable&amp;amp;q=%22JMP%20Live%20admin%20tricks%22" target="_self"&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #0168b2; background: white;"&gt;other&amp;nbsp;installments in our JMP Live admin tricks series&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="font-size: 10.5pt; font-family: 'Arial',sans-serif; color: #333333; background: white;"&gt;? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 May 2020 16:37:48 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-admin-tricks-Optimizing-loading-speeds-for-reports/ba-p/257762</guid>
      <dc:creator>andyzhou</dc:creator>
      <dc:date>2020-05-06T16:37:48Z</dc:date>
    </item>
    <item>
      <title>Help us help you!</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Help-us-help-you/ba-p/255510</link>
      <description>&lt;P&gt;On 31 March we hosted our first JMP Virtual Hands-on Workshop in Europe. There was a huge amount of interest leading up to this event, as evidenced by the number of registrations. More than 250 people joined the workshop live, and we really hope those watching found it useful. We know this is a difficult time for everyone, so we’d like to reach out to all of you to offer our help and support as best we can.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="prediction profiler.JPG" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22727iFA11399CBBBAE586/image-size/large?v=v2&amp;amp;px=999" role="button" title="prediction profiler.JPG" alt="Prediction Profiler with &amp;quot;Simulate&amp;quot; turned on, as show in &amp;quot;Case Study #4.&amp;quot;" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Prediction Profiler with "Simulate" turned on, as show in "Case Study #4."&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you watched the workshop live, please take a moment to complete the survey below. We want to hear what you thought of it, what you liked and didn’t like, what you would like to see more or less of, etc. We also want to know what topics or &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; features you’d like us to cover at future workshops. Since this was the very first event of its kind in Europe, we will use your responses to improve future events so we can provide you with the best support possible.&lt;/P&gt;
&lt;P&gt;Even if you didn’t see the workshop but would be interested in attending future events, we still want to hear from you. Please take a moment to answer the survey so that we can discover what’s important to you and how we can deliver content in a way that suits your needs.&lt;/P&gt;
&lt;P&gt;You have until 8 April to complete the survey; respondents’ names will remain confidential. As soon as we’ve compiled the results, we will post them and key takeaways in a follow-up blog post shortly thereafter.&lt;/P&gt;
&lt;P&gt;If you’d like to see a recording of the event, click on the link below. Just below the link is the JMP journal and Excel dataset needed to follow along.&lt;LI-VIDEO vid="IzeGpjajE6mo768dxCZKATbz5xc07Vpk" width="1908" height="1028" size="original" uploading="false" thumbnail="http://house-fastly.us-east-1.ooyala.com/IzeGpjajE6mo768dxCZKATbz5xc07Vpk/Ut_HKthATH4eww8X4xMDoxOmtyMTtqFM" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://sas.qualtrics.com/jfe/form/SV_6YxA8YJIUFt7qx7" target="_self"&gt;Survey&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Apr 2020 12:00:34 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Help-us-help-you/ba-p/255510</guid>
      <dc:creator>HadleyMyers</dc:creator>
      <dc:date>2020-04-02T12:00:34Z</dc:date>
    </item>
    <item>
      <title>Getting to the point of your data using JMP</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Getting-to-the-point-of-your-data-using-JMP/ba-p/253870</link>
      <description>&lt;P&gt;Leaders of organizations wear many hats and therefore have little time to digest statistical results. That’s why it’s so important for those who live and breathe data to make the most of their communications with leadership: Present clear, compelling data visualizations. Make your case and explain how the data supports it. Anticipate which questions will be asked. And – when possible – answer those questions in-real time with data.&lt;/P&gt;
&lt;P&gt;This level of preparedness will not only allow for faster and more effective decision making, it will also help avoid the need for time-consuming follow-up meetings that can delay decisions, waste leaders’ valuable time and reduce the organization’s effectiveness overall.&lt;/P&gt;
&lt;P&gt;Furthermore, good communication skills coupled with well-executed data analysis are a shortcut to earning credibility and trust. This is the best foundation to build upon for motivating leadership to make optimal decisions, hence; “get to the point.”&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt; is chock full of features designed to help users get to the point.&lt;/P&gt;
&lt;P&gt;For one, there is the visual workflow – the ability to use your cursor to drill down into a graph. Graphlets are a new feature of JMP 15 that allow the user to effectively share information in meetings. First, you create a high-level graph for initial consumption. The hover label editor in Graph Builder allows the user to select the next level of detail with a graph of choice.&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-center" image-alt="graphlet-example (002).png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22559i56F9C6BAC65A8616/image-size/large?v=v2&amp;amp;px=999" role="button" title="graphlet-example (002).png" alt="graphlet-example (002).png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Take, for example, a plot illustrating the annual results of a large organization. The hover label provides a graphlet that splits the summary into results for a specific facility or department. The practice can be extended as the data includes variables with meaningful splits. Organizations realize significant benefits from these dynamic graphical tools as better decisions result from extracting useful information from data in record time.&lt;/P&gt;
&lt;P&gt;Tune in to learn new tips for using the &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; visual workflow to get right to the point.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2020 12:36:44 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Getting-to-the-point-of-your-data-using-JMP/ba-p/253870</guid>
      <dc:creator>statpharmer</dc:creator>
      <dc:date>2020-04-10T12:36:44Z</dc:date>
    </item>
    <item>
      <title>SSL certificates for JMP Live</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/SSL-certificates-for-JMP-Live/ba-p/250109</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="ssl-certs-for-jmplive-blog-image.jpg" style="width: 300px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22061i62D0FA03A43BAF89/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ssl-certs-for-jmplive-blog-image.jpg" alt="Need help getting and using the certificates that JMP Live requires? Here you go!" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Need help getting and using the certificates that JMP Live requires? Here you go!&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Are you setting up SSL certificates for &lt;A href="http://www.jmp.com/live" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt;? The process described here will help you get and use the certificates that JMP Live requires.&lt;/P&gt;
&lt;P&gt;SSL certificates are text files containing cryptographic keys that enable a browser and the web server to have secure communication. The primary reason for using SSL certificates is to keep sensitive information sent across the web encrypted so that only the intended recipient can access it.&amp;nbsp;The keys are specific to an organization and are typically provided by third-party vendors like DigiCert, Symantec, and Network Solutions. JMP Live cannot run without these certificates.&lt;/P&gt;
&lt;P&gt;JMP Live requires three certificate files:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A file containing the certificate itself.&lt;/LI&gt;
&lt;LI&gt;A file containing the certificate’s private key.&lt;/LI&gt;
&lt;LI&gt;A file containing the root certificate chain, also known as the Certification Authority (CA) certificate chain.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The JMP Live installer provides this set of certificates that allows for minimal testing on a local host setup. However, it generates warnings when the site is viewed in the local browser, and the site is inaccessible from browsers outside the install machine. You can get certificates yourself using the following process.&lt;/P&gt;
&lt;H3&gt;Requesting certificates from a Certification Authority (CA)&lt;/H3&gt;
&lt;P&gt;The certificate and private key are configured for your organization. The root certificate comes from the third-party vendor.&lt;/P&gt;
&lt;P&gt;If you need to purchase a certificate from a third-party vendor, please refer to their documentation on how to obtain the required files.&lt;/P&gt;
&lt;P&gt;If certificates are available in your organization, the CA Web Enrollment role service provides a set of web pages that allow interaction with the CA role service. These web pages are typically located at &lt;EM&gt;https://&amp;lt;servername&amp;gt;/certsrv&lt;/EM&gt;, where &lt;EM&gt;&amp;lt;servername&amp;gt;&lt;/EM&gt; is the name of the server that hosts the CA Web Enrollment pages (for example, &lt;A href="https://certificates.company.com/certsrv" target="_blank" rel="noopener"&gt;https://certificates.company.com/certsrv&lt;/A&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Once you find the location of the certificate enrollment service, follow these steps:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Get the certificate&lt;/STRONG&gt;: Request a certificate from the CA Web Enrollment role service web page. Follow the instructions provided by your organization to submit the request for a certificate. Once the certificate has been issued, download and save it to the install machine. When prompted for an encoding, select &lt;EM&gt;Base64&lt;/EM&gt;. The certificate contained in the downloaded file is an encoded piece of data that usually starts with &lt;EM&gt;-----BEGIN CERTIFICATE ----&lt;/EM&gt;. The downloaded file will be file &lt;EM&gt;Nr. 1&lt;/EM&gt;.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Get the certificate’s private key&lt;/STRONG&gt;: The private key is generated simultaneously with the&amp;nbsp;certificate request. You won’t see the private key while generating the&amp;nbsp;certificate request. It is usually created in the background and saved in the server’s filesystem without any notification. There are several ways to find a certificate’s private key (see &lt;A href="#helpfullinks" target="_blank" rel="noopener"&gt;Helpful Links&lt;/A&gt; at the end of this blog post or use Google for options).&lt;BR /&gt;Use one of the following methods to change the format of the private key into one that JMP Live can accept:&lt;BR /&gt;&lt;BR /&gt;
&lt;OL class="lia-list-style-type-lower-alpha"&gt;
&lt;LI&gt;&amp;nbsp;After exporting all certificates in the certification path and the private key, the downloaded file (PKCS&amp;nbsp;#12) is usually password-protected. JMP Live cannot use the password-protected file. To remove the password, you can use OpenSSL (see &lt;A href="#helpfullinks" target="_blank" rel="noopener"&gt;Helpful Links&lt;/A&gt; at the end of this blog post or use Google for options). Run the following command to remove the password, where &lt;EM&gt;cert.&lt;/EM&gt;&lt;EM&gt;pfx&lt;/EM&gt; is the exported certificate and private key file:&lt;BR /&gt;&lt;EM&gt;openssl pkcs12 -in cert.pfx -nodes -out cert.pem&lt;/EM&gt;&lt;SPAN&gt;&lt;BR /&gt;If the above command does not work for your version of OpenSSL, use this command instead: &lt;BR /&gt;&lt;/SPAN&gt;&lt;EM&gt;&lt;I&gt;&lt;SPAN&gt;openssl pkcs7 -print_certs -in cert.pfx -out cert.pem&lt;/SPAN&gt;&lt;/I&gt;&lt;/EM&gt;&lt;BR /&gt;After running the above command, the &lt;EM style="font-family: inherit;"&gt;cert.pem&lt;/EM&gt;&lt;SPAN style="font-family: inherit;"&gt; file contains the unprotected private key that is needed by JMP Live as well as all certificates. Open &lt;/SPAN&gt;&lt;EM style="font-family: inherit;"&gt;cert.pem&lt;/EM&gt;&lt;SPAN style="font-family: inherit;"&gt; using the Notepad tool and copy and paste the private key into a new file. The private key contained in &lt;/SPAN&gt;&lt;EM style="font-family: inherit;"&gt;cert.pem&lt;/EM&gt;&lt;SPAN style="font-family: inherit;"&gt; is an encoded piece of data that usually starts with: &lt;EM&gt;-----BEGIN RSA PRIVATE KEY ----&lt;/EM&gt;&amp;nbsp; This new file is file Nr. 2.&lt;BR /&gt;&lt;/SPAN&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Some certificate utilities might allow you to export the certificate and key in Apache format. Doing so usually does not require a password, and the certificate and key are exported into two separate files. These two files can be used as File Nr. 1 and 2 without having to transform them using OpenSSL.&lt;BR /&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Get the root certificate&lt;/STRONG&gt;: The role service web site usually contains a menu item "Download a CA certificate, certificate chain, or CRL." JMP Live needs the &lt;EM&gt;CA certificate chain&lt;/EM&gt;. This item can be used to download file Nr. 3. When prompted for an encoding select &lt;EM&gt;Base64&lt;/EM&gt;. If the downloaded file is password-protected, use the same steps to remove a password as described for the private key (step 2 above). If the file is in PKCS#7 or P7B format, it needs to be converted to Privacy Enhanced Mail or PEM format. To do that, run the following command: &lt;BR /&gt;&lt;EM&gt;openssl pkcs7 -in certnew.p7b -nodes -out root.pem&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;Verify the certificates (optional)&lt;/H3&gt;
&lt;P&gt;You can verify your PEM files by running the following command: &lt;BR /&gt;&lt;EM&gt;openssl x509 -in root.pem -text&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;This will display the content of the certificate and the different pieces, like Issuer, Subject, and expiration date, can be verified.&lt;/P&gt;
&lt;H3&gt;Using the certificates in JMP Live&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Once you have the required certificates, you can begin using them in JMP Live:&lt;BR /&gt;Keep the files in a central location or copy them to the SSL directories in the JMPLive and JMPPool folders, typically at:&lt;BR /&gt;C:\Program Files\SAS\JMP Live\JMPLive\ssl&lt;BR /&gt;C:\Program Files\SAS\JMP Live\JMPPool\ssl&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;Edit the .env files of JMPLive and JMPPool to reflect the appropriate paths to the three files (certificate, private key, and root certificate).&amp;nbsp;&lt;BR /&gt;
&lt;OL class="lia-list-style-type-lower-alpha"&gt;
&lt;LI&gt;&lt;STRONG&gt;Edit the JMP Live .env file&lt;/STRONG&gt;. Note that the root certificate for JMP Live is in the JMPPool/ssl directory. &lt;BR /&gt;SSL_CERT_FILE='c:\Program Files\SAS\JMP Live\JMPLive\ssl\ cert.pem' &lt;BR /&gt;SSL_KEY_FILE='c:\Program Files\SAS\JMP Live\JMPLive\ssl\key.pem' &lt;BR /&gt;SSL_CA_FILE='c:\Program Files\SAS\JMP Live\JMPPool\ssl\root.pem'&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="font-family: inherit;"&gt;Edit the JMP Pool .env file &lt;/STRONG&gt;&lt;SPAN style="font-family: inherit;"&gt;&lt;STRONG&gt;(root certificate only)&lt;/STRONG&gt;.&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;SSL_CA_FILE='c:\Program Files\SAS\JMP Live\JMPPool\ssl\root.pem'&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Use the Services tab of the Task Manager to start or restart the JMP Live web application (websjmpsvc.exe) and the JMP Pool Manager (jmpppolsvc.exe).&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;Helpful Links&lt;/H3&gt;
&lt;P&gt;Finally, here are a few links to reference as you set up SSL certificates:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh831649(v%3Dws.11)" target="_blank" rel="noopener"&gt;Certification Authority Web Enrollment Guidance&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.ssls.com/knowledgebase/how-can-i-find-the-private-key-for-my-ssl-certificate/" target="_blank" rel="noopener"&gt;How can I find my Certificate’s Private Key?&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc754329(v=ws.11)?redirectedfrom=MSDN" target="_blank" rel="noopener"&gt;Export a Certificate with the Private Key&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://support.microsoft.com/en-us/help/232154/iis-export-private-key-option-is-grayed-when-exporting-a-server-certif" target="_blank" rel="noopener"&gt;Export Private Key Option is Grayed When Exporting a Server Certificate&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://wiki.openssl.org/index.php/Binaries" target="_blank" rel="noopener"&gt;OpenSSL&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 04 Mar 2020 19:31:44 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/SSL-certificates-for-JMP-Live/ba-p/250109</guid>
      <dc:creator>dieter</dc:creator>
      <dc:date>2020-03-04T19:31:44Z</dc:date>
    </item>
    <item>
      <title>A simple way to automate "File Import/Append/Cleaning/Generate Report"</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/A-simple-way-to-automate-quot-File-Import-Append-Cleaning/ba-p/250078</link>
      <description>&lt;P&gt;Ever wanted to automate processes and analyses? You can do it in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;! This video shows how to automate the following steps, with a minimal amount of JSL (JMP Scripting Language) coding:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a file dialog to allow you to select and open a file&lt;/LI&gt;
&lt;LI&gt;Append that data to a "master data table"&lt;/LI&gt;
&lt;LI&gt;Clean the data (using stored Recode command)&lt;/LI&gt;
&lt;LI&gt;Generate a report from the updated Master Data Table&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;LI-VIDEO vid="BoaDA5ajE6sAWjQ1RD9h9SPzS1MuF0gS" width="1920" height="1080" size="original" uploading="false" thumbnail="http://house-fastly.us-east-1.ooyala.com/BoaDA5ajE6sAWjQ1RD9h9SPzS1MuF0gS/Ut_HKthATH4eww8X4xMDoxOjBzMTt2bJ" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Mar 2020 13:20:09 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/A-simple-way-to-automate-quot-File-Import-Append-Cleaning/ba-p/250078</guid>
      <dc:creator>JerryFish</dc:creator>
      <dc:date>2020-03-20T13:20:09Z</dc:date>
    </item>
    <item>
      <title>When is a column not a column?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/When-is-a-column-not-a-column/ba-p/249835</link>
      <description>&lt;P&gt;Scripting &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; often involves using data column objects. We might want to compute statistics for a column of numeric data. We might want to change a column attribute or property. In any of these cases, we need a reference to the column so that we can provide it as an argument. There are several ways to get or use a reference. Unfortunately, they might seem to be equivalent up to a point until we are surprised. A scientific theory is testable. A theory holds until a test invalidates it. Let's test some theories about column references.&lt;/P&gt;
&lt;P&gt;I am using the &lt;STRONG&gt;height&lt;/STRONG&gt; data column in the Big Class data table from the JMP sample data folder, which is&amp;nbsp;&lt;STRONG&gt;C:\Program Files\SAS\JMPPRO\15\Samples\Data&lt;/STRONG&gt; in my case. Let's get started.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here( 1 );

// open a data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Our first test will use several different forms of a column reference for &lt;STRONG&gt;height&lt;/STRONG&gt;.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// use a reference to a data column
sum = Col Sum( :height );
Show( sum );
sum = Col Sum( Column( "height" ) );
Show( sum );
sum = Col Sum( Column( 4 ) );
Show( sum );
sum = Col Sum( :Name( "height" ) );
Show( sum );
sum = Col Sum( As Column( "height" ) );
Show( sum );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;OK, what did we get?&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture 1.JPG" style="width: 287px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21986i1E0D5102DD8DC412/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture 1.JPG" alt="Capture 1.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Same result every time. So my theory is that these five different references are equivalent. My first test confirms my theory. But it is only the first test. Let's devise another test. Let's first get the column reference, store it, then use the stored reference to compute the same statistic.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// get a reference to a data column and then use it
col = Column( "height" );
sum = Col Sum( col );
Show( sum );
col = Column( 4 );
sum = Col Sum( col );
Show( sum );
col = :Name( "height" );
sum = Col Sum( col );
Show( sum );
col = As Column( "height" );
sum = Col Sum( col );
Show( sum );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note that I did not include the very first form of a reference, &lt;STRONG&gt;:height&lt;/STRONG&gt;&amp;nbsp;because the value returned and stored in the expression &lt;STRONG&gt;col = :height&lt;/STRONG&gt; is missing (".")! That result is not helping my theory! What did we get with the rest of test?&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 380px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22127i2E41B3822A596399/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Wait a minute! I didn't get a single error, but I didn't get the same result each time. The first two results are correct, but the last two are wrong. Let's perform one more test of my theory. Let's again obtain a column reference, store it, and then use it to send a message.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// get a reference to a data column and then use it
col = Column( "height" );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );
col = Column( 4 );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );
col = :Name( "height" );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );
col = As Column( "height" );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Here is what I get with the first two ways.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture 3.JPG" style="width: 212px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21988i5F6E9CEB6DFD773F/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture 3.JPG" alt="Capture 3.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The first two ways seem to work as expected. Let's try the third way.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;col = :Name( "height" );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This way didn't work.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture 4.JPG" style="width: 694px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21989i68C3EE32E7BE8735/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture 4.JPG" alt="Capture 4.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;What about the last way?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;col = As Column( "height" );
type  = col &amp;lt;&amp;lt; Get Data Type;
Show( type );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I get the same error as the last time.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture 5.JPG" style="width: 695px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21990i06B20AC5CF187DEB/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture 5.JPG" alt="Capture 5.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;It is clearly time to revise my theory. (And maybe to confide in the JMP developers.) My theory is now that&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;:height&lt;/STRONG&gt;, &lt;STRONG&gt;Column( "height" )&lt;/STRONG&gt;, &lt;STRONG&gt;Column( 4 )&lt;/STRONG&gt;, &lt;STRONG&gt;:Name( "height" )&lt;/STRONG&gt;, and &lt;STRONG&gt;As Column( "height" )&lt;/STRONG&gt; all work or act as valid a column reference.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Column( "height" )&lt;/STRONG&gt; and &lt;STRONG&gt;Column( 4 )&lt;/STRONG&gt; are functions that return a column reference.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;:height&lt;/STRONG&gt;, &lt;STRONG&gt;:Name( "height" )&lt;/STRONG&gt;, and &lt;STRONG&gt;As Column( "height" )&lt;/STRONG&gt; are &lt;STRONG&gt;not&lt;/STRONG&gt; functions that return a column reference.&lt;/LI&gt;
&lt;LI&gt;As &lt;STRONG&gt;Column()&lt;/STRONG&gt; is an alias for the colon ("&lt;STRONG&gt;:&lt;/STRONG&gt;") scoping operator, as seen in &lt;STRONG&gt;:height&lt;/STRONG&gt;, which both return the value of the current row if used in an assignment.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So what is my recommendation?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use&amp;nbsp;&lt;STRONG&gt;:height&lt;/STRONG&gt;, &lt;STRONG&gt;Column( "height" )&lt;/STRONG&gt;, &lt;STRONG&gt;Column( 4 )&lt;/STRONG&gt;, &lt;STRONG&gt;:Name( "height" )&lt;/STRONG&gt;, or&amp;nbsp;&lt;STRONG&gt;As Column( "height" )&lt;/STRONG&gt;&amp;nbsp; as a column reference.&lt;/LI&gt;
&lt;LI&gt;Use &lt;STRONG&gt;Column( "height" )&lt;/STRONG&gt; or &lt;STRONG&gt;Column( 4 )&lt;/STRONG&gt; functions to get a column reference.&lt;/LI&gt;
&lt;LI&gt;Do not use &lt;STRONG&gt;:height&lt;/STRONG&gt;, &lt;STRONG&gt;:Name( "height" )&lt;/STRONG&gt;, or &lt;STRONG&gt;As Column( "height" )&lt;/STRONG&gt; to get a column reference.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;I hope that this adaptation (abomination?) of the scientific method helped to clarify how column references can be used in JMP scripting. I hope that you follow the recommendations and avoid further confusion and frustration.&lt;/P&gt;</description>
      <pubDate>Tue, 03 Mar 2020 17:25:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/When-is-a-column-not-a-column/ba-p/249835</guid>
      <dc:creator>markbailey</dc:creator>
      <dc:date>2020-03-03T17:25:27Z</dc:date>
    </item>
    <item>
      <title>Visualizing the point(s) as the plot thickens</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Visualizing-the-point-s-as-the-plot-thickens/ba-p/249442</link>
      <description>&lt;P&gt;Visualization is crucial throughout the process of data analysis, from initial exploration through communication of important findings and insights. We discover patterns, uncover lurking relationships, and communicate visually.&lt;/P&gt;
&lt;P&gt;With high-dimensional data — that is, data tables with many columns and rows — it can be challenging to create graphs that summarize the data enough to reveal overall patterns and also show the scale and extent of the variability in the data. Let’s consider some of the ways of balancing these demands.&lt;/P&gt;
&lt;P&gt;To illustrate, we will look at some airline departure and arrival data for all US domestic flights in March, 2019. The data table is provided with my book &lt;A href="https://www.sas.com/store/books/categories/usage-and-reference/practical-data-analysis-with-jmp-third-edition/prodBK_73374_en.html" target="_self"&gt;Practical Data Analysis with JMP, 3rd Ed&lt;/A&gt;. The full data table contains 38 columns and over 632,000 rows. First, we consider arrival delays, reported in minutes. In Graph Builder, we drag the &lt;STRONG&gt;ArrDelay&lt;/STRONG&gt; column to the Y drop zone and produce the default graphic, an outlier boxplot.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_0-1583181197556.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22073iBC5A871EC2619739/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_0-1583181197556.png" alt="rcarver_0-1583181197556.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This plot shows a highly right-skewed distribution of delays, with a median near zero. Perhaps 50% of flights arrive ahead of schedule, and 75% have only modest delays. Checking the 5 Number summary box tells us more, and one might wonder about the maximum value of 1,928 minutes, or a 32-hour delay.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_1-1583181197559.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22072iDA49F7BDF703F797/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_1-1583181197559.png" alt="rcarver_1-1583181197559.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The upper whisker in an outlier boxplot is constructed at Q3 + 1.5*(Interquartile range), which in this case is 31.5 + 1.5(21) = 37.5. A large, but indeterminate number of observations lie above 37 minutes. If we use the Arrow tool to select the points above the whisker, we learn that there are nearly 54,000 outliers, but in this initial rendering of the graph, we see a dark line with some attenuated points at the higher values.&lt;/P&gt;
&lt;P&gt;A bigger issue is that the outliers can visually dwarf the fact that the large majority of flights arrived within a few minutes of their scheduled times. If our priority is to communicate the center and shape of the distribution, we might prefer a histogram or violin plot. The latter is a Contour plot&amp;nbsp;option&lt;SPAN style="font-family: inherit;"&gt;. Here are the two graphs side by side.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_3-1583181197566.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22075i61D9FFB4922DDFA3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_3-1583181197566.png" alt="rcarver_3-1583181197566.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_4-1583181197573.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22076i51D48472340134AB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_4-1583181197573.png" alt="rcarver_4-1583181197573.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;These visualizations highlight the location and shape of the entire distribution, without overemphasizing the outlying points. On the other hand, they really don’t show any of the data points at all.&lt;/P&gt;
&lt;P&gt;Of course, we can add every individual point to any of these plots by right-clicking on the graph and choosing Add &amp;gt; Points. Here’s the violin plot with points overlaid on the contour.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_5-1583181197575.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22077i3461D5CAA34E92D3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_5-1583181197575.png" alt="rcarver_5-1583181197575.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The problem is that there so much overplotting that most of the points are not visible. What to do?&lt;/P&gt;
&lt;P&gt;Here are five simple tactics:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1.&amp;nbsp; Divide and conquer&lt;/STRONG&gt;. Making a set of small graphs may not be your first choice, but we start with this one because it helps to more clearly illustrate the other tips. If there is excessive overplotting in an unidimensional graph, include another dimension. For example, our data contains a categorical variable identifying the principal cause of the delay &lt;EM&gt;when a delay has occurred&lt;/EM&gt;. In this dataset, only about one third of the flights were delayed, so we are seeing approximately 200,000 points rather than 600,000.&lt;/P&gt;
&lt;P&gt;Using &lt;STRONG&gt;Main Cause&lt;/STRONG&gt; as a grouping variable helps to identify the underlying dynamic reasons for variation in delays and it also more clearly displays the individual data values. For example, it’s immediately clear that most delays seem to be caused by the carriers and late equipment, that the longest delays are attributable to the carrier, and that Security delays are rare and brief.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_6-1583181197601.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22079i6D42762DEDFF65C4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_6-1583181197601.png" alt="rcarver_6-1583181197601.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that in this rendering, the points are no longer aligned vertically, but have been &lt;EM&gt;jittered. &lt;/EM&gt;That is, they have been repositioned slightly left and right to put white space between them. This bring us to the second tactic.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2.&amp;nbsp; Add or adjust jitter&lt;/STRONG&gt;. In this univariate graph, some points have been uniformly shifted to the left or right. The default jitter pattern spreads the points apart so that we can get a sense of how many flights there were at each value, but the points cover the contours.&lt;/P&gt;
&lt;P&gt;In Graph Builder, the Jitter controls provide options.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_7-1583181197603.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22078i0B9B422512A212FB/image-size/small?v=v2&amp;amp;px=200" role="button" title="rcarver_7-1583181197603.png" alt="rcarver_7-1583181197603.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_8-1583181197617.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22080i5B56F562D258C213/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_8-1583181197617.png" alt="rcarver_8-1583181197617.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_9-1583181197618.png" style="width: 200px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22081i590C63A26DC215AE/image-size/small?v=v2&amp;amp;px=200" role="button" title="rcarver_9-1583181197618.png" alt="rcarver_9-1583181197618.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If, for example, we choose &lt;STRONG&gt;Random Normal&lt;/STRONG&gt; jitter and reduce the &lt;STRONG&gt;Jitter Limit&lt;/STRONG&gt;, we can reveal the violins again:&lt;/P&gt;
&lt;P&gt;Reducing the jitter uncovers the violins, but increases overplotting. The next three tactics deal more directly to reduce the ink density. We can invoke these options by right-clicking on the black dot and &lt;STRONG&gt;Arr Delay&lt;/STRONG&gt; in the legend in the upper right of the graph.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_10-1583181197638.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22082i32EFDFE6FDE99C53/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_10-1583181197638.png" alt="rcarver_10-1583181197638.png" /&gt;&lt;/span&gt;&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-center" image-alt="rcarver_11-1583181197660.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22083iF22F8F2124FF96E8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_11-1583181197660.png" alt="rcarver_11-1583181197660.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. Use open markers&lt;/STRONG&gt;. Choose &lt;STRONG&gt;Marker &amp;gt;&lt;/STRONG&gt; and select the open circle rather than the solid dot. Now proximate points visibly overlap, rather than overlay one another.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_12-1583181197661.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22084i41470A6B2709008C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_12-1583181197661.png" alt="rcarver_12-1583181197661.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. Use smaller markers&lt;/STRONG&gt;.&amp;nbsp; Even with open markers, the density of the points leads to considerable overplotting. Sometimes simply using smaller dots leaves more white space, allowing individual points to be more visible. We do this by right clicking on the black circle in the legend and choosing &lt;STRONG&gt;Marker Size &amp;gt; 1, Small&lt;/STRONG&gt;. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_13-1583181197676.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22086iBFE17EF7191832D3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_13-1583181197676.png" alt="rcarver_13-1583181197676.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. Use translucent markers&lt;/STRONG&gt;. Open markers let us see through the center of a point, but the outline of the points is opaque. To reduce the visual confusion, we can make the points semi-transparent. Again, right-click the black circle in the legend, and choose &lt;STRONG&gt;Transparency…&lt;/STRONG&gt; to open this dialog:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rcarver_14-1583181197682.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/22085iBF5755BB30B12D49/image-size/medium?v=v2&amp;amp;px=400" role="button" title="rcarver_14-1583181197682.png" alt="rcarver_14-1583181197682.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Enter a value between 0 and 1 as indicated. Here is the result of entering 0.2, for 20% marker density.&lt;/P&gt;
&lt;P&gt;In this version, the very sparse uppermost points fade nearly into obscurity, but the abundance of points at lower values are accentuated.&lt;/P&gt;
&lt;P&gt;These five basic tactics work equally well with bi- and multi-variate plots. Here, for example, is a scatterplot of Arrival Delay vs. Departure Delay, using small open markers. To add a third dimension, we color the points according to the main cause of the delays.&lt;/P&gt;
&lt;P&gt;We now are plotting all 612,000 points, the large majority of which are quite near or below the origin. The mass of black points in the lower left are flights that arrived early or on time, and hence have no main cause of arrival delay. The comparative frequency and severity of the delays are visible by cause. More importantly, despite the thick density of the data, we can detect the overall patterns as well as the individual points.&lt;/P&gt;</description>
      <pubDate>Fri, 13 Mar 2020 20:31:07 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Visualizing-the-point-s-as-the-plot-thickens/ba-p/249442</guid>
      <dc:creator>rcarver</dc:creator>
      <dc:date>2020-03-13T20:31:07Z</dc:date>
    </item>
    <item>
      <title>Earn a JMP certification while at Discovery Summit Munich 2020</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Earn-a-JMP-certification-while-at-Discovery-Summit-Munich-2020/ba-p/247618</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="certification pin.jpg" style="width: 295px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21787i77FF5C68413B1F45/image-size/large?v=v2&amp;amp;px=999" role="button" title="certification pin.jpg" alt="Are you going to Discovery Summit Munich 2020? Take advantage of reduced rates for certifications." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Are you going to Discovery Summit Munich 2020? Take advantage of reduced rates for certifications.&lt;/span&gt;&lt;/span&gt;Have you been wanting to add a &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; certification to your belt but simply haven’t had the time? You can maximize your time and save money at Discovery Summit Munich 2020 and register for one of the three JMP certifications being offered at the conference.&lt;/P&gt;
&lt;P&gt;Validate your skills and enhance your credibility in specific areas with these certification exams. Take any of the three exams during the morning or afternoon sessions on Tuesday, 10 March.&amp;nbsp;&lt;A title="Register for JMP Certifications" href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscoverysummit.jmp%2Fen%2F2020%2Feurope%2Fmore%2Ftraining.html%23certification&amp;amp;data=02%7C01%7CBecky.Gray%40sas.com%7C9a86c9e63774411c60de08d7b15df3a8%7Cb1c14d5c362545b3a4309552373a0c2f%7C0%7C0%7C637172889407588986&amp;amp;sdata=pzQTHu2V4eJHM3NlyDrHMww2RNjy569lLGqekXmbHnE%3D&amp;amp;reserved=0" target="_blank" rel="noopener"&gt;Sign up&lt;/A&gt; for the exams when you register for the conference. As a conference attendee you’ll be able to take any of the exams for 50% off the standard price!&lt;/P&gt;
&lt;P&gt;JMP Certifications being offered include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Design and Analysis of Experiments:&lt;/STRONG&gt;&amp;nbsp;During this performance-based examination, candidates will apply the skills and knowledge necessary to design and analyze industrial experiments.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;JMP Scripting:&lt;/STRONG&gt;&amp;nbsp;During this performance-based examination, candidates will apply the skills and knowledge necessary to perform a variety of scripting and programming tasks in the JMP environment using the JMP Scripting Language (JSL).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Statistical Thinking for Industrial Problem Solving:&lt;/STRONG&gt;&amp;nbsp;During this performance-based examination, candidates will apply the skills and knowledge necessary to apply statistical thinking and fundamental statistical methods to solve industrial problems.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Learn specific details about the JMP credentials by visiting &lt;A title="SAS Global Certification" href="https://www.sas.com/en_us/certification.html" target="_blank" rel="noopener"&gt;SAS Global Certification&lt;/A&gt;. If you have questions, please contact &lt;A title="Becky Gray's email" href="mailto:becky.gray@sas.com" target="_blank" rel="noopener"&gt;Becky Gray&lt;/A&gt; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Feb 2020 18:17:47 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Earn-a-JMP-certification-while-at-Discovery-Summit-Munich-2020/ba-p/247618</guid>
      <dc:creator>Becksterg</dc:creator>
      <dc:date>2020-02-17T18:17:47Z</dc:date>
    </item>
    <item>
      <title>Importing and merging multiple XML files</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Importing-and-merging-multiple-XML-files/ba-p/244384</link>
      <description>&lt;P&gt;I wanted to use all the data from my exercise activity tracking app as part of an analysis for a blog post. So I downloaded all the data from the last six years.&lt;/P&gt;
&lt;P&gt;When I unzipped this there were 660 files -- one for each logged activity:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture1.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21447i0D44E996DCA9AD90/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Picture1.png" alt="Picture1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;And they were all XML file format. I had never worked with XML before. For my analysis, I would need to get each file into &lt;A href="http:?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; data table format and then stack them all into a single JMP table.&lt;/P&gt;
&lt;P&gt;So it is great that there is a new XML Import Wizard in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;. Even better, you can copy the settings from the wizard and use them to import all the files in a folder into a single JMP table in one step. Let me show you how...&lt;/P&gt;
&lt;P&gt;First of all, your files will all need to have the *.xml file extension. My files had a different extension. There are tools available outside of JMP for changing the file extension for multiple files, if you have this same problem.&lt;/P&gt;
&lt;P&gt;Next, in JMP, File &amp;gt; Open and navigate to the folder where you have your XML files. Change the file type to XML Data Files (*.xml):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture2.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21449iB0C6898B0AFD9015/image-size/large?v=v2&amp;amp;px=999" role="button" title="Picture2.png" alt="Picture2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now, click on a single file to select it. Make sure you have Open as Data (Using Preview) selected:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture3.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21450i8D9CB6538A50A1E4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Picture3.png" alt="Picture3.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click Open.&lt;/P&gt;
&lt;P&gt;The XML Import Wizard will launch. Having never worked with XML before I didn't know what to do here at first. But it didn't take me long to figure it out by trying a few clicks. The wizard can make some guesses at the structure of the data. And you can see whether the settings are right with the Import Preview. You can also change the Column Names that you will have in the resulting JMP table.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Picture4.png" style="width: 960px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21511i3211278F3327BF92/image-size/large?v=v2&amp;amp;px=999" role="button" title="Picture4.png" alt="Picture4.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;(I have obscured some of the details in the data here because you don't need to know exactly where I was on the 4th April 2014!) &lt;/P&gt;
&lt;P&gt;Now, click OK and you should have a nicely formatted JMP data table, which&amp;nbsp;is great if you just want to import a single XML file. But I didn't want to repeat this manual process for all 660 files. This is the really nice bit...&lt;/P&gt;
&lt;P&gt;Right-click on the Source script in the data table and Edit. Now, copy the XML settings from the script:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture5.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21452i89026A6AE94A04DC/image-dimensions/750x465?v=v2" width="750" height="465" role="button" title="Picture5.png" alt="Picture5.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In your clipboard, you now have the instructions for importing any of the XML files in your folder (assuming they have the same structure).&lt;/P&gt;
&lt;P&gt;Now, File &amp;gt; Import Multiple Files. Click on the |...| button to select your folder of XML files:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture6.png" style="width: 889px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21453i26BA40FE99F85998/image-dimensions/889x168?v=v2" width="889" height="168" role="button" title="Picture6.png" alt="Picture6.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You could also use the "Select files by..." options to filter out certain files, if required.&lt;/P&gt;
&lt;P&gt;Click Settings and paste the XML settings into the Script box in the XML tab:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture7.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/21454iC41839123D270C46/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Picture7.png" alt="Picture7.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;At this point, I kept Stack Similar Files option checked to bring all the files together into a single JMP data table.&lt;/P&gt;
&lt;P&gt;All you need to do now is click Import, and you will have your data in JMP ready to explore!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2020 07:04:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Importing-and-merging-multiple-XML-files/ba-p/244384</guid>
      <dc:creator>Phil_Kay</dc:creator>
      <dc:date>2020-02-04T07:04:20Z</dc:date>
    </item>
    <item>
      <title>Removing white space from control charts</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Removing-white-space-from-control-charts/ba-p/235740</link>
      <description>&lt;P&gt;Do you have excluded observations in your data? Are you using the Local Data Filter? Are there large white spaces in your control chart that you would like to remove for a cleaner look?&amp;nbsp;&lt;FONT face="arial,helvetica,sans-serif" color="#000000"&gt;If you have JMP 14 or later,&amp;nbsp;you can use the “Show Excluded Region” command.&lt;SPAN style="margin: 0px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;This command shows or hides the regions of the chart where samples have been excluded.&lt;/P&gt;
&lt;H3&gt;Example&lt;/H3&gt;
&lt;P&gt;Open Socket Thickness.jmp found in the Quality Control sample data folder and run the script attached to the data table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Socket Thickness.jmp");
dt&amp;lt;&amp;lt;run script("Control Chart Builder");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="thicknessReport.png" style="width: 563px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20404i05C6E755F7F5FBAB/image-size/large?v=v2&amp;amp;px=999" role="button" title="thicknessReport.png" alt="thicknessReport.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The result is a graph that shows how your process is doing overall. For each cavity and hour, Thickness measurements are plotted. Each cavity has its own set of control limits. This enables you to do easy comparisons across groups.&lt;/P&gt;
&lt;P&gt;Suppose you are concerned only with Cavity 4. You think that Cavity 4 is not producing the results it should be.&amp;nbsp; Rather than starting from scratch, you can add the Local Data Filter to the report. Click on the red triangle next to Control Chart Builder and select Local Data Filter. Select Cavity and click on +. Select 4.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ldf.png" style="width: 755px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20405i83AF5EAB9C20F43A/image-dimensions/755x391?v=v2" width="755" height="391" role="button" title="ldf.png" alt="ldf.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;While this does give us what we want, the graph of interest is very small, and there is a lot of white space. To view only the data from Cavity 4 with no white space, from the red triangle next to Control Chart Builder, deselect “Show Excluded Region”.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="showexcludedregion.png" style="width: 577px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20406iD16AAD7C648DA988/image-size/large?v=v2&amp;amp;px=999" role="button" title="showexcludedregion.png" alt="showexcludedregion.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This removes the white space from the graph. You get a cleaner look at the data from only Cavity 4 so that you can do further investigation.&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;“Show Excluded Region” shows or hides the region of the chart where samples have been excluded. This can be useful when you are using the Local Data Filter, as well as when there are excluded observations in your data. Use this option to remove white space from your graph.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Jan 2020 18:50:04 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Removing-white-space-from-control-charts/ba-p/235740</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2020-01-14T18:50:04Z</dc:date>
    </item>
    <item>
      <title>Control Chart automatic sorting blues</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Control-Chart-automatic-sorting-blues/ba-p/235499</link>
      <description>&lt;P&gt;Control charts are a way of studying process changes over time. Hence the data is plotted in time order. When &lt;A href="https://community.jmp.com/t5/JMP-Blog/Control-Charts-are-easy-in-JMP-10/ba-p/30100" target="_self"&gt;Control Chart Builder&lt;/A&gt; was introduced in JMP 10, this became easier because JMP sorted the data for you prior to creating the chart. In the legacy control chart platforms, you had to sort the data, prior to creating the control chart. However, there are some cases in which this sorting does not fit the data.&amp;nbsp;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; introduces the option “Sort by row order”. This option sorts the subgroup and phase variables by the occurrence in the data table.&lt;/P&gt;
&lt;H3&gt;Example&lt;/H3&gt;
&lt;P&gt;As an example, open Braces.jmp found in the Quality Control sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Quality Control/Braces.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Notice that although the first column is Date, the format is not one in which JMP supports as a date/time format. The modeling type for this column is nominal rather than date/time. First, let’s create a U Chart using the legacy control charts. Go to Analyze-&amp;gt;Quality and Process-&amp;gt;Legacy Control Charts-&amp;gt;U.&amp;nbsp; Specify # defects as Process, Date as Sample Label, and Unit size as Unit Size.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LegacyDialog.png" style="width: 502px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20380i93E94A13ED58EEB5/image-size/large?v=v2&amp;amp;px=999" role="button" title="LegacyDialog.png" alt="LegacyDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LegacyReport.png" style="width: 472px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20381i13C0667714872514/image-size/large?v=v2&amp;amp;px=999" role="button" title="LegacyReport.png" alt="LegacyReport.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice that there was no sorting of the x axis. The 25 rows of the data table are plotted in the order in which they occurred in the data table. This is the proper order for this data. 10FEB80 comes before 12FEB80 and the last x axis label shown is 12MAR80.&lt;/P&gt;
&lt;P&gt;Let’s compare this to Control Chart Builder. Select Analyze-&amp;gt;Quality and Process-&amp;gt;Control Chart-&amp;gt;U Control Chart. &lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: Arial,Helvetica,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 27.42px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;New for &lt;/SPAN&gt;&lt;A style="background-color: transparent; box-sizing: border-box; color: #0072bc; font-family: Arial,Helvetica,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: underline; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px; padding: 0px;" href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html" target="_self"&gt;Version 15&lt;/A&gt;&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: Arial,Helvetica,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 27.42px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;, the first 9 options under the Control Chart menu are dialogs that launch the Control Chart Builder platform.&lt;/SPAN&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CCBDialogs.png" style="width: 237px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20382i1ECEAC5AA88A6A9A/image-size/large?v=v2&amp;amp;px=999" role="button" title="CCBDialogs.png" alt="CCBDialogs.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Specify # defects as Y, Date as Subgroup, and Unit size as n Trials.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CCBUDialog.png" style="width: 476px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20383i73BAEA25A8B08E84/image-size/large?v=v2&amp;amp;px=999" role="button" title="CCBUDialog.png" alt="CCBUDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CCBReport.png" style="width: 578px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20384iCC9DB09C0A61EEDD/image-size/large?v=v2&amp;amp;px=999" role="button" title="CCBReport.png" alt="CCBReport.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice this is not the same control chart that we got with the legacy platform. On the x axis, 01MAR80 comes before 26FEB80. The modeling type of Date was nominal. Therefore, this variable is going to be sorted in alphabetical order. Since 01 comes before 26, a date of 01MAR80 comes before a date for 26FEB80.&amp;nbsp; Looking back at the data table, we see that the data is already sorted in the desired order. This is common for control chart data as sometimes the data comes directly from measuring instruments recording data in a sequence.&amp;nbsp; From the red triangle next to Control Chart Builder, select Sort by row order.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sortbyroworder.png" style="width: 578px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20385iB458BABABC2F491B/image-size/large?v=v2&amp;amp;px=999" role="button" title="sortbyroworder.png" alt="sortbyroworder.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The Sort by row order option gives you the desired control chart that matches the legacy control chart platform. Date is sorted by the order in which it occurred in the data table.&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;When your data is already sorted in the desired order for a control chart, you can use the "Sort by row order" option to avoid the automatic sorting done by the Control Chart Builder platform.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2019 13:56:39 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Control-Chart-automatic-sorting-blues/ba-p/235499</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2019-12-12T13:56:39Z</dc:date>
    </item>
    <item>
      <title>Modernizing the Distribution platform – Capability analysis</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Capability-analysis/ba-p/233386</link>
      <description>&lt;P&gt;The Distribution platform is one of the most widely used in JMP.&amp;nbsp; This platform is not only used for testing which distribution fits your data. It is also used for data exploration, capability analysis, and more. Distribution has been around since the first version of JMP, and it was time for a modernization.&amp;nbsp;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; has delivered the modernization of this commonly used platform.&lt;/P&gt;
&lt;P&gt;My first &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-New-Fitters/ba-p/232749" target="_self"&gt;blog post&lt;/A&gt; was about the new fitters in JMP 15. The second &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-Comparing-Distributional/ba-p/232929" target="_self"&gt;blog post&lt;/A&gt; detailed comparing distribution fits. The third &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-Options-for-Fitted/ba-p/233180" target="_self"&gt;blog post&lt;/A&gt; covered the new options for fitted distributions. This blog post discusses the new capability options in the Distribution platform.&lt;/P&gt;
&lt;H3&gt;History&lt;/H3&gt;
&lt;P&gt;The &lt;A href="https://community.jmp.com/t5/JMP-Blog/Process-Capability-in-JMP-12/ba-p/30598?_ga=2.193042733.1877322057.1573475888-544805019.1517854372" target="_self"&gt;Process Capability&lt;/A&gt; platform was introduced in JMP 12. Parts of this new platform were added to Control Chart Builder in JMP 12 when the platform was introduced. Now, with &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;, parts of the platform have been added to the distribution platform. This not only makes the platforms easier to maintain but also consistent with each other.&lt;/P&gt;
&lt;H3&gt;Launch Changes&lt;/H3&gt;
&lt;P&gt;There are several differences that happen around the launch of a distribution report. 1) The histogram only shows spec limits if “Show as Graph Reference Lines” is checked in the Spec Limits column properties. 2) The ability to disable the capability analysis even if there are spec limit column properties. 3)&amp;nbsp; If there is a process capability distribution column property, that distribution will be used for the capability analysis.&lt;/P&gt;
&lt;P&gt;As an example, open Process Measurements.jmp found in the sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt=Open("$SAMPLE_DATA/Process Measurements.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Run the following JSL to set up column properties so that we can investigate these new features.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Column(dt, "Process 2")&amp;lt;&amp;lt;Set Property(
			"Spec Limits",
			{LSL( 5 ), USL( 17 ), Target( 10 ), Show Limits( 1 )}
		);
Column(dt, "Process 3")&amp;lt;&amp;lt;Set Property(
			"Process Capability Distribution",
			Process Capability Distribution( Weibull )
		);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;For Process 2, the JSL above sets the Spec Limits column property as LSL=5, Target=10, and USL=17 with show limits (Show as Graph Reference Lines) turned on. For Process 3, the JSL above sets the Process Capability Distribution property as Weibull.&lt;/P&gt;
&lt;P&gt;Select Analyze-&amp;gt;Distribution and Specify Process 1, Process 2, and Process 3 as Y, Columns.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CapabilityNoCheck.png" style="width: 486px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20268i9D128109BB175864/image-size/large?v=v2&amp;amp;px=999" role="button" title="CapabilityNoCheck.png" alt="CapabilityNoCheck.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Notice the new check box in the lower left corner (“Create Process Capability”). This check box only appears if at least one Y, Column has a Spec Limits column property. Uncheck this box and click OK.&lt;/P&gt;
&lt;P&gt;In previous versions of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7011O000002OuZY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt;, which did not have this “Create Process Capability” check box, you would get capability analysis for each of these three processes. Additionally, there would be spec limits drawn in each of the three histograms since each column contains a Spec Limits column property.&amp;nbsp; In JMP 15, you get the following output:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="outputcapabilitynocheck.png" style="width: 770px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20270i64D5292A711069E3/image-size/large?v=v2&amp;amp;px=999" role="button" title="outputcapabilitynocheck.png" alt="outputcapabilitynocheck.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;No capability analysis is given for any of the process variables. Only Process 2 contains spec limits on the histogram because it was the only process variable that had “Show as Graph Reference Lines” checked in the Spec Limit column property.&lt;/P&gt;
&lt;P&gt;Now, check the box, "Create Process Capability" and compare the output. Go to Analyze-&amp;gt;Distribution. Click Recall.&amp;nbsp; Check the box for “Create Process Capability”. Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capabilitychecked.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20271i8DCC130EE859E3AA/image-size/large?v=v2&amp;amp;px=999" role="button" title="capabilitychecked.png" alt="capabilitychecked.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Capability analysis is given for all three process variables. In the main histogram (top), Spec limits are shown only for Process 2. The capability analysis for Process 3 is based on the Weibull distribution because Process 3 had a Weibull Process Capability Distribution column property.&lt;/P&gt;
&lt;H3&gt;Capability Report&lt;/H3&gt;
&lt;P&gt;The capability report looks the same and has the same options as the report you would get using the Individual Detail Reports option in &lt;A href="https://community.jmp.com/t5/JMP-Blog/Process-Capability-in-JMP-12/ba-p/30598?_ga=2.193042733.1877322057.1573475888-544805019.1517854372" target="_self"&gt;Process Capability&lt;/A&gt;. Not only did this allow us to make things more consistent and easier to maintain, but we were also able to complete some user requests.&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ppk labeling is now the default labeling for the Overall Sigma Capability report (as seen in the previous image).&lt;/LI&gt;
&lt;LI&gt;The report now always shows both the Within and Overall Sigma Capability indices when a normal distribution is assumed (as seen in the previous image).&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Capability commands when there are no spec limit column properties&lt;/H3&gt;
&lt;P&gt;Just as in the older version of the Distribution platform, there are two different ways of accessing capability analysis when there are no spec limit column properties. Open Thickness.jmp found in the Quality Control sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Distribution. Select Thickness 03 and Thickness 04 as Y, Columns and click OK. Click on the red triangle next to Thickness 03 and choose Process Capability.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capNormalDialog.png" style="width: 325px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20272i69DB1991C5D294BC/image-size/large?v=v2&amp;amp;px=999" role="button" title="capNormalDialog.png" alt="capNormalDialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These options are available in the &lt;A href="https://community.jmp.com/t5/JMP-Blog/Process-Capability-in-JMP-12/ba-p/30598?_ga=2.193042733.1877322057.1573475888-544805019.1517854372" target="_self"&gt;Process Capability&lt;/A&gt; platform. The dialogs are simply arranged differently.&lt;/P&gt;
&lt;P&gt;The other method of obtaining a capability analysis is through a fitted distribution. Click on the red triangle next to Thickness 04 and select Continuous Fit-&amp;gt;Fit Beta. Now click on the red triangle next to Fitted Beta Distribution and select Process Capability. The capability dialog looks the same as the above image with one additional section.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="quantilespec.png" style="width: 365px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20273i4A5E57066558970C/image-size/large?v=v2&amp;amp;px=999" role="button" title="quantilespec.png" alt="quantilespec.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;These options replace the Quantiles and Set Spec Limits for K Sigma options found in previous versions of the distribution platform. The quantile options enable you to enter the probability associated with the quantile of the fitted distribution to calculate specification limits. The second method allows you to enter a K-Sigma multiplier value that is used to calculate the specification limits. Using the previous example, select the option “Enter Sigma Multiplier to Calculate Quantile Spec Limits”. Click the Calculate Spec Limits button to calculate the spec limits for 3-Sigma. Notice that the 3-Sigma values are filled in for LSL (0.042954) and USL (0.069226). Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="betacapability.png" style="width: 651px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20274i230CBCB9B2DCC97A/image-size/large?v=v2&amp;amp;px=999" role="button" title="betacapability.png" alt="betacapability.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This new method allows easier scripting of the Quantiles option. Previously, you had to fit a distribution, get the quantiles, and pass them back to the platform (requires two calls to Distribution). Now you can do this in a single JSL call to Distribution.&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Ability to create histograms without the spec limits.&lt;/LI&gt;
&lt;LI&gt;Ability to create a distribution report without capability analysis.&lt;/LI&gt;
&lt;LI&gt;The Process Capability Distribution column property is used for capability analysis.&lt;/LI&gt;
&lt;LI&gt;Easier scripting of the Quantiles option for fitted distributions.&lt;/LI&gt;
&lt;LI&gt;Normal and non-normal capability analysis uses similar dialogs and output.&lt;/LI&gt;
&lt;LI&gt;Consistency between platforms.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Did you miss any of the previous posts on the modernized Distribution platform? You can find all posts in the series &lt;A href="https://community.jmp.com/t5/tag/Modernizing%20Distribution/tg-p/board-id/jmper-cable" target="_self"&gt;here&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2019 15:00:11 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Capability-analysis/ba-p/233386</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2019-12-04T15:00:11Z</dc:date>
    </item>
    <item>
      <title>Modernizing the Distribution platform – Options for fitted distributions</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Options-for-fitted/ba-p/233180</link>
      <description>&lt;P&gt;The Distribution platform is one of the most widely used platforms in JMP. This platform is not only used for testing which distribution fits your data, it is used for data exploration, capability analysis, and so much more. This platform has been around since the first version of JMP and it was time for a modernization.&amp;nbsp;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; has delivered the modernization of this commonly used platform.&lt;/P&gt;
&lt;P&gt;My first &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-New-Fitters/ba-p/232749" target="_self"&gt;blog post&lt;/A&gt; detailed the new fitters in JMP 15. The second &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-Comparing-Distributional/ba-p/232929" target="_self"&gt;blog post&lt;/A&gt; detailed comparing distribution fits. This blog post details the new options available for fitted distributions.&lt;/P&gt;
&lt;H3&gt;Diagnostic Plots&lt;/H3&gt;
&lt;P&gt;The diagnostic plot has been replaced with two new plots (QQ and PP plots). The quantile-quantile (QQ) plot shows the relationship between the observations and the quantiles obtained using the estimated parameters. The percentile-percentile (PP) plot shows the relationship between the empirical cumulative distribution function (CDF) and the fitted CDF obtained using the estimated parameters.&lt;/P&gt;
&lt;P&gt;To see an example of these plots, open Braces.jmp found in the Quality Control sample data folder.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Open("$SAMPLE_DATA/Quality Control/Braces.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Distribution.&amp;nbsp; Specify # defects as Y, Columns and click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fitoptionsdialog.png" style="width: 484px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20220i563ED8B5E6884B16/image-size/large?v=v2&amp;amp;px=999" role="button" title="fitoptionsdialog.png" alt="fitoptionsdialog.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;From the red triangle next to # defects, select Discrete Fit-&amp;gt;Fit Negative Binomial. From the red triangle next to Fitted Negative Binomial Distribution, choose QQ Plot and PP Plot.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="QQPlot.png" style="width: 433px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20221i0D6B25357AA8AED0/image-size/large?v=v2&amp;amp;px=999" role="button" title="QQPlot.png" alt="QQPlot.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PPPlot.png" style="width: 436px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20222iB451A9F132F4D1DC/image-size/large?v=v2&amp;amp;px=999" role="button" title="PPPlot.png" alt="PPPlot.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;For the QQ Plot, most observations fall close to the diagonal line. The last point is questionable. If the two sets (fitted negative binomial quantiles and the # defects) come from the same distribution, the points should fall approximately along the reference line. The PP plot has a similar interpretation. The points in the PP plot fall approximately along the reference line indicating that the Negative Binomial fitted CDF and the empirical CDF come from a population with the same distribution.&lt;/P&gt;
&lt;H3&gt;Profilers&lt;/H3&gt;
&lt;P&gt;Two Profilers have been added. The Distribution Profiler is a Prediction Profiler of the cumulative distribution function (CDF). The Quantile Profiler is a prediction profiler of the quantile function.&lt;/P&gt;
&lt;P&gt;Using the previous example, choose Distribution Profiler and Quantile Profiler from the red triangle menu next to Fitted Negative Binomial Distribution.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="distributionprofiler.png" style="width: 316px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20223i9CB13C40DB6E24BD/image-size/large?v=v2&amp;amp;px=999" role="button" title="distributionprofiler.png" alt="distributionprofiler.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="quantileprofiler.png" style="width: 316px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20224iC32DC40EDAAE9EA2/image-size/large?v=v2&amp;amp;px=999" role="button" title="quantileprofiler.png" alt="quantileprofiler.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If the data follow the fitted negative binomial distribution, the Distribution Profiler shows that the probability of getting 27 defects or fewer is .896934 (~90%). The Quantile Profiler gives the inverse of the Distribution Profiler. For this example, the probability that we get seven or fewer defects is .1 or 10%. The Profilers are interactive. You can move the slider around to determine what the probability would be for various numbers of defects.&lt;/P&gt;
&lt;H3&gt;Save Columns&lt;/H3&gt;
&lt;P&gt;Two new save column features have been added. Save Distribution Formula saves a column to the data table that contains the cumulative distribution function (CDF) formula computed using the estimated parameter values. Save Simulation Formula saves a column to the data table that contains a formula that generates simulated values using the estimated parameters. This column can be used in the Simulate utility.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="saveColumns.png" style="width: 415px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20225i84008998FC12CF64/image-size/large?v=v2&amp;amp;px=999" role="button" title="saveColumns.png" alt="saveColumns.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Goodness of Fit&lt;/H3&gt;
&lt;P&gt;The goodness of fit test has been standardized to the Anderson-Darling for continuous fits and the Pearson Chi-Squared test for discrete fits. The Pearson Chi-Square test has improved bin creations. &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7011O000002OuZY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt; now satisfies the rule of thumb that there are at least five expected observations in each bin.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AD.png" style="width: 254px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20226iD1074617F09A8F95/image-size/large?v=v2&amp;amp;px=999" role="button" title="AD.png" alt="AD.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;For the previous example, click on the red triangle next to Fitted Negative Binomial Distribution and choose Goodness of Fit.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pearsonex.png" style="width: 316px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20227iE3A1492C3E04EB63/image-size/large?v=v2&amp;amp;px=999" role="button" title="pearsonex.png" alt="pearsonex.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The p-value is 0.4971. At any meaningful alpha level, we fail to reject the null hypothesis that the data are from the Negative Binomial distribution.&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;QQ Plots&lt;/LI&gt;
&lt;LI&gt;PP Plots&lt;/LI&gt;
&lt;LI&gt;Distribution Profiler&lt;/LI&gt;
&lt;LI&gt;Quantile Profiler&lt;/LI&gt;
&lt;LI&gt;Save Distribution Formula&lt;/LI&gt;
&lt;LI&gt;Save Simulation Formula&lt;/LI&gt;
&lt;LI&gt;Anderson-Darling&lt;/LI&gt;
&lt;LI&gt;Pearson Chi-Square improved binning&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These three blog posts only scratch the surface of the &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt; new features in the Distribution platform. Look for my next blog post in which I detail new capability options in the Distribution platform.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Dec 2019 12:57:22 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Options-for-fitted/ba-p/233180</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2019-12-02T12:57:22Z</dc:date>
    </item>
    <item>
      <title>What’s the point? Just pointing at something tells you about what you are pointing at</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/What-s-the-point-Just-pointing-at-something-tells-you-about-what/ba-p/233641</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In magical tales like the Harry Potter series, wizards can just&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;point at something with their wand, speak an incantation, and&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;magic happens. We do something very similar when we point&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the cursor at something on our screens, and without even&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;an incantation or a click, magic happens. That is our world of&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html#informative-decoration" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;tooltips or hover windows&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Identify points&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Graphs of points in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; are incredibly valuable in seeing&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the distribution of points over two dimensions. But when&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;you see a point that is far apart from the rest of the data&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;–&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;an outlier&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;–&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;you want to identify that point. By hovering the&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;cursor over the point, a hover window appears showing&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;which point that is, plus you can click to select the point in&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the table to investigate further.&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;From the time JMP was first released, hovering your cursor&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;over a point in a graph has brought up a small text window&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;identifying a point. In the first version of JMP, it just showed&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the row number. But we&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;’&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;ve continued to add information&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;and functionality with subsequent versions: the row number&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;and any column values given the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;“&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Label&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;”&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;attribute; the&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;values corresponding to the coordinates; the ability to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;“&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;pin&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;”&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the hover label to the graph persistently; label columns that&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;allow images in the hover label window; an option to use&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the images as markers. But with&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;JMP 15&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;there is much more.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;What’s new&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;JMP 15 introduces far more powerful hover windows&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;–&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;graphlets. They are built in to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;a number of&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;platforms&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;where points represent many values and can be used in&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;a customization setting for almost any graph, providing&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;drill-down features.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Process Screening&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/applications/quality-reliability-six-sigma.html#Process-Screening" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Process Screening&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;, you can see the health of many&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;processes in one Process Performance Plot. In Figure 1,&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;one process is healthy, the others are incapable, and&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Thickness 4 is unstable as well. To find out more about&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the instability, hover over that point and a hover window&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;appears, showing a small graph of the process. Hovering&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;is a lot easier than selecting the point and requesting a&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;quick graph or control chart of that process.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 1: Process Screening" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20294i74AE540BFEF0DBC6/image-size/large?v=v2&amp;amp;px=999" role="button" title="1_ProcessScreening_PerformanceGraph.png" alt="Figure 1: Process Screening" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 1: Process Screening&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Functional Data Explorer&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html#functional-data-explorer-enhancements" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Functional Data Explorer&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;characterizes many&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;trajectories using functional principal components.&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Figure 2 is a score plot of the temperature functions of&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;16 US weather stations. To determine what&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;’&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;s going on&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;with the score space, points in the four areas have their&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;hover windows pinned. The first component on the X&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;axis is basically how extreme the winter is, while the&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;second component, with less than 5% of the variation,&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;involves the shape of the seasons.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 2: Functional Data Explorer" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20295iA029BE3F63E601B7/image-size/large?v=v2&amp;amp;px=999" role="button" title="2_FunctionalDataExplorer_ScorePlot.png" alt="Figure 2: Functional Data Explorer" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 2: Functional Data Explorer&lt;/span&gt;&lt;/span&gt;&lt;/H3&gt;
&lt;H3&gt;Multivariate Control Chart&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In the new&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html#model-driven-multivariate-control-chart" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Model Driven Multivariate Control Chart&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;(Figure 3), the fact that a point is far out doesn&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;’&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;t explain&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;which process is involved in it being extreme. By&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;hovering over the point, the individual differences&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;are shown&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;–&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;in this case, Process 6 is implicated.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt; &lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 3: Model Driven Multivariate Control Chart" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20296iC6C0EE42C846767E/image-size/large?v=v2&amp;amp;px=999" role="button" title="3_PCA_ModelDriven_Multivariate_ControlChart.png" alt="Figure 3: Model Driven Multivariate Control Chart" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 3: Model Driven Multivariate Control Chart&lt;/span&gt;&lt;/span&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Custom graphlets&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Figure 4 shows the mean violent crime rate for each state&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;over years, but it doesn&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;’&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;t show the trajectory. To see that, I&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;made a separate Graph Builder showing the violent rate&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;by year. Next I copied script to clipboard, then went to&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;the original graph and right-clicked on Paste&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html#informative-decoration" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Graphlet&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Now when I hover over a point, it makes the graph of&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;that state by year, in this case detailing Virginia.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt; &lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 4: Custom graphlets" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20297iF0C0B23D136594D2/image-size/large?v=v2&amp;amp;px=999" role="button" title="4_Graphlet_CrimeData.png" alt="Figure 4: Custom graphlets" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 4: Custom graphlets&lt;/span&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Further customization&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Once you make a graphlet, you can customize its&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;features in a Hover Label Editor. The Graphlet panel&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;seen in Figure 5 shows the script that is run on the&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;subset represented in the point.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Gridlet&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;provides&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;control over which elements are shown in the hover&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;window.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Textlet&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;allows you to customize the text,&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;including the markups to stylize the text.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 5: Graphlet Hover Label Editor" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20298iAC2288623662978F/image-size/large?v=v2&amp;amp;px=999" role="button" title="5_Graphlet_HoverLabelEditor.png" alt="Figure 5: Graphlet Hover Label Editor" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Figure 5: Graphlet Hover Label Editor&lt;/span&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Good software can make things so easy that it seems like all&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;you&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;have to&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;do is point a wand (or cursor) at something,&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;and magic happens.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you want to see&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable"&gt;&lt;SPAN&gt;JMP 15&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable"&gt;JMP Pro 15&amp;nbsp;&lt;/A&gt;in action, the JMP R&amp;amp;D leadership team and I gave this&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.jmp.com/t5/Discovery-Summit-Tucson-2019/Import-Understand-Communicate-John-Sall/ta-p/229533" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable"&gt;&lt;SPAN&gt;presentation&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;at Discovery Summit Tucson 2019.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Nov 2019 14:02:38 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/What-s-the-point-Just-pointing-at-something-tells-you-about-what/ba-p/233641</guid>
      <dc:creator>John_Sall</dc:creator>
      <dc:date>2019-11-14T14:02:38Z</dc:date>
    </item>
    <item>
      <title>Modernizing the Distribution platform – Comparing distributional fits in JMP 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Comparing-distributional/ba-p/232929</link>
      <description>&lt;P&gt;Distribution is one of the most widely used platforms in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt;, and it has been around since the first version of JMP. It's useful for all sorts of things, including data exploration, capability analysis – and, of course, testing which distribution fits your data. But it was time to modernize Distribution, and that is what you see in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;, the latest version of our software.&lt;/P&gt;
&lt;P&gt;My previous &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Modernizing-the-Distribution-platform-New-Fitters/ba-p/232749" target="_self"&gt;post&lt;/A&gt; details the new fitters available in Distribution in JMP 15. This post details how those fits can be compared.&lt;/P&gt;
&lt;H3&gt;Comparing Distributions&lt;/H3&gt;
&lt;P&gt;After fits have been selected, a Compare Distributions report is added. In previous versions of JMP, you only got a Compare Distributions report when using the All option under Continuous Fit. Now, you get this report after selecting any distribution. As distributions are added to the report, they are also added to the Compare Distributions report.&amp;nbsp; Additionally, AICc Weight (corrected and weighted Akaike's Information Criterion) and BIC (Bayesian Information Criterion) has been added to this report. These statistics were already present in other parts of JMP such as &lt;A href="https://www.jmp.com/en_us/events/ondemand/building-better-models/introduction-modeling-and-model-comparison.html" target="_self"&gt;Model Comparison,&lt;/A&gt; and they have now been added to the Distribution platform.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="compareDistributions.png" style="width: 542px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20203i589275E70CE53C30/image-size/large?v=v2&amp;amp;px=999" role="button" title="compareDistributions.png" alt="compareDistributions.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;You may notice that there are no longer check boxes next to the distribution names that allow you to choose which distributions to show. In JMP 15, all selected fits are shown. You can remove a fit by double-clicking on the name in the Distribution column. If you are a fan of the check boxes, they will be returning in JMP 15.1.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Compare Distributions report has been moved so that it is always directly underneath the histogram. This gave us the ability to remove the legend that previously appeared beneath the histogram and move that information to the Compare Distributions report.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;CDF Plot&lt;/H3&gt;
&lt;P&gt;In addition to the Compare Distributions report and the overlaid histograms (available in previous version of JMP), CDF plots can be used to compare distributional fits. Adding the CDF plot to the report superimposes the CDFs for the fitted distributions onto the empirical CDF.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CDFs.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20204iEABE002606FB8845/image-size/large?v=v2&amp;amp;px=999" role="button" title="CDFs.png" alt="CDFs.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To see an example of these new features, open Washers.jmp found in the Quality Control sample data folder. The # defective column contains counts of the number of defective items in each lot.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Open("$SAMPLE_DATA/Quality Control/Washers.jmp");&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Select Analyze-&amp;gt;Distribution. Specify # defective as Y, Columns and click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dialogforcompare.png" style="width: 485px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20205iE4E9360D4F4FB00F/image-size/large?v=v2&amp;amp;px=999" role="button" title="dialogforcompare.png" alt="dialogforcompare.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Since we are dealing with count data, let’s fit the Poisson distribution and the ZI Poisson distribution to see how they compare. Hold down the Alt key (Option key on the mac) and click on the red triangle. Check the box for CDF Plot, Fit Poisson, and Fit ZI Poisson. Click OK.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="defectiveoutput.png" style="width: 520px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20206i99630F20FB5E4F7C/image-size/large?v=v2&amp;amp;px=999" role="button" title="defectiveoutput.png" alt="defectiveoutput.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The histogram shows us that the blue line more closely follows the data. In the Compare Distributions report, we see that the blue line is for the ZI Poisson distribution. The Compare Distributions report is initially sorted by AICc in ascending order. The ZI Poisson distribution has a smaller AICc indicating a better fit. The CDF plot shows that the blue line (ZI Poisson) more closely follows the red line (empirical CDF) indicating a better fit.&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Cleaner look by moving the histogram legend into the Compare Distributions report.&lt;/LI&gt;
&lt;LI&gt;Cleaner look by removing the distribution check boxes from Compare Distributions.&lt;/LI&gt;
&lt;LI&gt;AICc weight and BIC have been added to Compare Distributions.&lt;/LI&gt;
&lt;LI&gt;Overlaid CDFs for the fitted distributions in the CDF plot.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These two blog posts only scratch the surface of the &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; new features in the distribution platform. Look for my next blog post in which I detail the new options for fitted distributions.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Nov 2019 13:20:39 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-Comparing-distributional/ba-p/232929</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2019-11-20T13:20:39Z</dc:date>
    </item>
    <item>
      <title>Modernizing the Distribution platform – New fitters in JMP 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-New-fitters-in-JMP-15/ba-p/232749</link>
      <description>&lt;P&gt;The Distribution platform is one of the most widely used platforms in JMP.&lt;SPAN style="box-sizing: border-box; margin: 0px;"&gt;&amp;nbsp;&lt;/SPAN&gt;This platform is not only used for testing which distribution fits your data, it is used for data exploration, capability analysis, and so much more.&lt;SPAN style="box-sizing: border-box; margin: 0px;"&gt;&amp;nbsp;&lt;/SPAN&gt;Distribution has been around since the first version of JMP, and it was time for some changes. With&lt;SPAN style="box-sizing: border-box; margin: 0px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; comes the modernization of this commonly used platform.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;New Fitters&lt;/H3&gt;
&lt;P&gt;One of the biggest changes in the Distribution platform is related to fitting distributions. The fitters have been modernized to use the same code as the Generalized Regression platform. Sharing code between JMP platforms in this way ensures consistency and requires less maintenance going forward. New Distribution fits were added while we were updating this code.&lt;/P&gt;
&lt;P&gt;You can now fit a Negative Binomial distribution (equivalent to the Gamma-Poisson distribution), a Cauchy distribution, a ZI (zero-inflated) Poisson distribution, and a ZI (zero-inflated) Negative Binomial distribution. The Johnson fits are now a single command that fits the best-fitting distribution from the Johnson system of distributions. This Johnson fitting method is the same method (quantile matching) used in the Process Capability platform. This method is more stable and faster than maximum likelihood.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContsFits.png" style="width: 196px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20161i5882216E51F3C55C/image-size/large?v=v2&amp;amp;px=999" role="button" title="ContsFits.png" alt="ContsFits.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DiscreteFits.png" style="width: 174px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20162iEDDD177706FC8DFB/image-size/large?v=v2&amp;amp;px=999" role="button" title="DiscreteFits.png" alt="DiscreteFits.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 10.66px;"&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;&lt;FONT color="#000000"&gt;To see an example of the new Johnson fitter, open Airline Delays.jmp found in the sample data folder.&lt;SPAN style="margin: 0px;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Open("$SAMPLE_DATA/Airline Delays.jmp");  &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P style="margin: 0px 0px 10.66px;"&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#000000"&gt;Select Analyze-&amp;gt;Distribution.&lt;SPAN style="margin: 0px;"&gt;&amp;nbsp; &lt;/SPAN&gt;Specify Arrival Delay as Y, Columns and click OK.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 10.66px;"&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#000000"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dialog.png" style="width: 489px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20172i5E9EF9E24BB876CA/image-size/large?v=v2&amp;amp;px=999" role="button" title="dialog.png" alt="dialog.png" /&gt;&lt;/span&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 10.66px;"&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;&lt;FONT color="#000000"&gt;Click on the red triangle next to Arrival Delay and select Continuous Fit-&amp;gt;Fit Johnson.&lt;SPAN style="margin: 0px;"&gt;&amp;nbsp;&lt;/SPAN&gt;The best fit from the family of Johnson distributions for this data is the Johnson Su Distribution.&lt;SPAN style="margin: 0px;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 10.66px;"&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;&lt;FONT color="#000000"&gt;&lt;SPAN style="margin: 0px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Johnsonex.png" style="width: 386px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20173i06DA9292BE499ECA/image-size/large?v=v2&amp;amp;px=999" role="button" title="Johnsonex.png" alt="Johnsonex.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Prior to JMP 15, the only way to control the Kernel Std for the Nonparametric Density was via a slider using the interface. Now, there is the option to specify a specific value for the bandwidth parameter. JMP 15 also gives you the ability to script the bandwidth parameter.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nonparametric.png" style="width: 262px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20164i101092E284955C08/image-size/large?v=v2&amp;amp;px=999" role="button" title="nonparametric.png" alt="nonparametric.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Before JMP 15, no standard errors were given for the parameter estimates for the SHASH distribution. This has been added in JMP 15 to be consistent with the other distributional fits.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SHASH.png" style="width: 373px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20165iA33180B7A72270BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="SHASH.png" alt="SHASH.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;New fitters that match the Generalized Regression platform.&lt;/LI&gt;
&lt;LI&gt;Cauchy Distribution.&lt;/LI&gt;
&lt;LI&gt;Negative Binomial Distribution.&lt;/LI&gt;
&lt;LI&gt;ZI Poisson Distribution.&lt;/LI&gt;
&lt;LI&gt;ZI Negative Binomial Distribution.&lt;/LI&gt;
&lt;LI&gt;Single Johnson fitter that shows the best Johnson fit.&lt;/LI&gt;
&lt;LI&gt;Ability to enter a value for the smooth curve bandwidth parameter (also the ability to script this parameter).&lt;/LI&gt;
&lt;LI&gt;Parameter estimate standard errors for the SHASH distribution.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This blog post only scratches the surface of the &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; new features in the Distribution platform. Look for my next blog post in which I detail the new features for comparing distributional fits.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 16:08:35 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Modernizing-the-Distribution-platform-New-fitters-in-JMP-15/ba-p/232749</guid>
      <dc:creator>tonya_mauldin</dc:creator>
      <dc:date>2019-11-13T16:08:35Z</dc:date>
    </item>
    <item>
      <title>Graph Builder contour plots in JMP 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Graph-Builder-contour-plots-in-JMP-15/ba-p/232292</link>
      <description>&lt;P&gt;In a &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Graphical-tour-of-JMP-15-Graph-Builder-enhancements/ba-p/228894" target="_self"&gt;recent post&lt;/A&gt;, &lt;LI-USER uid="494"&gt;&lt;/LI-USER&gt;&amp;nbsp;gave an overview of the changes for Graph Builder in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt;. Several of the updates are related to the &lt;A href="https://www.jmp.com/support/help/en/15.0/#page/jmp/contour.shtml#" target="_self"&gt;contour element&lt;/A&gt;, so I thought it would be a good time to take a more in-depth look at the features of the contour element, new and old.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://en.wikipedia.org/wiki/Contour_line" target="_self"&gt;Contour plots&lt;/A&gt; are a common technique for visualizing functional data. Contours may take on different names for the various functions that they represent -- isotherms for curves of constant temperature, isobars for curves of constant pressure, and many more.&lt;/P&gt;
&lt;P&gt;When data is collected or measured at discrete locations, it can be a challenge to make observations from the points themselves. In the examples below, consider a density function computed from the set of points. The density values could be mapped to color in a 2D plot, or a third axis for a 3D view, but these solutions do not really make it easier to answer some questions about the function. For example, where do the maxima / minima occur? Where is the function changing faster or slower? Contour plots are often shown using a series of curves computed for different isolevels. As shown in the lower-right image, the curves will be closer together at regions of high gradient, and farther apart at areas of low gradient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Scatterplot.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20049i99BF45E781714E9B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Scatterplot.png" alt="Scatterplot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Scatterplot Color.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20050iA3015CC72D4355BC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Scatterplot Color.png" alt="Scatterplot Color.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;Scatterplot of data&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;Scatterplot with density function shown by color&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Scatterplot 3D.png" style="width: 376px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20053iA6B5ADC321C39924/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Scatterplot 3D.png" alt="Scatterplot 3D.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContourLinesAnnotated.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20052iEBB5B3B39CB63994/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ContourLinesAnnotated.png" alt="ContourLinesAnnotated.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;3D Scatterplot with density as function of two variables&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;Contour plot of density function&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, contours are used in several platforms, including Bivariate, Contour Plot, Contour Profiler, Graph Builder, and others. The Graph Builder contour element has several new features in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt;, including new display options as well as new contour techniques. This blog post includes a grand tour of the six different forms of contours that are available, comparing their use for different situations.&lt;/P&gt;
&lt;H3&gt;Contours in 1D&lt;/H3&gt;
&lt;P&gt;The scatterplot is a direct way to visualize continuous data and is often the default way to get a visual representation of continuous data. When the points are very dense, it becomes difficult to characterize the distribution of the points, and especially to make comparisons between multiple groups. In this example using the Titanic sample data in JMP, the fares paid by the survivors of the tragedy are compared to the fares paid by those that perished. Some observations can be made from the scatterplots, such as that the outliers in the survivor group paid roughly twice what the others (in either group) paid.&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-center" image-alt="01_Scatterplot.png" style="width: 608px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20057i618AA49CF7919B15/image-size/large?v=v2&amp;amp;px=999" role="button" title="01_Scatterplot.png" alt="01_Scatterplot.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To compare these two groups further, some additional analysis is necessary to characterize the groups. One widely used technique for summarizing 1D data is the &lt;A href="https://en.wikipedia.org/wiki/Box_plot" target="_blank" rel="noopener"&gt;boxplot&lt;/A&gt;, shown below. Boxplots will be useful for comparison with the new contour techniques. There are several variations on the visual representation for a boxplot, but they are all based on quartiles. The box extends from the first quartile to the third quartile, so it contains 50% of the observations. A line is drawn at the median, giving additional detail. There are several variations on how to draw the whiskers – in this example they extend to the outermost point that lies within 1.5x the interquartile range from the box.&amp;nbsp; Observations outside of this region are optionally shown as outliers.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="01_Boxplot.png" style="width: 612px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20058iCE8A0E7B75BF536E/image-size/large?v=v2&amp;amp;px=999" role="button" title="01_Boxplot.png" alt="01_Boxplot.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Graph Builder Contour element uses a probability density function for a given kernel bandwidth to illustrate the shape of a 1D point distribution. The default view for 1D contours is the Violin plot, which plots the density function with symmetry about the axis. The magnitude of the curves is determined by a scaling option, with options for &lt;EM&gt;Equal Area&lt;/EM&gt;, &lt;EM&gt;Equal Width&lt;/EM&gt;, or &lt;EM&gt;Weighted Area&lt;/EM&gt;. The different scaling options are helpful for comparing the functions in different ways. For example, &lt;EM&gt;Equal Width&lt;/EM&gt; may be useful if your primary need is to compare the locations of the maximum densities for each population.&amp;nbsp;&lt;EM&gt;Weighted Area&lt;/EM&gt; scaling would be the best option if you want the relative areas of the contours to reflect the population sample sizes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_Violin.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20061i1D87FAB89B68F5D4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_Violin.png" alt="01_Violin.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_Violin_Scaling.png" style="width: 254px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20062iFB4012E38923E155/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_Violin_Scaling.png" alt="01_Violin_Scaling.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New in&amp;nbsp;JMP 15 is the ability to control the kernel bandwidth via a smoothness parameter. The parameter a normalized value from [-1,1], with the default value of 0 leading to a default computed bandwidth based on the data characteristics. Negative smoothness values result in less smoothing, and positive smoothness values result in more smoothing, within computed limits.&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-center" image-alt="01_Violin_Smoothing.png" style="width: 612px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20063iA204C75C39CB4186/image-size/large?v=v2&amp;amp;px=999" role="button" title="01_Violin_Smoothing.png" alt="01_Violin_Smoothing.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also new in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; is a the HDR (Highest Density Region) plot, a new option for 1D contours. The HDR plot uses the same density function as the violin, but applies concepts similar to the boxplot to reduce the display to a few quantitative measures. A black line is drawn at the maximum point in the density function, and dark rectangles are drawn to represent the 50% highest cumulative probability. Lighter rectangles are drawn to represent the 99% cumulative probability, and any points outside of the 99% probability are considered outliers. The same smoothness parameter is available for the HDR plot and Violin plot.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_Contour_Type.png" style="width: 260px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20065i2731CAFFAE4A9030/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_Contour_Type.png" alt="01_Contour_Type.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_HDR_annot.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20069i8B57897AC9A912D7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_HDR_annot.png" alt="01_HDR_annot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The fill color or line color can be change from the legend, and colors are also used when adding columns to the Overlay or Color roles. The X Grouping and Y Grouping roles provide additional layout possibilities.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_HDR_Overlay.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20070i40095A1B350F58AA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_HDR_Overlay.png" alt="01_HDR_Overlay.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="01_HDR_GroupColor.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20071i0C2CB6A8FE6BEAA5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="01_HDR_GroupColor.png" alt="01_HDR_GroupColor.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One distinction between box plots and HDR plots is that the 50% and 99% probability regions in an HDR plot are not necessarily continuous. When the underlying data is not unimodal, this can give a better picture of the distribution of the data. Compared to the Violin representation, the mode lines and outliers give a more quantitative, but summarized, presentation of the underlying density function.&lt;/P&gt;
&lt;H3&gt;Contours in 2D&lt;/H3&gt;
&lt;P&gt;Scatterplots for two continuous variables have some of the same disadvantages as scatterplots in 1D. When the data is dense, it can be difficult to make observations about the distribution of the points. One common practice is to use transparency for the points in a 2D scatterplot. The regions with the most overstriking will appear darker in the resulting plot.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Scatterplot.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20113iCBD933B03A3BAFC7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Scatterplot.png" alt="Scatterplot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ScatterplotTransparency.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20114i5BA78DDDEEB5374D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ScatterplotTransparency.png" alt="ScatterplotTransparency.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;2D Density contours&lt;/H3&gt;
&lt;P&gt;The Graph Builder contour element uses a bivariate nonparametric density function to extract density contours and directly display regions of various densities. On the left is the default view using four levels, with a darker color at high density fading to white at lower densities, in addition to transparency that fades the contours at low density.&amp;nbsp; Transparency is very useful for contours when used with the Overlay role. In the image on the right, the K Means Cluster platform was used to segment the data into 11 groups based on four factors. The transparent contours show the overlap of these groups for two of the four factors.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ContourDefault.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20118iFE62EF7C5A0D6588/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ContourDefault.png" alt="ContourDefault.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContourClustering.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20258iB710147500171F93/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ContourClustering.png" alt="ContourClustering.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In JMP 15, Graph Builder adds several new options and styling attributes for 2D density contours, including line/fill options (from the property panel), density gradient and transparency gradient options (from the legend), and smoothness. As in the 1D case, there is a single normalized smoothness parameter ranging from [-1,1]. The default values of 0 represents a default kernel bandwidth in each dimension, negative values decrease the smoothing, and positive values increase the smoothing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContourDensityLegend.png" style="width: 451px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20120i0AF0DE28C5BC7C1D/image-size/large?v=v2&amp;amp;px=999" role="button" title="ContourDensityLegend.png" alt="ContourDensityLegend.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContourDensityOptions.png" style="width: 262px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20119i0A9AC97D6A34D95B/image-size/large?v=v2&amp;amp;px=999" role="button" title="ContourDensityOptions.png" alt="ContourDensityOptions.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ContourWithOptions.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20121iEFED0A5D906896E1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ContourWithOptions.png" alt="ContourWithOptions.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;H3&gt;&lt;BR /&gt;2D HDR contours&lt;/H3&gt;
&lt;P&gt;The concepts of HDR (Highest Density Region) plots for 2D density functions are directly analogous to the 1D case. Using the 2D bivariate density function, a marker (*) is drawn at the point of highest probability, a dark contour is drawn for the area of 50% cumulative probability, and a lighter contour is drawn at 99% cumulative probability. Points outside of the 99% region are optionally shown as outliers.&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-center" image-alt="02_HDR.png" style="width: 671px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20122iA733786BF87D8A4A/image-size/large?v=v2&amp;amp;px=999" role="button" title="02_HDR.png" alt="02_HDR.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;2D Bagplot&lt;/H3&gt;
&lt;P&gt;Another new representation in JMP 15 is the &lt;A href="https://en.wikipedia.org/wiki/Bagplot" target="_self"&gt;Bagplot&lt;/A&gt;. The Bagplot was designed as a 2D analog to the 1D Box Plot. In 2D the “order” of the points does not have a clear definition. The Bagplot was designed based on Tukey's location depth (Tukey 1975), which determines an integer depth value for each point, which results in a natural nesting of depth hulls from the outer convex hull (depth 0) to the inner hull at maximum depth.&lt;/P&gt;
&lt;P&gt;Given these concepts, the bagplot consists of four elements. A marker (*) is shown at the median of the highest depth points. The two depth hulls that separate the points in half are interpolated to determine a 50% probability region, which is shown in the dark color. This is referred to as the &lt;EM&gt;bag&lt;/EM&gt;. The bag is inflated by 3x relative to the median to determine the loop, which is not shown. The convex hull of all points inside the loop is shown in a lighter color and is called the &lt;EM&gt;fence&lt;/EM&gt;. All points outside the loop are considered outliers.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="02_Bagplot.png" style="width: 684px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20123i3D2C8F8C92A45C7F/image-size/large?v=v2&amp;amp;px=999" role="button" title="02_Bagplot.png" alt="02_Bagplot.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The bagplot is a very close 2D analog of the 1D box plot, and similar distinctions can be made when comparing the bag plot to the 2D HDR plot. The bagplot is better suited to summarizing the distribution of unimodal data, while the 2D HDR plot has an advantage when giving a summary view of multimodal data.&lt;/P&gt;
&lt;H3&gt;Value Contours&lt;/H3&gt;
&lt;P&gt;When an additional color role is specified in addition to two continuous columns for X and Y, the Graph Builder contour element shows value contours, like the &lt;A href="https://www.jmp.com/support/help/14-2/contour-plots.shtml" target="_blank" rel="noopener"&gt;Contour Plot&lt;/A&gt; platform.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 100%;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="03_Scatterplot.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20125i73EB7565C2865C33/image-size/medium?v=v2&amp;amp;px=400" role="button" title="03_Scatterplot.png" alt="03_Scatterplot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 50%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="03_Contour.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20126iAB41FED7C6197A82/image-size/medium?v=v2&amp;amp;px=400" role="button" title="03_Contour.png" alt="03_Contour.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Contours in this case are computed using a piecewise linear interpolation of the input data based on a &lt;A href="https://en.wikipedia.org/wiki/Delaunay_triangulation" target="_blank" rel="noopener"&gt;Delaunay triangulation&lt;/A&gt;. The triangulation is not shown within the Graph Builder platform – in the example below the triangulation was added via JSL.&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-center" image-alt="03_Contour_Triangulation.png" style="width: 686px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20127iF181431E56CDF655/image-size/large?v=v2&amp;amp;px=999" role="button" title="03_Contour_Triangulation.png" alt="03_Contour_Triangulation.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; adds new options for showing the boundary, filled contours, and line contours. For value contours, smoothing is done by interpolating the triangular data to a fixed grid and applying gaussian smoothing to the grid. The smoothed contours are then clipped to the boundary of the triangulation.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="03_Contour_Modified.png" style="width: 677px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20128iBFF720A231E841CB/image-size/large?v=v2&amp;amp;px=999" role="button" title="03_Contour_Modified.png" alt="03_Contour_Modified.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A Delaunay triangulation always results in a convex region. If the points are not uniformly distributed, this can lead to interpolation between points that are spread over large areas. The &lt;A href="https://en.wikipedia.org/wiki/Alpha_shape" target="_blank" rel="noopener"&gt;Alpha Shape&lt;/A&gt; is a subset of the Delaunay triangulation that filters triangles that are very large or very long and skinny. The filter looks at the radius of the circumscribing circle for each triangle, removing those that are larger than some limit. The resulting subset could have holes or multiple components.&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-center" image-alt="03_Contour_Alpha.png" style="width: 677px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20129iD4F04999235471EB/image-size/large?v=v2&amp;amp;px=999" role="button" title="03_Contour_Alpha.png" alt="03_Contour_Alpha.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;P&gt;The new HDR methods provide a quantitative view of density-based contours for both one and two continuous variables. All Graph Builder density contours now support a smoothing parameter, and the bagplot extends boxplot concepts to 2D. Alpha shapes control the shape of the domain for triangulation-based contours. All of the contour types have new controls for drawing lines or filled contours, and 2D density contours also have additional control of the color palette and transparency.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you would like to reproduce these plots in JMP 15, download the file JMP15Contour.jmpapp from recent JMP Discovery talk in Tucson and it will launch the data that you can experiment with:&amp;nbsp;&lt;LI-MESSAGE title="Graph Builder Contour Plots in JMP(R) 15 (2019-US-30MP-247)" uid="223348" url="https://community.jmp.com/t5/Discovery-Summit-Tucson-2019/Graph-Builder-Contour-Plots-in-JMP-R-15-2019-US-30MP-247/m-p/223348#U223348"&gt;&lt;/LI-MESSAGE&gt;&lt;/P&gt;
&lt;H3&gt;References&lt;/H3&gt;
&lt;P&gt;H. Edelsbrunner, D. Kirkpatrick, R. Seidel, On the shape of a set of points in the plane, &lt;EM&gt;IEEE Transactions on Information Theory&lt;/EM&gt;, Vol. 29, Issue 4 (July 1983), 551-559.&lt;/P&gt;
&lt;P&gt;Rob J. Hyndman, Computing and Graphing Highest Density Regions, &lt;EM&gt;The American Statistician&lt;/EM&gt;, Vol. 50, No. 2 (May 1996), 120-126.&lt;/P&gt;
&lt;P&gt;Peter J. Rousseeux, Ida Ruts, John W. Tukey, The Bagplot: A Bivariate Boxplot, &lt;EM&gt;The American Statistician&lt;/EM&gt;, Vol. 53 (1999), 382-387.&lt;/P&gt;
&lt;P&gt;J.W. Tukey, Mathematics and the Picturing of Data, &lt;EM&gt;Proceedings of the International Congress of Mathematicians&lt;/EM&gt;, Vancouver, 1975, 523-531.&lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2019 17:53:32 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Graph-Builder-contour-plots-in-JMP-15/ba-p/232292</guid>
      <dc:creator>danschikore</dc:creator>
      <dc:date>2019-11-21T17:53:32Z</dc:date>
    </item>
    <item>
      <title>Improvements to the Area element in Graph Builder</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Improvements-to-the-Area-element-in-Graph-Builder/ba-p/232366</link>
      <description>&lt;P&gt;The Area element in Graph Builder is rewritten in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt; to share functionality with the Line element. The Area and Line elements now support the same features, and moving forward, new features added to one element will be picked up by the other element.&lt;/P&gt;
&lt;P&gt;Anything that can be created using the Area element can also be created using the Line element and vice versa. However, each element has a different set of initial defaults that are more appropriate for the given type. More about these differences later.&lt;/P&gt;
&lt;P&gt;To demonstrate the changes in JMP 15, I downloaded some data from FluView. FluView is from the Centers for Disease Control and Prevention. The website tracks confirmed cases of positive tests for various strains of influenza. There is more information about FluView available from the &lt;A href="https://www.cdc.gov/flu/weekly/" target="_blank" rel="noopener"&gt;CDC website&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The data is categorized by week of the year and by four age groups: 0-4 years, 5-24 years, 25-64 years and 65+ years. It contains counts of confirmed cases for each week and age group for six different virus strains. FluView presents the data in stacked bar charts like this one:&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-center" image-alt="FluView from Centers for Disease Control" style="width: 693px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20078iE38664B0EB29F8EA/image-size/large?v=v2&amp;amp;px=999" role="button" title="CDC-FluView.PNG" alt="FluView from Centers for Disease Control" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;FluView from Centers for Disease Control&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Stacked bar charts and area charts are typically used to convey the same types of information, so this blog post uses the data to demonstrate features of the Area element. To make the graphs easier to read, the data has been additionally filtered to just 2019 rather than using the full 52 weeks from 2018-2019.&lt;/P&gt;
&lt;H3&gt;Connection type&lt;/H3&gt;
&lt;P&gt;Area now supports all the same connection types as Line which are Line, Curve, Step, Centered Step, Horizontal and Vertical. Here are some examples showing Line, Curve and Step for the first 15 weeks of 2019:&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-center" image-alt="Area Connection Type Examples" style="width: 744px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20079iE83E0687C5935F19/image-size/large?v=v2&amp;amp;px=999" role="button" title="connection.png" alt="Area Connection Type Examples" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Area Connection Type Examples&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Connection&lt;/STRONG&gt; setting is available in the options on the Area element. &lt;STRONG&gt;Row Order&lt;/STRONG&gt; is also supported for data with implicit row ordering.&lt;/P&gt;
&lt;H3&gt;Hover tips&lt;/H3&gt;
&lt;P&gt;Hover tips are now available on the Area element when over any data point. The tip shows the value for the series as well as the overall stacked value at that data point.&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-center" image-alt="Area Hover Tips" style="width: 714px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20080i4FB68427BF2055FF/image-size/large?v=v2&amp;amp;px=999" role="button" title="HoverTip.png" alt="Area Hover Tips" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Area Hover Tips&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Error bars&lt;/H3&gt;
&lt;P&gt;When the Area is using the Overlaid or Range area styles, error bars can be displayed just as they would on a Line element.&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-center" image-alt="Error Bars" style="width: 720px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20081i47E70398E38436F7/image-size/large?v=v2&amp;amp;px=999" role="button" title="error_bars.png" alt="Error Bars" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Error Bars&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Displaying lines and changing fills&lt;/H3&gt;
&lt;P&gt;By default in JMP 15, the lines are displayed with a width of 0 on the Area element. This is a change from JMP 14, which displayed the lines with a width of 2 in the same color and transparency as the filled area. This had the effect of making the lines not visible. The lines could be made visible by changing the line properties through the legend.&lt;/P&gt;
&lt;P&gt;In the image below from JMP 14, the line color for each series has been changed to a different color and a Line Width of 3 in order to make the lines visible against the fills. Note that both the line and fill properties are shown together in the legend.&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-center" image-alt="JMP 14 Line and Fill Properties" style="width: 747px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20082iEA4112156F1E7EF7/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMP14_LineSettings.PNG" alt="JMP 14 Line and Fill Properties" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP 14 Line and Fill Properties&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately, the transparency setting controlled both the line and fill transparency. This made it impossible to have transparent fills with fully saturated lines. In the example below, the transparency setting on the legend has been reduced to 0.2. Both the lines and the fills have this transparency applied. The lines are slightly visible because they are drawn on top of the fills, but they are not fully saturated.&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-center" image-alt="JMP 14 Area with Transparency" style="width: 740px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20083i6118F9FACBBB7ADA/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMP14_AreaTransparency.PNG" alt="JMP 14 Area with Transparency" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP 14 Area with Transparency&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt;, the fills and lines are separated and controlled through individual legends. By default, the line legends are not shown since the line width is 0. To display the lines and the line legends, the line legends must first be enabled in the &lt;EM&gt;Legend Settings&lt;/EM&gt; dialog.&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-center" image-alt="JMP 15 Legend Settings" style="width: 736px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20084i50650018A732725D/image-size/large?v=v2&amp;amp;px=999" role="button" title="LegendSettingMenu.png" alt="JMP 15 Legend Settings" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP 15 Legend Settings&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;In the &lt;EM&gt;Legend Settings&lt;/EM&gt; dialog, enable the legends for the lines. These are the unselected legends below the fill legends. The preview does not display the lines because the line width is still set to 0. We adjust the line width once the legend is visible.&lt;/P&gt;
&lt;P&gt;In this screenshot, the line legends are shown enabled and highlighted in blue:&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-center" image-alt="Turning on Line Legends" style="width: 738px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20085i9AB0667FA3F8F86C/image-size/large?v=v2&amp;amp;px=999" role="button" title="EnableLineLegends.png" alt="Turning on Line Legends" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Turning on Line Legends&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now that the legends are shown, use the right-click context menu on each legend to set a line width. The line is initially not visible because the line width is zero. Setting a non-zero width makes the line visible in the legend and on the Area element.&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-center" image-alt="Setting Line Width" style="width: 755px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20087i810356D226DE873E/image-size/large?v=v2&amp;amp;px=999" role="button" title="SelectLineWidth.png" alt="Setting Line Width" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Setting Line Width&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Now the outline of the fill area can be seen and is independent from the properties of the fill.&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-center" image-alt="JMP 15 Lines and Fills" style="width: 741px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20088i5FEF096F263F9F0B/image-size/large?v=v2&amp;amp;px=999" role="button" title="LinesVisible.png" alt="JMP 15 Lines and Fills" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP 15 Lines and Fills&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To make the lines more prominent and the fills more subtle, we can adjust the fill transparency (or color) without affecting the line. In this case below, the fill transparency has been reduced from 0.75 to 0.2 as was done previously with the JMP 14 example.&lt;/P&gt;
&lt;P&gt;The difference from JMP 14 is very apparent, as the lines are fully saturated while the fills are highly transparent.&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-center" image-alt="Lines with Transparent Fills" style="width: 643px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20089iFF4CD0175A65CA9F/image-size/large?v=v2&amp;amp;px=999" role="button" title="LinesWithFillTransparency.png" alt="Lines with Transparent Fills" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Lines with Transparent Fills&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Area options in Line Element&lt;/H3&gt;
&lt;P&gt;The Area element isn’t the only one that got new features in JMP 15. The Line element also picked up features from the Area element. The Line now has an option for stacking the values.&lt;/P&gt;
&lt;P&gt;In the example below, the Stack option is enabled on the Line element. The hover tip includes the stacked value as well as the value for the series.&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-center" image-alt="Stacked Lines" style="width: 746px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20090i8AFD43B42E7B70D3/image-size/large?v=v2&amp;amp;px=999" role="button" title="StackedLine.png" alt="Stacked Lines" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Stacked Lines&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;By specifying a fill on the Line element, we can recreate what we had with the Area element.&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-center" image-alt="Area using the Line Element" style="width: 749px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20092iAE437AAB955D0D23/image-size/large?v=v2&amp;amp;px=999" role="button" title="AreaFromLine.png" alt="Area using the Line Element" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Area using the Line Element&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Other Improvements&lt;/H3&gt;
&lt;P&gt;The Area element now handles &lt;EM&gt;hidden&lt;/EM&gt; row states. The JMP 14 Area element did not take hidden row states into account when displaying the data. The behavior for hidden rows now matches the existing behavior of the Line element.&lt;/P&gt;
&lt;P&gt;Support for Missing Values has been added, and the behavior of Missing Factors matches the Line element as well. The Missing Value connection is displayed through the line display. Therefore, the lines need to be visible to see some of the styles such as Connect Faded and Connect Dashed.&lt;/P&gt;
&lt;H3&gt;Differences&lt;/H3&gt;
&lt;P&gt;The visual perception of an area chart is typically different than a line chart. When viewing an area, the relative amounts of the fill areas are the primary focus. The viewer is processing the individual fill amounts as well as the cumulative values.&lt;/P&gt;
&lt;P&gt;For these reasons, the Area element puts more emphasis on the cumulative values and the filled areas. The Area element uses stacking by default. The fills are highly saturated, and the lines are deemphasized.&lt;/P&gt;
&lt;P&gt;In a typical line chart, the focus tends to be more on the changes across the x-axis. The viewer is looking for trends, minima/maxima, or sudden changes.&lt;/P&gt;
&lt;P&gt;The line element doesn’t stack values or include any fills by default. When applying fills, the fills are more transparent to give the lines higher visual priority.&lt;/P&gt;
&lt;H3&gt;Why have both? Which one should I use?&lt;/H3&gt;
&lt;P&gt;While the Area element and Line element are functionally equivalent now, both are still available to provide easier access to the expected default configuration. This minimizes the number of steps required to achieve the desired graph when you know what you are trying to create.&lt;/P&gt;
&lt;P&gt;However, sometimes during data exploration, you may start with one element but then realize that features of the other element would enhance your data story. For example, you may start with a line element, add an overlay variable, and then decide that you want to stack the overlay values to see the cumulative amounts. Previously, this would have required switching the element type and potentially losing some customizations. Now, you can easily stack without switching.&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2019 18:31:18 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Improvements-to-the-Area-element-in-Graph-Builder/ba-p/232366</guid>
      <dc:creator>paul_vezzetti</dc:creator>
      <dc:date>2019-12-04T18:31:18Z</dc:date>
    </item>
    <item>
      <title>Celebrate 30 years of JMP with a 30% discount on training and books</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Celebrate-30-years-of-JMP-with-a-30-discount-on-training-and/ba-p/232312</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Get a discount on books and training to celebrate 30 years of JMP." style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20105i440C8ACDFDDABDFE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="30yr-logo.jpg" alt="Get a discount on books and training to celebrate 30 years of JMP." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Get a discount on books and training to celebrate 30 years of JMP.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thirty years ago (Oct. 5, 1989, to be exact), we shipped JMP Version 1. I&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;t was a big day for us, and for our customers. That first offering of &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; brought&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;interactive data visualization and analysis directly to the desktop, provided "a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;graph for every statistic," and proved to be a giant leap forward for data explorers around the world.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And for the past 30 years, our users have been doing i&lt;SPAN style="font-family: inherit;"&gt;ncredible things with JMP software&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;... changing the world along the way. You all are, in fact, the&amp;nbsp;&lt;/SPAN&gt;real heroes of JMP's success story.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That's why we're hoping you'll help us celebrate this milestone (and expand your JMP knowledge even further) with a 30% discount on JMP training and books. Simply purchase any JMP book (between Nov. 6 and Nov. 13, 2019) and/or any JMP course (between Nov. 6 and Dec. 31, 2019) and enjoy the discount -- a small gift for our amazing users.&lt;/P&gt;
&lt;H3&gt;The fine print&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;30% Discount on JMP e-books&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Purchase any JMP e-book through the &lt;A href="https://www.sas.com/store/index.ep?storeCode=SAS_US" target="_blank" rel="noopener"&gt;SAS Store&lt;/A&gt; and receive a 30% discount at checkout.&lt;/LI&gt;
&lt;LI&gt;Offer is good for any purchase made between Nov. 6 and Nov. 13, 2019.&lt;/LI&gt;
&lt;LI&gt;Enter Promotion Code &lt;STRONG&gt;30JMP&lt;/STRONG&gt; at checkout.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.sas.com/store/books/categories/jmp/cBooks-cbooks_categories-cbooks_categories_24-p1.html" target="_blank" rel="noopener"&gt;View JMP e-Books&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;30% Discount on JMP Training&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Purchase any &lt;A href="http://support.sas.com/training/us/paths/jmp.html" target="_blank" rel="noopener"&gt;JMP course&lt;/A&gt; between Nov. 6 &amp;nbsp;and Dec. 31, 2019, and receive a 30% discount at checkout.&lt;/LI&gt;
&lt;LI&gt;Offer is good for any public, live web, or e-learning course or the &lt;A href="https://www.jmp.com/en_us/training/learning-subscription.html" target="_blank" rel="noopener"&gt;JMP Learning Subscription&lt;/A&gt;. &lt;BR /&gt;(Note: The discount is valid only for courses in the U.S. and DOES NOT apply to on-site courses.)&lt;/LI&gt;
&lt;LI&gt;Enter Promo Code &lt;STRONG&gt;30JMP&lt;/STRONG&gt; at checkout.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.sas.com/training/us/paths/jmp.html" target="_blank" rel="noopener"&gt;View the JMP Learning Path and JMP Courses&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Questions? Feel free to leave me a comment.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;</description>
      <pubDate>Wed, 06 Nov 2019 15:57:58 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Celebrate-30-years-of-JMP-with-a-30-discount-on-training-and/ba-p/232312</guid>
      <dc:creator>Larry_LaRusso</dc:creator>
      <dc:date>2019-11-06T15:57:58Z</dc:date>
    </item>
    <item>
      <title>Standing on the shoulders of giants: The improved D-optimal design construction procedure in JMP 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Standing-on-the-shoulders-of-giants-The-improved-D-optimal/ba-p/229463</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="I wondered if it was it possible to create an optimal design for any run size?" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20103iAFE468C485D65A55/image-size/medium?v=v2&amp;amp;px=400" role="button" title="he-thinker-489753_1280.jpg" alt="I wondered if it was it possible to create an optimal design for any run size?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;I wondered if it was it possible to create an optimal design for any run size?&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When I was first learning design of experiments in graduate school, we covered the usual suspects: factorial and fractional factorial designs with two-level factors. These designs are popular precisely because they allow for main effects to be independent of one another; the focus of fractional factorials being to save on runs at the expense of aliasing with interaction effects. While learning about resolution and how to choose one fractional factorial over another, I had come to accept that the number of runs was always going to be some power of 2. When we briefly touched on Plackett-Burman designs, I saw that the run size could be generalized to a multiple of 4. But beyond that, it seemed like a good design wasn’t possible.&lt;/P&gt;
&lt;P&gt;Flash forward several years and I’m playing around with the Custom Design platform in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; for generating experimental designs for clients at Sandia Labs. That was the first time I’d seen where you could specify any run size you liked. Now I tended to stick with run sizes that were, preferably, multiples of the factor level combinations as it just felt right. But it was around that time that a question started to nag me; was it possible to create an optimal design for any run size?&lt;/P&gt;
&lt;P&gt;Now, to clarify, the answer is technically yes as JMP, much like other software, uses an algorithm to search for the optimal design given a starting one. But that’s not exactly what I was asking. What I wanted to know was if it was possible to directly construct one, much like the factorial and fractional factorial designs.&lt;/P&gt;
&lt;P&gt;For those unaware, factorial and fractional factorial designs are essentially special types of matrices known as Hadamard matrices. What makes these matrices special is that, when you take the transpose of the matrix and multiply it by the original matrix (e.g., X^t*X), you end up with a diagonal matrix. This is precisely why they are used as factorial and fractional factorial designs; the diagonal matrix is equivalent to the covariance matrix and so represents independent main effects.&lt;/P&gt;
&lt;P&gt;When I learned this fact, it made me want to explore my question even more. But it wasn’t until my first year at JMP that I was able to do so. I started as I usually do; playing around with the mathematics, slowly gaining insight into possible construction methods. I discussed my work with my colleagues, &lt;LI-USER uid="1970"&gt;&lt;/LI-USER&gt;&amp;nbsp;and &lt;LI-USER uid="78"&gt;&lt;/LI-USER&gt;, and Ryan sent me an article by Dennis Lin on supersaturated designs that he thought might pique my interest due to some similar themes. While it didn’t directly relate to my work, one of the references did. And it’s there that everything changed.&lt;/P&gt;
&lt;H3&gt;The Joy of Rediscovery&lt;/H3&gt;
&lt;P&gt;It felt like I had stumbled upon a hidden door that, upon opening it, revealed a strange and wonderful new world (the similarity to Lucy’s experience in C.S. Lewis’s &lt;EM&gt;The Lion, The Witch, and The Wardrobe&lt;/EM&gt;, while unintended, is quite appropriate). Reading that reference led to another, which led to another, and on and on and on until I had compiled quite the collection of literature. What was so fascinating about these papers? &lt;EM&gt;They all discussed direct construction methods for generating D-optimal designs for two-level factors for virtually any run size!!&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Now, to avoid hyperbole, I should say that even though such methods exist, they do not exist for every single possible run size and some of the methods are quite complex. But the fact that direct methods did exist excited me! And, as it turns out, for a good majority of practical cases, the construction procedures were quite simple and involved adding or subtracting runs from the well known factorial and fractional factorial designs (it turns out this was what my personal research was going towards; per usual, I find myself often rediscovering the wheel…oh well). In fact, I was surprised I had never heard of some of these methods during my time in graduate school. Then again, it might be something you would learn only after you’ve mastered factorial and fractional factorial designs, which require a significant time to master on their own.&lt;/P&gt;
&lt;P&gt;I shared these methods with my colleagues, who immediately saw the impact such methods could have in creating optimal designs. Imagine that, instead of having to implement a search algorithm to hopefully find a D-optimal design, you could build one from scratch and have it mathematically guaranteed to be D-optimal. Now imagine you could do this for a wide range of run sizes; again, not all, but a vast majority that is sufficient to cover practical situations. Well guess what? You don’t have to imagine it anymore!!&lt;/P&gt;
&lt;H3&gt;The Punchline&lt;/H3&gt;
&lt;P&gt;That’s right folks. In &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;, we now implement the simple construction procedures for generating D-optimal designs right into the Custom Design platform! “That’s nice,” you might say, “but how does this change things?” Well, yes, it’s not as visible or glamorous as, say, creating &lt;A href="https://community.jmp.com/t5/JMP-Blog/Group-Orthogonal-Supersaturated-Designs/ba-p/229877" target="_self"&gt;a new supersaturated design construction platform&lt;/A&gt;. But perhaps the following demonstration may help illustrate:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMP14_JMP15_31Factor_Comparison.jpg" style="width: 710px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19733iA3C81A773058C7E2/image-size/large?v=v2&amp;amp;px=999" role="button" title="JMP14_JMP15_31Factor_Comparison.jpg" alt="JMP14_JMP15_31Factor_Comparison.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Both of these designs involve the same number of factors (31) and run sizes (34) and both were created to be D-optimal. Note that the run size is not a multiple of 4 (or you can double check for yourself, I won’t judge…just stare condescendingly). In the version on the left, it took nearly 30 seconds for the algorithm to find what it hopes is the D-optimal design. In the version on the right, it created a clearly more D-efficient design almost instantaneously. Now, at this point, I’d like to mention that I come from an accelerated testing background. I say this because, in that context, we’re used to cranking things up to extreme levels. So how about we crank up this here example to an extreme?&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JMP14_JMP15_531Factor_Comparison.jpg" style="width: 854px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19734i61879ACBAA59BDEA/image-dimensions/854x248?v=v2" width="854" height="248" role="button" title="JMP14_JMP15_531Factor_Comparison.jpg" alt="JMP14_JMP15_531Factor_Comparison.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case, the number of factors is 531 and the number of runs is 1059 (an experimenter’s dream and worst nightmare all in one). In the version on the left, it took nearly three minutes for the algorithm to find what it hopes is the D-optimal design. For the version on the right, it took nearly 3 &lt;EM&gt;seconds&lt;/EM&gt; to report the more D-efficient design. I say report instead of create because the creation step is about as long as it was for the previous example; the rest of the time is spent laying out the design and getting the diagnostics in the final report, just because it’s so massive. If that doesn’t prove to you how amazing this improvement is, I don’t know what will!!&lt;/P&gt;
&lt;H3&gt;Business as Usual&lt;/H3&gt;
&lt;P&gt;As you’ll be seeing in several upcoming blog posts, JMP 15 is brimming with new features. And if you attended the &lt;A href="https://community.jmp.com/t5/Discovery-Summit-Tucson-2019/tkb-p/discovery-2019-content" target="_self"&gt;JMP Discovery Summit&lt;/A&gt; conference in Tucson, you no doubt got a hands-on look. While you might be bouncing off the walls with excitement (or perhaps you’re more subdued in your excitement, no judgement here), for us developers and testers it’s business as usual: making sure our customer’s statistics needs are always being met and even surprising them with what they never knew they needed. So enjoy this new version and all it has to offer and definitely make sure to let us know your feedback!!&lt;/P&gt;</description>
      <pubDate>Wed, 06 Nov 2019 18:59:07 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Standing-on-the-shoulders-of-giants-The-improved-D-optimal/ba-p/229463</guid>
      <dc:creator>calking</dc:creator>
      <dc:date>2019-11-06T18:59:07Z</dc:date>
    </item>
    <item>
      <title>Using regular expressions in Recode in JMP 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Using-regular-expressions-in-Recode-in-JMP-15/ba-p/231310</link>
      <description>&lt;P&gt;In a &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Using-the-Extract-Segment-tool-in-the-Recode-platform/ba-p/231258" target="_blank" rel="noopener"&gt;previous blog post&lt;/A&gt;, I showed how to use the &lt;STRONG&gt;Extract Segment&lt;/STRONG&gt; feature in &lt;STRONG&gt;Recode&lt;/STRONG&gt;&amp;nbsp;in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt; to extract a number embedded in a string. Recode also makes it easy to use a regular expression to perform the same task. Depending on the form of the data, it may be easier to use one tool versus the other.&lt;/P&gt;
&lt;P&gt;Step 1. We’ll start off the same way, by invoking &lt;STRONG&gt;Recode&lt;/STRONG&gt; on the &lt;STRONG&gt;Observation ID&lt;/STRONG&gt; column.&lt;/P&gt;
&lt;P&gt;Step 2. From the red triangle menu, chose &lt;STRONG&gt;Replace String…&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Step 3. We are best off sticking to simple regular expressions. In this case, we are searching for the letters “WK”, followed by one or more digits. \d matches a digit, and the plus sign means “1 or more”.&amp;nbsp;&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-center" image-alt="Regex_Search.png" style="width: 591px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19962iE7DD15A639C6CC38/image-size/large?v=v2&amp;amp;px=999" role="button" title="Regex_Search.png" alt="Regex_Search.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Step 4. Looking at our replacement values, we can tell that the regular expression found WK1, but replaced it with nothing. We can use \1 as the replacement text to replace the match with the first capture group. We don’t want the entire string, only the numeric portion, so we add parentheses to create a capture group.&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-center" image-alt="Regex_ReplaceFound.png" style="width: 591px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19961iD8DC331AA343A1F0/image-size/large?v=v2&amp;amp;px=999" role="button" title="Regex_ReplaceFound.png" alt="Regex_ReplaceFound.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Step 5. Now, we have the number (ex. 1) in the place where the matched string was before (ex. “WK1”). However, all we want is the digit. There’s a new checkbox in Recode that replaces the entire string with the replacement value.&amp;nbsp;&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-center" image-alt="Regex_ReplaceWhole.png" style="width: 591px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19964iCAACF8B73A8B0B3F/image-size/large?v=v2&amp;amp;px=999" role="button" title="Regex_ReplaceWhole.png" alt="Regex_ReplaceWhole.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Step 6. Now we have our data trimmed down to just the WK number as a string. We can continue by parsing the string into a number as before. If we save the result as a column formula, we’ll get the following formula.&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-center" image-alt="Regex_Formula.png" style="width: 478px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19960i20DB19C97FCA9C76/image-size/large?v=v2&amp;amp;px=999" role="button" title="Regex_Formula.png" alt="Regex_Formula.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The resulting column looks like this:&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-center" image-alt="Regex_Table.png" style="width: 271px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19965iBC28D2C9147BE2C8/image-size/large?v=v2&amp;amp;px=999" role="button" title="Regex_Table.png" alt="Regex_Table.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regular expressions are a valuable tool to have in your toolbox. With &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP 15&lt;/A&gt;, you can combine regular expressions with other tools in Recode to perform more advanced data preparation.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Nov 2019 16:06:58 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Using-regular-expressions-in-Recode-in-JMP-15/ba-p/231310</guid>
      <dc:creator>ErnestPasour</dc:creator>
      <dc:date>2019-11-25T16:06:58Z</dc:date>
    </item>
    <item>
      <title>Using the Extract Segment tool in the Recode platform</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Using-the-Extract-Segment-tool-in-the-Recode-platform/ba-p/231258</link>
      <description>&lt;P&gt;Recode has always been a great tool for cleaning up messy data, but it’s also useful for extracting data embedded in text columns. &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; adds the flexible &lt;STRONG&gt;Extract Segment&lt;/STRONG&gt; tool, and the platform has been enhanced to generate semantic scripts in many cases so that the script or formula can be executed against new data.&lt;/P&gt;
&lt;P&gt;For example, let’s take the sample data set &lt;STRONG&gt;Drosophila Aging Distances&lt;/STRONG&gt;. Say we want to get the WK number out of the Observation ID column and put it in a separate numeric column. We notice that the field has a regular pattern where the WK number is the third field.&lt;/P&gt;
&lt;P&gt;Step 1.&amp;nbsp;&lt;STRONG&gt;Recode&lt;/STRONG&gt; the Observation ID column&lt;/P&gt;
&lt;P&gt;Step 2. From the red triangle menu, choose &lt;STRONG&gt;Advanced-&amp;gt;Extract Segment...&lt;/STRONG&gt;&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-center" image-alt="ExtractSeg1.png" style="width: 497px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19959iBC55C472DDE73B94/image-size/large?v=v2&amp;amp;px=999" role="button" title="ExtractSeg1.png" alt="ExtractSeg1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that the &lt;STRONG&gt;Text to Capture&lt;/STRONG&gt; section shows that there is only one word in our sample text. However, for this purpose, our words are delimited by the underscore character. We’ll add the underscore as a delimiter.&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-center" image-alt="ExtractSeg_addUnderscore.png" style="width: 501px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19956i332B9ADCF14AE019/image-size/large?v=v2&amp;amp;px=999" role="button" title="ExtractSeg_addUnderscore.png" alt="ExtractSeg_addUnderscore.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Once we add the delimiter, we can see that the first sample contains four words.&amp;nbsp; I have used the slider to move the selection to the third word.&amp;nbsp; You can see in the Preview area that we are now capturing the WK portion of the string.&amp;nbsp; We use the OK button to finalize this step in our process.&lt;/P&gt;
&lt;P&gt;Step 3. Now that we have isolated our desired data, let’s use Extract Segment again to peel off everything but the numeric portion. If we remove all delimiters, then each character is treated like a word. Notice that I have selected the third word. However, I have also switched the end to point to the end of the string (a negative number indicates we are counting from the end of the string). We only have a single digit in this case, but if we had multiple we would be capturing from the third word to the end of the string.&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-center" image-alt="ExtractSeg_getNumer.png" style="width: 497px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19958iBF8A252A260A75CC/image-size/large?v=v2&amp;amp;px=999" role="button" title="ExtractSeg_getNumer.png" alt="ExtractSeg_getNumer.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Step 4. We now have the digits as strings. We can go to the red triangle menu again and choose &lt;STRONG&gt;Parse as Numbers&lt;/STRONG&gt; to retrieve the numbers.&lt;/P&gt;
&lt;P&gt;Step 5. Save to a new column or a script. Note in this script that it captured the three steps performed and can be run against new data. The &lt;STRONG&gt;Recode Column&lt;/STRONG&gt; portion is very similar to the &lt;STRONG&gt;Recode&lt;/STRONG&gt; command that would be written out to a formula column.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ExtractSeg_script.png" style="width: 595px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19957i46E5B3F8256ED5DC/image-size/large?v=v2&amp;amp;px=999" role="button" title="ExtractSeg_script.png" alt="ExtractSeg_script.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The resulting column looks like this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ExtractSeg_table.png" style="width: 279px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19955iE565830058507325/image-size/large?v=v2&amp;amp;px=999" role="button" title="ExtractSeg_table.png" alt="ExtractSeg_table.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Get &lt;STRONG&gt;Drosophila Aging Distances, &lt;/STRONG&gt;give it try and let me know what you think.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Nov 2019 14:31:24 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Using-the-Extract-Segment-tool-in-the-Recode-platform/ba-p/231258</guid>
      <dc:creator>ErnestPasour</dc:creator>
      <dc:date>2019-11-19T14:31:24Z</dc:date>
    </item>
    <item>
      <title>Structural Equation Modeling: The arrival of a powerful new framework in JMP Pro 15</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Structural-Equation-Modeling-The-arrival-of-a-powerful-new/ba-p/230440</link>
      <description>&lt;P&gt;Ever wished for an intuitive and super flexible approach for specifying and fitting models? Structural equation modeling (SEM) is a framework that provides just that! Think factor analysis merged with regression, together with simultaneous estimation of numerous effects and awesome graphs.&lt;/P&gt;
&lt;P&gt;In this post, I discuss the unique advantages of using &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7011O000002OuZY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt; for fitting structural equations models. If you’re new to SEM, be sure to check out &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/Structural-Equations-Models-A-Favorite-Amongst-Those-Who-Use/ba-p/230334" target="_self"&gt;this&lt;/A&gt; post, otherwise, let’s dive in!&lt;/P&gt;
&lt;H3&gt;Ease and Speed&lt;/H3&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html#structural-equation-modeling" target="_self"&gt;SEM in JMP Pro&lt;/A&gt; is built with an intuitive user interface that enables a speedy workflow. We pride ourselves on sitting at the intersection of user-friendly and efficient; fast and replicable as coding-based tools, yet visual and simple. Importantly for SEM enthusiasts, you can do all your data cleaning, data manipulation, and model fitting, in &lt;EM&gt;one&lt;/EM&gt; place.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="ZzZmZvaTE6hHR2Z9B9ZhExBYqogRAl87" width="400" height="246" size="medium" uploading="false" thumbnail="http://cf.c.ooyala.com/ZzZmZvaTE6hHR2Z9B9ZhExBYqogRAl87/Ut_HKthATH4eww8X4xMDoxOmc2MTteQE" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Model Comparisons&lt;/H3&gt;
&lt;P&gt;Best practices of SEM involve fitting multiple, competing models to data. Our platform facilitates this task by providing all the information you need from multiple models in one place. You can select which models to look at, or you can see them all at once.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Model_Comparisons.PNG" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19856iFA2A72C0701A0F51/image-size/large?v=v2&amp;amp;px=999" role="button" title="Model_Comparisons.PNG" alt="Model_Comparisons.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Local Data Filter + SEM = Greatness&lt;/H3&gt;
&lt;P&gt;Questions such as “How do these models fit for this subset of the sample?” are important and often lead to invaluable insights, but seasoned SEM analysts have learned the pain such questions invoke. The pain comes from recognizing the amount of time needed to create new data sets and re-run all the models. In JMP Pro, the Local Data Filter will transform your pain into eagerness! In a matter of seconds, you can select the level of a variable that denotes the subset of your sample and all your models update instantly! You’ll have answers to all those insightful questions within seconds. If you’re in academia, think how much time that’ll save you in responding to reviewers’ comments. This is one of our favorite features and we can’t wait for you to try it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="dmZ2ZvaTE6clHhDtZGmMqSKWS9uqxMDz" width="400" height="245" size="medium" uploading="false" thumbnail="http://cf.c.ooyala.com/dmZ2ZvaTE6clHhDtZGmMqSKWS9uqxMDz/Ut_HKthATH4eww8X4xMDoxOnNoMTsqr1" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;High-Quality Path Diagrams&lt;/H3&gt;
&lt;P&gt;Nobody likes to spend their time building SEM path diagrams in PowerPoint, Vizio, or any other non-statistical software. Similarly, nobody likes to use the subpar diagrams that are often produced by automated algorithms. The SEM platform in JMP Pro has high-quality, presentation-ready, appealing-to-the-eye, path diagrams. These diagrams are interactive* so you can arrange them just the way you want them (although we get them to you in pretty good shape from the get-go). Save them as a picture file and forget about busy work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="1wZ2ZvaTE6sBe4viAY_wwpu2owXfvPBL" width="400" height="272" size="medium" uploading="false" thumbnail="http://cf.c.ooyala.com/1wZ2ZvaTE6sBe4viAY_wwpu2owXfvPBL/Ut_HKthATH4eww8X4xMDoxOnUzMTvOmN" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;H3&gt;Ongoing Error Checking&lt;/H3&gt;
&lt;P&gt;“The matrix is not positive definite” is one of numerous warning messages that SEM analysts are used to encountering when fitting complex models to data. Many times, issues are due to mistakes that are easily introduced (even by expert users) due to the incredible flexibility afforded by SEM. Unfortunately, these issues are only found after running the faulty model. The SEM platform in JMP Pro performs ongoing checks on the specification of the model to save users time and effort in tracking potential issues. The Details box gives you immediate information on the specified model and our Status tab* will let you know if you’re on the right path, the expert path, or a risky path.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;LI-VIDEO vid="B2Z2ZvaTE6N4BgGGR3eXhw8JUWxsgsaK" width="400" height="354" size="medium" uploading="false" thumbnail="http://cf.c.ooyala.com/B2Z2ZvaTE6N4BgGGR3eXhw8JUWxsgsaK/Ut_HKthATH4eww8X4xMDoxOmVsOxhoLh" align="center"&gt;&lt;/LI-VIDEO&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These are my five favorite reasons for using the SEM platform in &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7011O000002OuZY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro 15&lt;/A&gt;. Give it a try and let us know what your favorites are! Maybe you’ll enjoy visualizing your models’ residuals, sorting results based on parameter estimates or model fit indices, or the model shortcuts. There’s lots to discover and much more to come in the new SEM platform!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;*Coming in JMP Pro 15.1: model estimates on path diagram, interactive path diagram, AICc weights for model comparison, and Status tab with checks for identification rules and expanded model details.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Nov 2019 14:20:01 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Structural-Equation-Modeling-The-arrival-of-a-powerful-new/ba-p/230440</guid>
      <dc:creator>LauraCS</dc:creator>
      <dc:date>2019-11-25T14:20:01Z</dc:date>
    </item>
    <item>
      <title>How to launch JMP the first time on Mac OS 10.14 Mojave and 10.15 Catalina</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-to-launch-JMP-the-first-time-on-Mac-OS-10-14-Mojave-and-10/ba-p/230344</link>
      <description>&lt;P&gt;&lt;EM&gt;This is part 2 of 2: In &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/How-to-install-JMP-on-Mac-OS-10-14-Mojave-and-10-15-Catalina/ba-p/230330" target="_blank" rel="noopener"&gt;part one&lt;/A&gt;, we covered the download and installation of JMP software on Mac OS 10.14 Mojave and 10.15 Catalina. In the second part, here, we cover launching JMP for the first time.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Apple Mac OS prefers you open applications that come through their Apple App Store. This is especially true in Mac OS 10.14 (Mojave) and 10.15 (Catalina).&amp;nbsp; While Mac OS allows you to install applications you download outside of the App Store, it will give errors and/or warnings about the installation and make you follow a certain process to complete the installation.&lt;/P&gt;
&lt;P&gt;The Mac OS application process is designed to protect you from becoming the victim of malware software or accidentally installing something that is not good for your system. However, the process can be confusing and unsettling to new Mac OS users or users who have not encountered the messages before. Fortunately, the process to allow &amp;nbsp;to run is a straightforward one.&lt;/P&gt;
&lt;H3&gt;Open JMP in System Preferences&lt;/H3&gt;
&lt;P&gt;If you attempt to open the JMP app after you installed it, Mac OS may stop you and require permission to run JMP.&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-center" image-alt="unidentified.png" style="width: 429px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19851iC51E48659C28EDEC/image-size/large?v=v2&amp;amp;px=999" role="button" title="unidentified.png" alt="unidentified.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To successfully launch JMP do the following. Open &lt;STRONG&gt;System Preferences&lt;/STRONG&gt; (Apple menu &amp;gt; System Preferences) and select &lt;STRONG&gt;Security &amp;amp; Privacy&lt;/STRONG&gt;. On the &lt;STRONG&gt;General&lt;/STRONG&gt; tab, you will see a message near the bottom of the window stating that &lt;STRONG&gt;“JMP was blocked from use because it is not from an identified developer”.&lt;/STRONG&gt;&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-center" image-alt="security.png" style="width: 668px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19852i7D39A96F766474AA/image-size/large?v=v2&amp;amp;px=999" role="button" title="security.png" alt="security.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;Next to this message will be a button, &lt;STRONG&gt;“Open Anyway”&lt;/STRONG&gt;. Click it.&lt;/P&gt;
&lt;P&gt;You will be asked one more time to confirm your request.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click Open. and JMP should launch immediately.&lt;/P&gt;
&lt;P&gt;This creates an exception for the JMP app. You will be able to open JMP in the future without having to repeat this process.&lt;/P&gt;
&lt;P&gt;I hope you have found this article helpful. If you still need assistance, you can search the &lt;A href="https://community.jmp.com" target="_blank" rel="noopener"&gt;JMP User Community&lt;/A&gt; or request assistance from &lt;A href="https://support.sas.com/ctx/supportform/createForm?ctry=us_JMP" target="_blank" rel="noopener"&gt;JMP Technical Support&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Fri, 25 Oct 2019 14:16:35 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-to-launch-JMP-the-first-time-on-Mac-OS-10-14-Mojave-and-10/ba-p/230344</guid>
      <dc:creator>dave_matthews1</dc:creator>
      <dc:date>2019-10-25T14:16:35Z</dc:date>
    </item>
    <item>
      <title>How to install JMP on Mac OS 10.14 Mojave and 10.15 Catalina</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/How-to-install-JMP-on-Mac-OS-10-14-Mojave-and-10-15-Catalina/ba-p/230330</link>
      <description>&lt;P&gt;&lt;EM&gt;Part 1 of 2:&amp;nbsp; In this part, we cover the download and installation of JMP software. In the &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/How-to-launch-JMP-the-first-time-on-Mac-OS-10-14-Mojave-and-10/ba-p/230344" target="_blank" rel="noopener"&gt;second part&lt;/A&gt;, we cover launching JMP for the first time.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Apple Mac OS prefers you install applications through their Apple App Store. This is especially true in Mac OS 10.14 (Mojave) and 10.15 (Catalina). While Mac OS allows you to install applications you download outside of the App Store, it will give errors and/or warnings about the installation and make you follow a certain process to complete the installation.&lt;/P&gt;
&lt;P&gt;The Mac OS application process is designed to protect you from becoming the victim of malware software or accidentally installing something that is not good for your system. However, the process can be confusing and unsettling to new Mac OS users or users who have not encountered the messages before. Fortunately, the process to allow JMP to run is a straightforward one.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Downloading JMP&lt;/H3&gt;
&lt;P&gt;To download &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7011O000002OuZY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP&lt;/A&gt;, please follow the instructions that are provided. The JMP trial version provides these instructions in the email with your download link and serial number. The single-user and annual license versions provide these instructions in the Software Order Email, sent to your SAS Site Representative. If you are not the Site Representative, please contact that person about how to access the software at your organization.&lt;/P&gt;
&lt;H3&gt;Installing JMP&lt;/H3&gt;
&lt;P&gt;Once you have downloaded JMP, you will need to double-click the PKG file to launch JMP.&lt;/P&gt;
&lt;P&gt;In Mac OS 10.14 Mojave and 10.15 Catalina, the Mac OS software security utility, Gatekeeper, will force you to verify that you want to install the software.&amp;nbsp; Software that is installed outside of the Apple App Store will typically have to follow this process.&lt;/P&gt;
&lt;P&gt;You will typically encounter one of two messages:&lt;/P&gt;
&lt;P&gt;The first message states it is unable to scan the JMP software for malicious code.&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-center" image-alt="malicious.png" style="width: 424px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19846i302DC9CED707D52A/image-size/large?v=v2&amp;amp;px=999" role="button" title="malicious.png" alt="malicious.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The other message states the JMP software is from an unidentified developer.&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-center" image-alt="unidentified.png" style="width: 429px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19848iD9F3B837849E1735/image-size/large?v=v2&amp;amp;px=999" role="button" title="unidentified.png" alt="unidentified.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To allow JMP to install, you will need to follow Apple’s process.&lt;/P&gt;
&lt;P&gt;To do this, open &lt;STRONG&gt;System Preferences&lt;/STRONG&gt; (Apple menu &amp;gt; System Preferences) and select &lt;STRONG&gt;Security &amp;amp; Privacy&lt;/STRONG&gt;. On the &lt;STRONG&gt;General&lt;/STRONG&gt; tab, you will see a message near the bottom of the window stating that &lt;STRONG&gt;“JMP can’t be opened because Apple cannot check it for malicious software” &lt;/STRONG&gt;or&lt;STRONG&gt; “JMP was blocked from use because it is not from an identified developer”.&lt;/STRONG&gt;&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-center" image-alt="security.png" style="width: 668px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19849iA875900294A87814/image-size/large?v=v2&amp;amp;px=999" role="button" title="security.png" alt="security.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;Next to this message will be a button, &lt;STRONG&gt;“Open Anyway”&lt;/STRONG&gt;. Click that button.&lt;/P&gt;
&lt;P&gt;You will be asked one more time to confirm your request.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click Open and the JMP installation process should begin immediately.&lt;/P&gt;
&lt;P&gt;Part 2, How to Launch JMP the first time on Mac OS 10.14 Mojave and 10.15 Catalina is covered &lt;A href="https://community.jmp.com/t5/JMP-blog-authoring/How-to-launch-JMP-the-first-time-on-Mac-OS-10-14-Mojave-and-10/ba-p/230344" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I hope you have found this article helpful. If you still need assistance, you can search the&amp;nbsp;&lt;A href="https://community.jmp.com" target="_blank" rel="noopener"&gt;JMP User Community&lt;/A&gt;&amp;nbsp;or request assistance from &lt;A href="https://support.sas.com/ctx/supportform/createForm?ctry=us_JMP" target="_blank" rel="noopener"&gt;JMP Technical Support&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Fri, 25 Oct 2019 14:17:33 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/How-to-install-JMP-on-Mac-OS-10-14-Mojave-and-10-15-Catalina/ba-p/230330</guid>
      <dc:creator>dave_matthews1</dc:creator>
      <dc:date>2019-10-25T14:17:33Z</dc:date>
    </item>
    <item>
      <title>Functional data analysis for photovoltaic devices: A ray of hope for more clean energy</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Functional-data-analysis-for-photovoltaic-devices-A-ray-of-hope/ba-p/230397</link>
      <description>&lt;P class="body"&gt;&lt;EM&gt;The strength&amp;nbsp;of the JMP Pro &lt;A href="https://www.jmp.com/support/help/en/15.0/#page/jmp/overview-of-the-functional-data-explorer-platfor.shtml#ww269465" target="_self"&gt;Functional Data Explorer&lt;/A&gt; platform (FDE) is identifying and extracting key features of functional processes for use in further modeling.This is done by fitting a functional model to the data using a B-spline, P-spline, or Fourier basis model; performing a functional principal components analysis on the functional model; saving the PCA results; and using the results for feature extraction and analysis in another modeling platform.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Hadley Myers&amp;nbsp;&lt;LI-USER uid="7531"&gt;&lt;/LI-USER&gt;&amp;nbsp;and Don McCormack&amp;nbsp;&lt;LI-USER uid="5080"&gt;&lt;/LI-USER&gt;, two JMP Systems Engineers, recently contributed to a paper in IEEE describing how they used &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt; to better understand how photovoltaic (PV) devices are affected by changes in deposition conditions and the influence this has on device quality. What are photovoltaic devices? They are systems that convert sunlight directly to electricity using photovoltaic cells made of semiconductor materials.&lt;/P&gt;
&lt;P&gt;Hadley and Don leveraged the use of Functional Data Explorer (FDE) because of its usefulness for analyzing curves that vary across a continuum, such as those recorded during current voltage (JV) and External Quantum Efficiency (EQE) measurements. NOTE: EQE curves show the ratio of the number of charge carriers collected by the solar cell to the number of photons of a given wavelength.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Diagram of a typical crystalline silicon (c-Si) cell. (Courtesy of Solar Energy Industries Association)" style="width: 749px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19858i1BBD96D32FB5A21E/image-dimensions/749x523?v=v2" width="749" height="523" role="button" title="Diagram of Typical Crystalline Silicon (c-Si) Cell Courtesy of Solar Energy Industries Association.JPG" alt="Diagram of a typical crystalline silicon (c-Si) cell. (Courtesy of Solar Energy Industries Association)" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Diagram of a typical crystalline silicon (c-Si) cell. (Courtesy of Solar Energy Industries Association)&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;One of their goals was to apply functional data analysis, and specifically to test JMP Pro FDE as a new tool to gain insight into the complex interplay of the various factors.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;They followed this sequence:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Characterize the photovoltaic cells by measuring current-density–voltage (&lt;EM&gt;JV&lt;/EM&gt;) characteristics under AM1.5 illumination for the different back contact sets at the various maximum growth temperatures during deposition.&lt;/LI&gt;
&lt;LI&gt;Remove device outliers.&lt;/LI&gt;
&lt;LI&gt;Model performance for remaining devices, enforcing statistical heredity to limit the total number of models.&lt;/LI&gt;
&lt;LI&gt;Perform functional data analysis on the entire JV and EQE curves using the FDE platform in JMP Pro.&lt;/LI&gt;
&lt;LI&gt;Fit models to output of FDE to identify key factors contributing to the functional responses that had been missed in Step 3.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;What they found:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;FDA helped isolate and quantify the effect of deposition temperature on the EQE of the devices. Specifically, temperature was seen to be the only factor that significantly influenced variation. The curve shapes showed that higher temperatures appeared in general to result in increased bandgaps of the absorber and decreased collection in the entirety of the absorber layer.&lt;/LI&gt;
&lt;LI&gt;Higher growth temperature seems to improve the final diode, but might adversely affect semiconductor material quality.&lt;/LI&gt;
&lt;LI&gt;Effect of back-contact deposition conditions (%O&lt;SUB&gt;2&lt;/SUB&gt; in sputtering chamber and film thickness) on the JV-response that had been missed when only considering the usual device parameters.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The study increased the&lt;SPAN style="font-family: inherit;"&gt;&amp;nbsp;understanding of photovoltaic devices, uncovered new and previously undetected effects, and is just one example of how to use &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt; FDE in the pursuit of better (and hopefully environmentally sound) devices and systems. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;The techniques used in this study of&amp;nbsp;Copper Indium Gallium Selenide (CIGS) photovoltaic&amp;nbsp;devices can be applied to the analysis of other types of PV structures, including those&amp;nbsp;&lt;/SPAN&gt;constructed using Crystalline Silicon (c-Si).&lt;/P&gt;
&lt;P&gt;Get the full details on the study and its results in "&lt;A href="https://ieeexplore.ieee.org/document/8771223" target="_blank" rel="noopener"&gt;Functional Data Analysis of Electrical Measurements on Thin-Film Photovoltaic Devices"&lt;/A&gt; by Hadley Franklin Myer, Don McCormack, Muhammad Saifullah, Tobias Bertram, Rutger Schlatmann and Christian A. Kaufmann.&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-center" image-alt="By the way,  photovoltaic (PV) solar arrays at SAS World Headquarters in Cary, NC generate 3.8 million kilowatt-hours of clean, renewable energy annually." style="width: 748px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19857iC37B1C10B9E4C9C5/image-dimensions/748x405?v=v2" width="748" height="405" role="button" title="SASsheep.jpg" alt="By the way, photovoltaic solar arrays at SAS world headquarters in Cary, NC, generate 3.8 million kilowatt-hours of clean, renewable energy annually." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;By the way, photovoltaic solar arrays at SAS world headquarters in Cary, NC, generate 3.8 million kilowatt-hours of clean, renewable energy annually.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2019 15:36:19 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Functional-data-analysis-for-photovoltaic-devices-A-ray-of-hope/ba-p/230397</guid>
      <dc:creator>gail_massari</dc:creator>
      <dc:date>2019-10-24T15:36:19Z</dc:date>
    </item>
    <item>
      <title>JMP 15の新機能を使って、ラグビーの得点状況を可視化</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-15%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-%E3%83%A9%E3%82%B0%E3%83%93%E3%83%BC%E3%81%AE%E5%BE%97%E7%82%B9%E7%8A%B6%E6%B3%81%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96/ba-p/229498</link>
      <description>&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;日本は、丁度ラグビー日本代表の活躍に熱狂しているところです。現在、ラグビーワールドカップ&lt;SPAN style="margin: 0px;"&gt;2019&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;が日本で開催されておりますが、日本は予選リーグで&lt;SPAN style="margin: 0px;"&gt;4&lt;/SPAN&gt;戦全勝し、初めてベスト&lt;SPAN style="margin: 0px;"&gt;8&lt;/SPAN&gt;に進むことができました。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;そんな中、丁度&lt;SPAN style="margin: 0px;"&gt;JMP 15&lt;/SPAN&gt;がリリースしました。データ分析家の血が騒いだのは言うまでもありません。予選リーグのデータを集め、いくつかのデータを可視化してみることにしました。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;ラグビーでは、トライ、コンバージョン、ペナルティキック、ドロップゴールなどさまざまな方法で点数を取ることができ、時間内に点数を積み上げていき、最後に点数が上回ったチームの勝利になります。そこで、&lt;SPAN style="margin: 0px;"&gt;2&lt;/SPAN&gt;チームの対戦で、時間ごとにどのように得点を積み上げていったかを&lt;SPAN style="margin: 0px;"&gt;JMP&lt;/SPAN&gt;を使って可視化してみることにしました。そんな時、&lt;SPAN style="margin: 0px;"&gt;JMP 15&lt;/SPAN&gt;の新機能が役に立ったのです！&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;次のグラフは、ウェールズ（&lt;SPAN style="margin: 0px;"&gt;WALES&lt;/SPAN&gt;）&lt;SPAN style="margin: 0px;"&gt;vs &lt;/SPAN&gt;フィジー（&lt;SPAN style="margin: 0px;"&gt;FIJI&lt;/SPAN&gt;）について、時間（横軸）ごとの総得点（縦軸）可視化したものになります。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="1.WalesvsFiji.jpg" style="width: 795px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19750iB57A49982F4BCD94/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.WalesvsFiji.jpg" alt="1.WalesvsFiji.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;前半の&lt;SPAN style="margin: 0px;"&gt;30&lt;/SPAN&gt;分ぐらいまでは、フィジーがリードしていましたが、その後ウェールズが逆転し、さらに逆転、逆転で、最終的には、ある程度差をつけてウェールズが勝利したことがわかります。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;このグラフは、&lt;SPAN style="margin: 0px;"&gt;JMP 15&lt;/SPAN&gt;のグラフビルダーで、折れ線グラフの下側を塗りつぶすことにより描くことができます。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;グラフビルダーで折れ線を描くと、&lt;SPAN style="margin: 0px;"&gt;JMP 15&lt;/SPAN&gt;では次のようなオプションを設定でき、「塗りつぶし」のオプションを&lt;SPAN style="margin: 0px;"&gt;[&lt;/SPAN&gt;下に塗りつぶす&lt;SPAN style="margin: 0px;"&gt;] &lt;/SPAN&gt;を指定します。ちなみに、この折れ線の「接続」オプションは、&lt;SPAN style="margin: 0px;"&gt;[&lt;/SPAN&gt;ステップ&lt;SPAN style="margin: 0px;"&gt;] &lt;/SPAN&gt;に設定して、階段状のグラフにしています。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.LineSetting_jpn.jpg" style="width: 335px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19751iD3C618EEC1FC4C2C/image-size/large?v=v2&amp;amp;px=999" role="button" title="2.LineSetting_jpn.jpg" alt="2.LineSetting_jpn.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="background-color: transparent; box-sizing: border-box; color: #333333; font-family: &amp;amp;quot; ｍｓ ｐゴシック&amp;amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px; margin: 0px;"&gt;&lt;FONT color="#000000" style="box-sizing: border-box;"&gt;以下は、&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&lt;SPAN style="margin: 0px;"&gt;JMP&lt;/SPAN&gt;を英語表示したときのオプションになり、&lt;SPAN style="margin: 0px;"&gt;Fill&lt;/SPAN&gt;を &lt;SPAN style="margin: 0px;"&gt;[Fill Below] &lt;/SPAN&gt;に指定します。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3.LineSetting_eng.jpg" style="width: 325px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19752iD3E15250FE5FCD2C/image-size/large?v=v2&amp;amp;px=999" role="button" title="3.LineSetting_eng.jpg" alt="3.LineSetting_eng.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;下のグラフは、ベスト&lt;SPAN style="margin: 0px;"&gt;8&lt;/SPAN&gt;をかけて死闘を繰り広げた　日本&lt;SPAN style="margin: 0px;"&gt;(Japan) vs &lt;/SPAN&gt;スコットランド&lt;SPAN style="margin: 0px;"&gt;(Scotland) &lt;/SPAN&gt;の試合です。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="4.JapanvsScotland.jpg" style="width: 781px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19753iFECCAED79F244D3C/image-size/large?v=v2&amp;amp;px=999" role="button" title="4.JapanvsScotland.jpg" alt="4.JapanvsScotland.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;日本は先制点を許すも、すぐに逆転し、最後には追い付かれそうになったが、逃げ切った様子が可視化できています。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;他の対戦についてのグラフや、他の可視化した結果は、&lt;A title="Naohiro's JMP Public" href="https://public.jmp.com/packages/Rugby-World-Cup-2019-Visualizations/js-p/SnyF12jQ1VvyMLRZnCD1P" target="_blank" rel="noopener"&gt;&lt;SPAN style="margin: 0px;"&gt;JMP Public &lt;/SPAN&gt;&lt;/A&gt;に公開しています。データフィルタの機能を使って、予選の組ごとや国ごとに絞って分析結果を見ることができますので、是非ご確認ください。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 56px;"&gt;&lt;SPAN style="margin: 0px; font-family: 'ＭＳ Ｐゴシック';"&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px;"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Oct 2019 04:45:31 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-15%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-%E3%83%A9%E3%82%B0%E3%83%93%E3%83%BC%E3%81%AE%E5%BE%97%E7%82%B9%E7%8A%B6%E6%B3%81%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96/ba-p/229498</guid>
      <dc:creator>naohiro_masu</dc:creator>
      <dc:date>2019-10-18T04:45:31Z</dc:date>
    </item>
    <item>
      <title>Optimizing film topology using target functions in functional data analysis</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Optimizing-film-topology-using-target-functions-in-functional/ba-p/225448</link>
      <description>&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Earlier in &lt;A href="https://community.jmp.com/t5/tag/Applying%20FDA/tg-p/board-id/jmper-cable" target="_self"&gt;this blog series&lt;/A&gt;, I mentioned that functional data analysis (FDA) could be used with experimental design. It’s an interesting idea to consider. What if you wanted to optimize the shape of a curve? Or, understand how to control the periodicity of a response? That’s what I want to discuss in this last entry in this series. To do it, we’re going to use “The Way Back Machine” and go back to 2010 to that year's JMP ENBIS Challenge.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;The 2010 ENBIS Challenge&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="What's Golden Curve optimization or analysis?" style="width: 300px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20256i6BF354B6A0D43473/image-size/medium?v=v2&amp;amp;px=400" role="button" title="mollusc-mother-of-pearl-nautilus-33234.jpg" alt="What's Golden Curve optimization or analysis?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;What's Golden Curve optimization or analysis?&lt;/span&gt;&lt;/span&gt;&lt;/H3&gt;
&lt;P&gt;Let me take you back to 2010. Ian Cox (&lt;LI-USER uid="3605"&gt;&lt;/LI-USER&gt;&lt;SPAN style="font-family: inherit; font-size: 16px;"&gt;&amp;nbsp;Worldwide Technical Director) submitted a simulator for an LPCVD (Low-Pressure Chemical Vapor Deposition) process to the European Network for Business and Industrial Statistics (ENBIS) annual conference for their ENBIS Challenge. The challenge was to find a process recipe that would maximize the simulated profit and reduce defectively on the simulated parts. If you want to play with the simulator, &lt;/SPAN&gt;&lt;A style="font-family: inherit; font-size: 16px; background-color: #ffffff;" href="https://enbis.org/activities/jmp_challenge/past/challenge2010/index" target="_blank" rel="noopener"&gt;it’s still up&lt;/A&gt;&lt;SPAN style="font-family: inherit; font-size: 16px;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Part of the challenge was that you had to consider the cost of development in the profitability calculations and only had a certain amount of total material to play withal (for production and development). I stumbled into the simulator a couple of years after the fact while I was looking for an example I could use for some training purposes. It turns out Ian did his homework when developing the simulator, and it does a nice job of replicating the output of the LPCVD process with realistic defect rates, etc. It’s still an informative tool for demonstrating why DOE is the only way to do process development. We’re going to use it here, although maybe somewhat outside its original scope.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Golden Curves Ahead&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;One of the main benefits of FDA is that it makes it possible to use curves (not individual data points) as factors in a model. One could also argue that we would want to look at how process factors (time, temperature, etc.) affect an observed curve. FDA can do that, too. The next logical step in that line of thinking is:&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;I know the curve I’m after&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;(either through first principles or process constraints)&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;. I want to optimize my process conditions to fit the curve I’ve provided as closely as possible.&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;This idea is an extension of what we would do in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; with the Profiler and the Maximize Desirability routine. In the world of FDA, that is called a “Golden Curve” optimization. This Golden Curve Analysis is what we are going to focus on today.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;The Process&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;First off, I’m not going to give a long-winded treatise of LPCVD. It’s not that important to this discussion. But, just so you’re not flying blind, here’s the elevator speech version. The process is used to put films and coatings on stuff. The films can be functional (corrosion protection) or decorative (like finishes on higher-end bathroom fixtures). In LPCVD, you put a substrate into a chamber (this could be a silicon wafer, a drill bit, or the faucet in your kitchen). The chamber is then evacuated (the low-pressure part) and heated up to some temperature. Then reactive gasses are introduced into the chamber at a controlled rate. The gasses react and attach themselves to the surfaces of the parts. Some times radio frequencies are used to break chemical bonds in the gases to make the process more efficient.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt; &lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ENBIS Simulator DOE Interface" style="width: 723px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19661i3C5C562C7D62051C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Simulator DOE.png" alt="ENBIS Simulator DOE Interface" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;ENBIS Simulator DOE Interface&lt;/span&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;In the DOE simulator, we have control over a number of the process parameters and gas flow rates. The simulator gives data measured from 49 sites across the substrate arranged as a center point and three concentric rings of measurements. This measurement pattern is relatively standard in the industry. It’s not my favorite by a long shot, but it shows up a lot.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Standard-49-SIte-Sampling-Plan/js-p/MxRv8GfFY4vvWrmWYzyzh-1/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;The Problem&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;There are a couple of problems we have to deal with in the LPCVD simulator. First is the issue of getting the target thickness and film parameters correct. If you didn't care about the profile of the film, this could be done using a standard DOE and focusing on some summary statistic like the average or median film thickness. The second issue is that, because of the geometry of the chamber and the way the gases flow, the film is not uniform. It usually has a toroidal feature in the middle of the substrate. This second problem is why we need to use FDA to deal with the analysis.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Common-Film-thickness-profile-in-LPCVD-d/js-p/MxRv8GfFY4vvWrmWYzyzh-2/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;SPAN data-preserver-spaces="true"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;The Analysis&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-preserver-spaces="true"&gt;Let me skip ahead to the bit where I'm analyzing the DOE results. &lt;/SPAN&gt;&lt;SPAN data-preserver-spaces="true"&gt;Doing a graphical analysis of the DOE wafers, we can see that the non-uniformity of the wafer has radial symmetry. We can use this to our advantage and convert the (x,y) coordinates provided by the simulation to calculate the radius for each point using the Pythagorean Theorem. This transform reduces the dimensionality of the data set and makes FDA more straightforward.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/FDOE-sample-data-with-a-radial-transform/js-p/MxRv8GfFY4vvWrmWYzyzh-3/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;SPAN data-preserver-spaces="true"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Before I do the FDA in the Functional Data Explorer platform in &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt;, I need to add a set of data to the DOE analysis results. This data set will be the target curve. It contains the target parameters for a large number of radii between the measured data points. I'm providing a large number of data points to force the optimization algorithm to look for a solution that matches the target curve (in this case, a uniform value across the substrate) closely.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/FDOE-data-set-enriched-with-a-target-fun/js-p/MxRv8GfFY4vvWrmWYzyzh-4/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Now, I can do FDA. The setup in JMP Pro is below. I’m focusing on just the thickness in this example. Note that I’m using radius as my “X, Input” value. Recall in an earlier post in this series that the definition of time is somewhat fluid in FDA, so this is OK. Note that my DOE parameters are supplementary variables. Once I’ve hit OK in the launch dialog, I need to do one thing differently than I usually would with FDE. I need to click on the “Load” button in the Target Function part of the FDE interface. Doing this will bring up a dialog that lists the function IDs. I select the one associated with the target function (added when I created it) and click “OK.”&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FDOE Set-up.png" style="width: 896px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19663i9C3C7FDA9FF018D2/image-size/large?v=v2&amp;amp;px=999" role="button" title="FDOE Set-up.png" alt="FDOE Set-up.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Now, with the preliminaries over, we can create the functional form of the experimental data and pass it to a modeling platform. There’s a good tutorial on how do the mechanics of creating the functional form &lt;A href="https://www.jmp.com/en_dk/events/ondemand/mastering-jmp/functional-data-explorer-part-1.html" target="_self"&gt;here&lt;/A&gt;. &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro 15&lt;/A&gt; handles all the mechanics of passing the functional forms and the supplementary variables to the Fit Model Platform behind the scenes. So, you only need to select Functional DOE analysis from under the red triangle menu for the model. This will give you access to the Generalized Regression personality in Fit Model and pull up the Profiler automatically from within FDE. (Note that all the reports and data are available &lt;A href="https://public.jmp.com/packages/Functional-DOE-Optimization-of-LPCVD-Fil/js-p/MxRv8GfFY4vvWrmWYzyzh" target="_self"&gt;here&lt;/A&gt; on JMP Public.)&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FDE1.png" style="width: 728px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20244iC5FE5361CB62250C/image-size/large?v=v2&amp;amp;px=999" role="button" title="FDE1.png" alt="FDE1.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;When you’ve provided a target function, the Profiler has two additional rows of graphs. These show the difference between the function produced by the current settings and the target function and the integrated error between the target function and the current function. When you select Maximize Desirability from the Profiler red triangle menu, JMP attempts to minimize the integrated difference between the target and the displayed function. In our case, JMP searches for the setting that produces the flattest thickness curve in the process. From there, you’d need to read off the values in the Profiler and do a couple of verification runs to check the results. (Always verify your DOE predictions, people!!). &lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FDE2.png" style="width: 918px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20245iCC500C131CCD30A6/image-size/large?v=v2&amp;amp;px=999" role="button" title="FDE2.png" alt="FDE2.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Let's Practice What We Preach&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;So, looking at the FDOE Profiler, we can see that the parameters that really drive this process are Deposition Time, Deposition Temperature, &amp;nbsp;and Deposition Pressure. We are going to presume that we need to run the process at 300℃, deposit for 824 seconds at 261 mTorr. However, there is a great adage involving assuming and what it turns oneself into ... so we're going to do some validation runs with those settings. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Before I do the runs though, I'm going to do a little simulation using the Profiler's simulation capabilities to understand the probable range of the data. I'm going to do that to act as a stand-in for a calculated confidence interval. It's not perfect, but it will at least give me an idea of what the output data should look like for this situation if my model is correct. Here's the FDOE output with the simulator turned on and some best guess values for the process parameters.&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FDE3.png" style="width: 805px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20246iC90DB374EE06A67E/image-size/large?v=v2&amp;amp;px=999" role="button" title="FDE3.png" alt="FDE3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;And, here are the results of the validation runs with some historical data from the ENBIS challenge for comparison. Note that this control chart is looking at the average film thickness over the entire wafer. If you look at the Profiler above, you can see that the edge and outer region of the wafer have lower film thickness. They also have the majority of the data points in the wafer (look at the sampling plan at the top of the article). This will combine to skew the wafer mean values downward (one of the major reasons I'm not a fan of this sampling plan). But, that little quirk aside, the wafers are now all within spec and the variation lot to lot has also dropped. &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Control-Chart-of-Historical-and-Validati/js-p/MxRv8GfFY4vvWrmWYzyzh-8/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Golden Curve Analysis is probably my favorite application of FDA. Trying to optimize a process with a known spatial correlation while ignoring the effects of that correlation has always bugged me. However, it’s quite a challenge to do the analysis other ways -- particularly within the framework of a DOE.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Nov 2019 12:13:03 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Optimizing-film-topology-using-target-functions-in-functional/ba-p/225448</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2019-11-12T12:13:03Z</dc:date>
    </item>
    <item>
      <title>Image and wafer analysis using functional data analysis</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Image-and-wafer-analysis-using-functional-data-analysis/ba-p/225444</link>
      <description>&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;If you're just now tuning in to the series, welcome! This is the third entry in what was supposed to be a simple little blog article to deal with some writer's block on another project. Things escalated quickly…&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Here are the other entries in the series:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/A-5-minute-introduction-to-functional-data-analysis/ba-p/225442" target="_self"&gt;&lt;SPAN data-preserver-spaces="true"&gt;A 5-minute introduction to functional data analysis&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.jmp.com/t5/JMPer-Cable/Chemical-reaction-monitoring-using-functional-data-analysis/ba-p/225443" target="_self"&gt;&lt;SPAN&gt;Chemical reaction monitoring using functional data analysis&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;And now on to the subject of this post.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;An Interesting Question&lt;/H3&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="How do you use functional data analysis for images or wafer maps?" style="width: 298px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/20040i2D44A69FFA305AC6/image-dimensions/298x197?v=v2" width="298" height="197" role="button" title="laura-ockel-wafer-analysis-unsplash.jpg" alt="How do you use functional data analysis for images or wafer maps?" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;How do you use functional data analysis for images or wafer maps?&lt;/span&gt;&lt;/span&gt;Almost as soon as the Functional Data Explorer (FDE) came out, I started getting questions about using FDE for images or wafer maps. Conceptually, it made sense to me that this would be useful. And, I was pretty sure the math could handle it. However, Functional Data Explorer in &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt; wasn't set up to handle the data structure. So, I found a way around the problem.&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;This article is an explanation of the thought process and mechanics of how I got image/wafer map data to work in FDE. The trick is to change your point of view. Let me show you what I mean.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Some Motivation&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Before we go too far down this path, let's take a second to consider why we would want to analyze wafer maps or images. People are &lt;A href="https://community.jmp.com/t5/JMP-Blog/The-1st-thing-I-wish-someone-had-told-me-when-I-started-using/ba-p/210542" target="_self"&gt;visual creatures&lt;/A&gt;. We can easily see patterns in data that (whether they are there or not). &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Examples-of-Wafer-Defect-Signatures/js-p/vBcr9SBg5Q1602cGl33fw-2/indexPage" width="800" height="500" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;This ability is particularly useful in manufacturing and defect analysis. With wafer maps, it is easy to pick out patterns caused by different processes by eye (like the ones shown above). Having an algorithm that can do something similar that presents the information in a manner that is easy to use in subsequent analyses is priceless. Similarly with image analysis or other data that are presented in the form of heat maps, being able to translate visual information into an analytically friendly format opens many new avenues for analysis. &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;A Thought Exercise&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;The biggest problem with getting FDA to work is deciding what the "function" is in the data set. And that's where most people start. In JMP Pro, they will usually sit, staring at the "ID, Function" field trying to figure out what to put in there before they do anything else -- and that is a horrible plan,&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;especially&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN data-preserver-spaces="true"&gt;&amp;nbsp;when you're trying to do FDA on images, wafer maps, etc.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Let me give some context to where I'm going with this. The question that got me thinking about this problem was around something called a wafer map. Here's a picture of one:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Example-of-a-Semiconductor-Wafer-Map/js-p/vBcr9SBg5Q1602cGl33fw-1/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;In the semiconductor industry, we tend to think of wafer data in one of two ways: a collection of individual cells (called die) or as images, where the wafer is the thing we analyze. From a process perspective, that first method doesn't make sense. Since changes to a process affect the wafer globally (it's tough to adjust process conditions to alter one specific die), each wafer is more like an image. And therein lies our problem. How do we encode the spatial information into a functional data analysis?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;Now, what if we stop worrying about defining the function for a second. What if we change our perspective a little and determine what the "time" variable is? If we do that, the path forward becomes more apparent by the process of elimination. It turns out each wafer is a snapshot in time. The same goes for pictures -- just like a movie -- each frame of a movie film represents an instant in time. If someone is doing FDA on image data, they are generally looking at the same field of view collected over time. With images, "time" can also be thought of as slices moving through a volume or changes in energies, exposure times, etc. So "time" is a stand-in for an independent variable (i.e., what you alter in your experiment, etc.).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/3D-Scatterplot-of-a-series-of-semiconduc/js-p/vBcr9SBg5Q1602cGl33fw-3/indexPage" width="800" height="800" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;SPAN data-preserver-spaces="true"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;In our semiconductor data set, the wafers all to have a value attached to them called the Wafer ID. These IDs are ordered chronologically. In the 3D scatterplot above, we can use the z-axis (up) as moving forward in time. So, if the wafers (or images) are the "time" variable, what does that leave for us to consider the "function?" The answer is the die or pixels. If we consider the (x,y) coordinate of each die or pixel as an ID of sorts, we can create a unique identifier that we can use as the function ID. Using that logic, we can plot the average response for different families of functions (die) and look at the average number of defects over a series of wafers (the "time" domain). We can see that the edge has a much larger problem with defects than the center of the wafer (to which every semiconductor engineer goes, "Yup, now tell me something I don't know.").&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Considering-die-as-functions/js-p/vBcr9SBg5Q1602cGl33fw-4/indexPage" width="1100" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Changing Perspective&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;It turns out that considering a die or pixel location as the functional ID has some positive and negative consequences. On the plus side, we can do FDA on images and image like structures (wafer maps). On the downside: Within the FDA process, we lose our ability to interpret the results visually. We get it back on the other side, but we're flying blind while we're building the functional forms and have to rely on the numbers.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;So, how do we change our perspective? The first step, getting the data into &lt;A href="https://www.jmp.com/en_us/software/predictive-analytics-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Pro&lt;/A&gt;, particularly for images, has been covered by&amp;nbsp;&lt;LI-USER uid="3977"&gt;&lt;/LI-USER&gt;&amp;nbsp;in a couple of Community posts (&lt;A href="https://community.jmp.com/t5/Discovery-Summit-2015/Image-Analyzer/ta-p/22946" target="_self"&gt;Image Analyzer presentation&lt;/A&gt; and &lt;A href="https://community.jmp.com/t5/JMP-Add-Ins/Image-Analyzer/ta-p/23886" target="_self"&gt;add-in&lt;/A&gt;) a few years back. You need a stack of data that has your response of interest, and the (x,y) coordinate pair for each pixel, die, etc. After this, we treat the images (wafer maps) as a time variable and the pixel ID (die ID) as the function ID.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt; &lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="set up.png" style="width: 776px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19658i880B7179E44EFE1F/image-size/large?v=v2&amp;amp;px=999" role="button" title="set up.png" alt="set up.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;SPAN data-preserver-spaces="true"&gt;Likewise, we run FDA as usual, but in this case, we're going to ignore most of the graphics -- the Score Plot and the Bar Graph with the FPC rankings being the exception. Looking at the Functional PCA table, I want to see a high score in the cumulative column (indicating that we're capturing most of the information in the data set). I'm also looking for anything unusual in the Score Plot (see &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Chemical-reaction-monitoring-using-functional-data-analysis/ba-p/225443" target="_self"&gt;the previous entry&lt;/A&gt; in the series).&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FDE-Wafer Report.png" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19659i0738C93203A3C307/image-size/large?v=v2&amp;amp;px=999" role="button" title="FDE-Wafer Report.png" alt="FDE-Wafer Report.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;The last step in the FDA process is exporting the FPC values into a new data table with the pixel/die ID column. From there, we can break up the ID column into the x and y components for visualization using column utilities. I am glossing over these steps, but the data sets are available on &lt;A href="https://public.jmp.com/packages/Functional-Data-Analysis-of-Wafer-Maps-a/js-p/vBcr9SBg5Q1602cGl33fw" target="_self"&gt;JMP Public&lt;/A&gt;, complete with the formula columns I used to convert the Die/Pixel coordinates into Function IDs and back again.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;Example 1: Wafer Map&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;This first example is looking at defect rates in a semiconductor wafer map. The data set is part of the JMP sample data. Below is an interactive graphic of the FPC's from the study (the other steps are above). Note that FDE was able to tease out two different defect signatures in the data. The first signature is easy to see in FPC1. The second is in FPC 2 and is really weak. It's a more radial signature. FPC2 contains a lot of the random shot noise in the data. The upside of this analysis is that if we want to see what causes the signature represented by FPC1, we can just use FPC in a model/root cause analysis exercise.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/FDE-Analysis-of-the-wafer-map-data/js-p/vBcr9SBg5Q1602cGl33fw-5/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Example 2: Image&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-preserver-spaces="true"&gt;This image set is a sample data set from the ImageJ package. It is sintered alumina particles, with each image in the original set being taken from a different depth in the thickness of the sample using confocal microscopy. The reconstructed image using the FPCs is shown below. What's interesting about this image is that the FPCs appear to emphasize features at different depths in the sample. &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Graph-Builder-Image-of-FPC-s-for-Sintere/js-p/vBcr9SBg5Q1602cGl33fw-6/indexPage" width="800" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;For fun, I took that information and did a 3D reconstruction of the sample using the first three FPCs:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Surface-Plot-using-FPC-s-for-Sintered-Al/js-p/vBcr9SBg5Q1602cGl33fw-7/indexPage" width="800" height="800" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;So, it is possible to do some image analysis with FDA in JMP Pro. The key is making sure you consider what the Function and the "Time" domains are in the data set. More broadly, this is really a critical consideration with FDA. It can cause very different results or be the difference between a successful analysis and something nonsensical. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next week, we're going to cover what the heck you can do with the information you get from analysis like this. We're going to marry a process DOE to functional data analysis. I hope you come back for the next episode!&lt;/P&gt;</description>
      <pubDate>Mon, 04 Nov 2019 23:05:59 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Image-and-wafer-analysis-using-functional-data-analysis/ba-p/225444</guid>
      <dc:creator>MikeD_Anderson</dc:creator>
      <dc:date>2019-11-04T23:05:59Z</dc:date>
    </item>
    <item>
      <title>Graphical tour of JMP 15 Graph Builder enhancements</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Graphical-tour-of-JMP-15-Graph-Builder-enhancements/ba-p/228894</link>
      <description>&lt;P&gt;Here's a quick tour of many of the enhancements made to Graph Builder in &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;. Some of these will be explored in depth in upcoming blog posts.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 100%; border-collapse: collapse; border-style: none; height: 1020px;" border="1"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 111px;"&gt;
&lt;TD style="width: 30%; height: 111px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Heatmap coloring.png" style="width: 293px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19642iFBC113E4F33E6E06/image-size/large?v=v2&amp;amp;px=999" role="button" title="Heatmap coloring.png" alt="Heatmap coloring.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 111px;"&gt;Heatmaps now support categorical coloring variables. It works best if all the values in a cell have the same category level. But blending can useful when there is some overlap, like the blue-green overlap in this heatmap of the familiar Iris data.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD style="width: 30%; height: 57px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Box Plot coloring.png" style="width: 222px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19657i46211C73B2458625/image-size/large?v=v2&amp;amp;px=999" role="button" title="Box Plot coloring.png" alt="Box Plot coloring.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 57px;"&gt;Previously, box plots could be colored individually. Now, they can be colored systematically with data by putting a variable in the Color role. Read more about &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Box-plots-now-in-COLOR/ba-p/227275" target="_self"&gt;box plots in color&lt;/A&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 84px;"&gt;
&lt;TD style="width: 30%; height: 84px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line Band Interval.png" style="width: 260px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19645i9F478123C0C37337/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line Band Interval.png" alt="Line Band Interval.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 84px;"&gt;Shaded error intervals can be enabled directly in the Line and the Points elements, as an alternative of error bars, without the need to layer in a separate Area element.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD style="width: 30%; height: 57px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Histogram Count Axis.png" style="width: 309px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19644iBED730FB05EBB7BB/image-size/large?v=v2&amp;amp;px=999" role="button" title="Histogram Count Axis.png" alt="Histogram Count Axis.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 57px;"&gt;The Histogram element can show a choice of count or percentage on the response (or Y) axis.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 57px;"&gt;
&lt;TD style="width: 30%; height: 57px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Smooth Kernel Density.png" style="width: 273px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19652i9BC12DA83725FB58/image-size/large?v=v2&amp;amp;px=999" role="button" title="Smooth Kernel Density.png" alt="Smooth Kernel Density.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 57px;"&gt;The Histogram element has three new drawing modes: frequency polygon, smooth kernel density (shown here) and shadowgram.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Redgeline plot.png" style="width: 207px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19656iD92E90D69F4E01FA/image-size/large?v=v2&amp;amp;px=999" role="button" title="Redgeline plot.png" alt="Redgeline plot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%;"&gt;With many histograms in a single frame, the Histogram element has an overlap feature that can be used to create a "ridgeline" plot.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 84px;"&gt;
&lt;TD style="width: 30%; height: 84px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Area with Step Connection.png" style="width: 244px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19639iA5FC41AD31932955/image-size/large?v=v2&amp;amp;px=999" role="button" title="Area with Step Connection.png" alt="Area with Step Connection.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 84px;"&gt;The Line and Area elements have had their options aligned to match each other. The Area element now has Line features like connection style (step is shown) and missing value treatment. The Line element now has Area features like stacking and filling.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 111px;"&gt;
&lt;TD style="width: 30%; height: 111px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line of Fit Cauchy.png" style="width: 216px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19646iE520D24C5CCDEA6D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line of Fit Cauchy.png" alt="Line of Fit Cauchy.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 111px;"&gt;The Line of Fit element has a new mode called Robust Cauchy, which assumes the residuals follow a &lt;A href="https://en.wikipedia.org/wiki/Cauchy_distribution" target="_self"&gt;Cauchy distribution&lt;/A&gt; instead of a Gaussian distribution. As a result of the fatter tails of the Cauchy distribution, the fit is less affected by outliers. Here it is with the classic Anscombe quartet data.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 84px;"&gt;
&lt;TD style="width: 30%; height: 84px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line of Fit Time Series.png" style="width: 220px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19648i93A416827D58D9D8/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line of Fit Time Series.png" alt="Line of Fit Time Series.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 84px;"&gt;The Time Series analytics in JMP has been updated for JMP 15, and the basics are available in Graph Builder as another new mode for the Line of Fit element; this allows for seasonal fits with forecast regions.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Log Scale Linear Fit.png" style="width: 287px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19649iF3F28D1D8B8AC35C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Log Scale Linear Fit.png" alt="Log Scale Linear Fit.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;Line of Fit and other elements have an "Adapt to Axis Scale" option in their red triangle menus (also new!). This causes the fit to apply to the transformed (e.g., log) values instead of the raw values. It is on by default.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line of Fit Save Formula.png" style="width: 236px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19647iBC235FE3178DBC30/image-size/large?v=v2&amp;amp;px=999" role="button" title="Line of Fit Save Formula.png" alt="Line of Fit Save Formula.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;Several elements have a Save Formula command that will create a new column in the table with the results formula. For elements like Bar that summarize by category, this command enables you to extract the actual results of those summaries as formulas.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Univariate HDR.png" style="width: 332px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19653iA48260E2A72DB421/image-size/large?v=v2&amp;amp;px=999" role="button" title="Univariate HDR.png" alt="Univariate HDR.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;Univariate density contours can be shown as &lt;A href="https://www.jstor.org/stable/2684423" target="_self"&gt;Highest Density Region&lt;/A&gt; (HDR) plots in addition to violin plots. HDR shows the 50% and 99% density levels plus the mode and outliers. As a result, it combines the quick overview of a box plot with the multimodality detection of a violin plot.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Bivariate Bagplot.png" style="width: 265px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19641i1AD6A2B39820969D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bivariate Bagplot.png" alt="Bivariate Bagplot.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;Bivariate density contours can be shown as "&lt;A href="https://en.wikipedia.org/wiki/Bagplot" target="_self"&gt;bag plots&lt;/A&gt;," meant to be an extension of box plots into two dimensions. The darker area shows the innermost 50% of the data. The lighter fill is equivalent to the tails or fenced region of a box plot.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Bivariate HDR.png" style="width: 268px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19640i5ABB5E5A0370B571/image-size/large?v=v2&amp;amp;px=999" role="button" title="Bivariate HDR.png" alt="Bivariate HDR.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;Bivariate density contours can be shown as 2-D HDR plots, useful for quick comparison of possibly-irregular bivariate distributions. The darker area shows the region with the highest density for 50% of the data, and the lighter area shows the 99% region. The regions need not be contiguous for bimodal data.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 30px;"&gt;
&lt;TD style="width: 30%; height: 30px;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Contour alpha hull smoothed.png" style="width: 249px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19643iF4A6DD587C62E1C1/image-size/large?v=v2&amp;amp;px=999" role="button" title="Contour alpha hull smoothed.png" alt="Contour alpha hull smoothed.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%; height: 30px;"&gt;
&lt;P&gt;The contour element provides a&amp;nbsp;&lt;SPAN style="font-family: inherit; background-color: transparent;"&gt;choice of showing lines, fills or both for the contours, and a choice of showing the outer boundary line. And&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit; background-color: transparent;"&gt;&amp;nbsp;the outer boundary is no longer restricted to being convex by using &lt;A href="https://en.wikipedia.org/wiki/Alpha_shape" target="_self"&gt;alpha shapes&lt;/A&gt; (as shown here). &lt;A href="https://community.jmp.com/t5/JMPer-Cable/Graph-Builder-contour-plots-in-JMP-15/ba-p/232292" target="_self"&gt;Read more about contour plots&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="percent bars.png" style="width: 197px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19660i98F7F5405E49049D/image-size/large?v=v2&amp;amp;px=999" role="button" title="percent bars.png" alt="percent bars.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%;"&gt;
&lt;P&gt;For summarizing elements, such as bar charts, the single summary statistic for percent has been replaced with three more specific options to control the basis for the percent calculations. This is useful when you have multiple Xs and Ys and overlay levels. And this makes it easier to construct 100% stacked bars.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="width: 30%;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Axis wrapping.png" style="width: 194px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19638i52F36869738A4FE7/image-size/large?v=v2&amp;amp;px=999" role="button" title="Axis wrapping.png" alt="Axis wrapping.png" /&gt;&lt;/span&gt;&lt;/TD&gt;
&lt;TD style="width: 70%;"&gt;
&lt;P&gt;Axis tick labels can now wrap over multiple lines. This axis feature is available in all JMP graphs, not just those within Graph Builder. This is a great way to avoid having rotated text.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 19:06:45 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Graphical-tour-of-JMP-15-Graph-Builder-enhancements/ba-p/228894</guid>
      <dc:creator>XanGregg</dc:creator>
      <dc:date>2019-11-26T19:06:45Z</dc:date>
    </item>
    <item>
      <title>JMP Live tips and tricks</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-tips-and-tricks/ba-p/228764</link>
      <description>&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpblog&amp;amp;utm_medium" target="_self"&gt;JMP Live&lt;/A&gt; is a new product, but we’ve been using it internally for a while. In this blog I’d like to share some of the tips and tricks we’ve learned to help you get the most out of JMP Live.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Tip #1: Adding a hyperlink in your description&lt;/H3&gt;
&lt;P&gt;In some cases, it may be useful to provide a link to a web page from your JMP Live post. This can be added to your post description using a little bit of html markup. For example, a link to jmp.com can be added to your description in the Edit Details dialog as follows:&lt;/P&gt;
&lt;P&gt;This graph was published using JMP 15. Get your free trial at &amp;lt;a href=”&lt;A href="http://www.jmp.com" target="_blank" rel="noopener"&gt;http://www.jmp.com&lt;/A&gt;”&amp;gt;jmp.com&amp;lt;/a&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="URL.PNG" style="width: 273px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19605i9ADE8FF429F9E9E9/image-size/large?v=v2&amp;amp;px=999" role="button" title="URL.PNG" alt="URL.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Tip #2: Keeping your data private&lt;/H3&gt;
&lt;P&gt;You may want to share the results of your analyses on JMP Live, but not your data. You can do so by disabling “Publish Data” in the “Select Reports” dialog when you publish:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DisablePublishData.PNG" style="width: 304px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19609iB337A73AA38D5D5E/image-size/large?v=v2&amp;amp;px=999" role="button" title="DisablePublishData.PNG" alt="DisablePublishData.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;When you do this, your audience will see the web-friendly user interface with collapsible sections and tables with tooltips, but they won’t be able to select or the interact with the graphs.&lt;/P&gt;
&lt;P&gt;If you are publishing multiple reports at once, you can add images. So, another way to share the result of your analyses without sharing your data is to save your reports as images, then add them when publishing. You can save reports as images using File &amp;gt; Save As with ‘Save as type:’ PNG, JPEG, GIF, or TIFF. When publishing multiple reports, you would use “Add Image” in the “Configure Report” dialog under the report previews to choose an image to include. The “Add Image” button can be used multiple times.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AddImage.PNG" style="width: 655px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19610iF5546A26EDEDFCF3/image-size/large?v=v2&amp;amp;px=999" role="button" title="AddImage.PNG" alt="AddImage.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Tip #3: Consider the size of devices that will display your report&lt;/H3&gt;
&lt;P&gt;When sharing &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpblog&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; scripts with colleagues who have JMP, it’s often safe to assume that if it looks good on your computer, it will probably look good on theirs. If it doesn’t, they can easily resize graphs within JMP. When you publish reports to JMP Live, however, your colleagues could be viewing what you’ve published on mobile devices, which typically have smaller screens.&lt;/P&gt;
&lt;P&gt;When the graphs don’t fit on their screen, they can usually zoom to fit, but then the titles and axes might become too small to read. So, just like when you’re preparing a presentation and you want to make sure the text in your reports can be read from someone at the back of the room, you should not create graphs so large that the titles and labels look tiny in comparison. Here’s an example of two graphs shrunk down to fit this blog post. The graph on the right started out smaller, so its text is easier to read than the left.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LargeVersusSmall.PNG" style="width: 621px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19611iE0D2CC50F4BB29A1/image-size/large?v=v2&amp;amp;px=999" role="button" title="LargeVersusSmall.PNG" alt="LargeVersusSmall.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;Tip #4: Why is my report not interactive?&lt;/H3&gt;
&lt;P&gt;JMP Live uses JMP’s Interactive HTML capability to convert JMP reports into interactive web pages. Not all the features in JMP are supported in Interactive HTML; but rather than producing no result, Interactive HTML creates a web page that is not interactive or partially interactive. To know what feature is not supported, look at JMP’s Log window for a short description of what is not interactive. Here’s an example of what you would see when publishing a 3D Scatterplot (not supported at the time this post was written):&lt;/P&gt;
&lt;PRE&gt;Interactive HTML: Three-dimensional graphs are not interactive.&lt;/PRE&gt;
&lt;H3&gt;Tip #5: Downloading an image&lt;/H3&gt;
&lt;P&gt;When you publish multiple reports at once, you have the option of including an image. What if you want to download such an image when viewing it on JMP Live?&lt;/P&gt;
&lt;P&gt;On Windows or Mac using Chrome, you can modify the link to the image as follows:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://public.jmp.com/packages/JMP-Ball/js-p/PkcPtM3y_0CfhVZwDCjPz-8" target="_blank" rel="noopener"&gt;https://public.jmp.com/packages/JMP-Ball/js-p/PkcPtM3y_0CfhVZwDCjPz-8&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;to:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://public.jmp.com/api/packages/JMP-Ball/js-p/PkcPtM3y_0CfhVZwDCjPz-8/indexPage?type=raw" target="_blank" rel="noopener"&gt;https://public.jmp.com&lt;MARK&gt;/api&lt;/MARK&gt;/packages/JMP-Ball/js-p/PkcPtM3y_0CfhVZwDCjPz-8&lt;MARK&gt;/indexPage?type=raw&lt;/MARK&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Then hit “Enter” to navigate to this web address.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Right-click and choose "Save image as".&amp;nbsp; Pick a name and location. Then Save.&lt;/P&gt;
&lt;H3&gt;Tip #6: Building a web page of posts&lt;/H3&gt;
&lt;P&gt;With a text editor or web page editor, you can create a web page with a title and a few JMP Live post links using “Copy Link”, “Embed Code(card)”, or “Embed Code(iframe)”:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CopyLink.PNG" style="width: 197px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19612iB767A479D20CBF33/image-size/large?v=v2&amp;amp;px=999" role="button" title="CopyLink.PNG" alt="CopyLink.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you don’t see all these options, it could be because the post isn’t enabled to Share with Everyone. This can be set in the Edit details dialog.&lt;/P&gt;
&lt;P&gt;With “Copy Link” or “Embed Code(card)”, you will provide a link to your post that your audience can click on to see the report running in JMP Live. “Embed Code(iframe)” lets you embed the interactive report directly in your web page. For each option, some HTML code is copied to the clipboard so you can paste it into a web page editor or text editor.&lt;/P&gt;
&lt;P&gt;I’ll only cover using a text editor since the steps using a web page editor would depend on the web page editor you are using.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Start off with the following in a text file:&lt;/LI&gt;
&lt;/OL&gt;
&lt;PRE&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;gt;
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;nbsp;&amp;gt;Some&amp;nbsp;JMP&amp;nbsp;Live&amp;nbsp;Posts&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;
&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h1&amp;gt;&amp;nbsp;My&amp;nbsp;Reports&amp;nbsp;&amp;lt;/h1&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;paste&amp;nbsp;links&amp;nbsp;below--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/PRE&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;While viewing the post on JMP Live, click the desired sharing option.&lt;/LI&gt;
&lt;LI&gt;Paste the clipboard contents into your text file under the line &amp;lt;!--&amp;nbsp;paste&amp;nbsp;links&amp;nbsp;below--&amp;gt;
&lt;P&gt;For “Copy Link”, you’ll need to add an anchor element and text you’d like to display, like the title of the report. For example:&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;MARK&gt;&amp;lt;a href="&lt;/MARK&gt;&lt;A href="https://public.jmp.com/packages/Bubble-Plot-of-Protein-by-Meal-Sized-by-/js-p/CFnRvnDdp4q9YkrYFlsx6" target="_blank" rel="noopener"&gt;https://public.jmp.com/packages/Bubble-Plot-of-Protein-by-Meal-Sized-by-/js-p/CFnRvnDdp4q9YkrYFlsx6&lt;/A&gt;&lt;MARK&gt;"&amp;gt; Bubble Plot of Protein by Meal Sized by Fat Across Date ID Meal&amp;lt;/a&amp;gt;&lt;/MARK&gt;&lt;/P&gt;
&lt;P&gt;The highlighted areas are added around the link. Don’t forget the quote characters.&lt;/P&gt;
&lt;P&gt;Repeat steps 2 and 3 for any other JMP Live Posts you’d like to add to your web page. Then Save the file with a .html or .htm file name extension so your operating system will recognize it as a web page.&lt;/P&gt;
&lt;P&gt;The following shows the results of the three paste options for the same JMP Live post. This is only for demonstration; you would typically want to display different JMP Live posts with the same paste option.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ThreePasetOptions.PNG" style="width: 535px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19613i5FA572FBD00EF62C/image-size/large?v=v2&amp;amp;px=999" role="button" title="ThreePasetOptions.PNG" alt="ThreePasetOptions.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Please see Mike Anderson’s post for more details on &lt;A href="https://community.jmp.com/t5/JMPer-Cable/How-to-embed-JMP-Public-or-JMP-Live-content-in-a-webpage-or-blog/ba-p/211435" target="_blank" rel="noopener"&gt;How to embed JMP Public or JMP Live content in a webpage or blog post&lt;/A&gt;.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Tip #7: Simulating a dashboard selection filter&lt;/H3&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/support/help/en/15.0/?os=win&amp;amp;source=application#page/jmp/example-of-adding-selection-filters-to-a-dashboa.shtml" target="_blank" rel="noopener"&gt;Selection filters&lt;/A&gt; are a powerful addition to dashboards because they allow you to filter one graph with another. Unfortunately, the functionality is not yet supported by Interactive HTML. However, since JMP Live communicates with JMP running on a server, we can get close to the same functionality in JMP Live using “Exclude and Hide Rows” from the toolbar’s hamburger menu. Instead of building a dashboard with a selection filter, just combine windows with any two graphs like the Mosaic and Heatmap shown in the embedded example below.&lt;/P&gt;
&lt;P&gt;To interact with the report like a selection filter:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Select the Mosaic cells you would like to include in the heatmap.&lt;/LI&gt;
&lt;LI&gt;Using the hamburger menu:
&lt;P&gt;a. Invert Row Selection.&lt;/P&gt;
&lt;P&gt;b. Exclude and Hide Selected Rows. This will remove the selected rows from the Mosaic and Heatmap.&lt;/P&gt;
&lt;P&gt;c. Use Include and Show all Rows to select another Mosaic cell and repeat 2.a. and 2.b.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Try these steps in this embedded example:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Titanic-Survivors-by-Passenger-Class-Por/js-p/PkcPtM3y_0CfhVZwDCjPz-4/indexPage" width="670" height="600" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Tip #8: Drilling down in nested treemaps&lt;/H3&gt;
&lt;P&gt;This tip uses the hamburger menu similarly to Tip #7. Publish a treemap with multiple categorical variables as shown in the example below.&lt;/P&gt;
&lt;P&gt;To drill down and focus on a part of a treemap in JMP Live:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Select the Treemap cells you would like to focus on. For example, click on “Passenger Class: 2” in the embedded example below.&lt;/LI&gt;
&lt;LI&gt;Using the hamburger menu:
&lt;P&gt;a. Invert Row Selection.&lt;/P&gt;
&lt;P&gt;b. Exclude and Hide Selected Rows. This will “drill-down” to show just Passenger Class 2.&lt;/P&gt;
&lt;P&gt;c. Use Include and Show all Rows to see the whole treemap again.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Treemap-of-Titanic-Survivors-by-Passenger/js-p/PkcPtM3y_0CfhVZwDCjPz-6/indexPage" width="670" height="600" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Tip #9: Customizing Thumbnails&lt;/H3&gt;
&lt;P&gt;Thumbnail images are generated when you post to JMP Live. They show up on cards throughout JMP Live. JMP uses the first graph in your report as the thumbnail, but this may not always be what you want to emphasize or use to catch the viewers’ attention. For example, if you build a dashboard, like in Tip #7, you might want to show more than one graph in the thumbnail.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DefaultDashboardThumbnail.PNG" style="width: 280px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19614i0313C71F07555175/image-size/large?v=v2&amp;amp;px=999" role="button" title="DefaultDashboardThumbnail.PNG" alt="DefaultDashboardThumbnail.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To customize a thumbnail, you first need to capture an image or otherwise obtain an image to use as the thumbnail. Windows 10 includes an application called the “Snipping Tool” that allows you to capture a rectangular area of your screen and save it to an image file. On the Mac, you can use the shortcut (Command+Shift+4) to do the same. The thumbnail display is a bit wider than its height, so try to capture a rectangle that is approximately the same shape. It will be scaled to fit but clipped if it is too tall or wide.&lt;/P&gt;
&lt;P&gt;To upload a new thumbnail in JMP Live, open the Edit Details dialog by clicking on the pen icon. Then click on the thumbnail, and you will be provided with a way to find and select the image file.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CustomizedThumbnailOnCard.PNG" style="width: 278px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19615iBBBC50CD39A5647B/image-size/large?v=v2&amp;amp;px=999" role="button" title="CustomizedThumbnailOnCard.PNG" alt="CustomizedThumbnailOnCard.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Cards for folders will use up to four of the child thumbnails to make up the folder thumbnail. You can override this with an image of your own in the same way you update a post’s thumbnail.&lt;/P&gt;
&lt;H3&gt;Tip #10: Making an interactive legend&lt;/H3&gt;
&lt;P&gt;This tip was inspired by a &lt;A href="https://community.jmp.com/t5/Discussions/Legends-in-Interactive-HTML-reports/m-p/211557#M42377" target="_blank" rel="noopener"&gt;discussion on the JMP User Community&lt;/A&gt;. Legends are not interactive in Interactive HTML (at the time this post was written). But with this tip, you can build a graph that behaves like an interactive legend. That is, when you click on the item in the legend, the graphics in the main graph are selected.&lt;/P&gt;
&lt;P&gt;All you need to do is create a bar chart with the same variable as the legend. Hide the real legends and combine windows to create a dashboard. I also cleared the “Graph Builder” title from the bar chart “Legend” so it wouldn’t be distracting.&lt;/P&gt;
&lt;P&gt;Below is an interactive example. You can download the dashboard script from the post details on &lt;A href="https://public.jmp.com/packages/How-to-Make-an-Interactive-Legend/js-p/5cf50b6c8d935302b443bfff" target="_blank" rel="noopener"&gt;JMP Public&lt;/A&gt;. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/How-to-Make-an-Interactive-Legend/js-p/5cf50b6c8d935302b443bfff/indexPage" width="670" height="560" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Summary&lt;/H3&gt;
&lt;P&gt;I hope you will find some of these tips and tricks useful and discover some of your own as you work with JMP Live and &lt;A href="https://public.jmp.com/featured" target="_self"&gt;JMP Public&lt;/A&gt;. Please share them here in the &lt;A href="https://community.jmp.com/" target="_self"&gt;JMP User Community&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;P.S. If you're hungry for more JMP Live tips and tricks, please see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;LI-MESSAGE title="Tips for posting to JMP Public and JMP Live" uid="210495" url="https://community.jmp.com/t5/JMPer-Cable/Tips-for-posting-to-JMP-Public-and-JMP-Live/m-p/210495#U210495"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;by &lt;LI-USER uid="5149"&gt;&lt;/LI-USER&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;LI-MESSAGE title="10 useful tips for automating the publishing of JMP Live reports" uid="87707" url="https://community.jmp.com/t5/JMPer-Cable/10-useful-tips-for-automating-the-publishing-of-JMP-Live-reports/m-p/87707#U87707"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;by &lt;LI-USER uid="260"&gt;&lt;/LI-USER&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Mon, 02 Dec 2019 00:08:30 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/JMP-Live-tips-and-tricks/ba-p/228764</guid>
      <dc:creator>John_Powell_JMP</dc:creator>
      <dc:date>2019-12-02T00:08:30Z</dc:date>
    </item>
    <item>
      <title>Column Switchers in JMP Live</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Column-Switchers-in-JMP-Live/ba-p/228135</link>
      <description>&lt;P&gt;The Column Switcher in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; lets you quickly analyze different variables without having to recreate your analysis. When a variable is changed with the Column Switcher, the analyses are recomputed with the new variable.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AirQualityJMPColumnSwitcher.gif" style="width: 683px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19603i560A103B0C69A6CC/image-size/large?v=v2&amp;amp;px=999" role="button" title="AirQualityJMPColumnSwitcher.gif" alt="AirQualityJMPColumnSwitcher.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpblog&amp;amp;utm_medium" target="_self"&gt;JMP Live&lt;/A&gt; uses Interactive HTML to make JMP reports run interactively in a web browser for users who don’t have JMP.&amp;nbsp; Interactive HTML provides several of the interactive capabilities in JMP, but it does not provide the ability to recalculate platforms. JMP Live enables this capability on the web by providing a mechanism for Interactive HTML reports to communicate with JMP running within JMP Live.&lt;/P&gt;
&lt;P&gt;Below is a JMP Live Column Switcher hosted on &lt;A href="https://public.jmp.com/featured?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP Public&lt;/A&gt; and embedded in the blog post so you can interact with it without having to go to JMP Public. If you do want to see it on JMP Public, &lt;A href="https://public.jmp.com/packages/Air-Quality/js-p/9WgchW6kGSh4qtqzsZ7_g-14" target="_blank" rel="noopener"&gt;this is the link&lt;/A&gt;:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Air-Quality/js-p/9WgchW6kGSh4qtqzsZ7_g-14/indexPage" width="720" height="350" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;Using Column Switchers on web pages can be very practical because they allow you to present many variables in the same space. When publishing content to the internet, conserving screen space may be important because your audience may be viewing the report on devices with smaller screens.&lt;/P&gt;
&lt;P&gt;You could publish multiple reports instead, but if you want your audience to be able to change multiple variables in your report, the number of reports you would need to publish to cover every combination might be overwhelming. Many JMP platforms use multiple variables. For example, Graph Builder and Bubble Plot support variables for X, Y, color, size, and more.&lt;/P&gt;
&lt;P&gt;Here’s a Graph Builder example using two column switchers:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Heatmap-Colored-by-Diamond-Price/js-p/9WgchW6kGSh4qtqzsZ7_g-13/indexPage" width="720" height="450" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;Notice how the term “Column Switcher” was replaced with “Choose Y” and “Choose X” to provide the audience with some context.&lt;/P&gt;
&lt;P&gt;Because the column switching is being accomplished by JMP and not Interactive HTML itself, we can even switch variables in reports not yet supported by Interactive HTML!&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Contour/js-p/9WgchW6kGSh4qtqzsZ7_g-22/indexPage" width="720" height="410" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;If you expect your audience to have a wide screen, you can use two Column Switchers in a way that helps them compare variables side by side. Click on the animated gif image to explore this in a separate window.&lt;/P&gt;
&lt;P&gt;&lt;A title="Hollywood Movie Scores and Ticket Sales by Genre" href="https://public.jmp.com/packages/Hollywood-Movie-Scores-and-Ticket-Sales-/js-p/9WgchW6kGSh4qtqzsZ7_g-20" target="_self"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DashboardColumnSwitchers.gif" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19554i646C2711E2230601/image-size/large?v=v2&amp;amp;px=999" role="button" title="DashboardColumnSwitchers.gif" alt="DashboardColumnSwitchers.gif" /&gt;&lt;/span&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Column Switchers can be combined with a local data filter to make a powerful visualization. Here’s an example using the Food Journal sample data. I’ve added a Day column to make it easier to pick a specific day to focus on.&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Food-Journal-Analysis/js-p/9WgchW6kGSh4qtqzsZ7_g-21/indexPage" width="720" height="350" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;Need to change a variable in more than one role? No problem. The Column Switcher applied to this bubble plot changes both size and color role:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Bubble-Plot-of-Chest-decel-by-Wt-Sized-b/js-p/9WgchW6kGSh4qtqzsZ7_g-9/indexPage" width="720" height="520" frameborder="0" scrolling="no" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;So, go ahead and start publishing to JMP Live with Column Switchers. They provide concise ways to explore the effects of many variables in one web page.&lt;/P&gt;
&lt;P&gt;You can visit &lt;A href="https://public.jmp.com/packages/9WgchW6kGSh4qtqzsZ7_g" target="_self"&gt;my Column Switcher gallery&lt;/A&gt;&amp;nbsp;for more inspiration.&lt;/P&gt;</description>
      <pubDate>Mon, 28 Oct 2019 16:42:30 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Column-Switchers-in-JMP-Live/ba-p/228135</guid>
      <dc:creator>John_Powell_JMP</dc:creator>
      <dc:date>2019-10-28T16:42:30Z</dc:date>
    </item>
    <item>
      <title>Why JMP Live?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Why-JMP-Live/ba-p/226786</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="JMP Live has arrived. Here&amp;amp;#39;s why we created it." style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19622i1C20356647F3C862/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jmp-live-press-release.png" alt="JMP Live has arrived. Here's why we created it." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;JMP Live has arrived. Here's why we created it.&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;JMP is an incredibly powerful interactive statistical discovery tool. Many folks reading this have invested a great deal in both &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_blank" rel="noopener"&gt;JMP software&lt;/A&gt; and in building JMP expertise in your organizations. But you likely also have people in your organization who don’t have JMP and don’t really need it, but who could benefit from seeing and interacting with JMP analyses created by your JMP experts.&lt;/P&gt;
&lt;H3&gt;Early Sharing Efforts&lt;/H3&gt;
&lt;P&gt;The JMP development team has added several features over the years to improve the ability of JMP users to share their results with colleagues who don’t have JMP. You can save JMP reports as PDF files or export them to PowerPoint. While helpful in some cases, what you get is a static image of the report. Interactivity is the hallmark of JMP.&amp;nbsp; Without it, much of the value of JMP is lost.&lt;/P&gt;
&lt;H3&gt;Interactive HTML – Getting Closer&lt;/H3&gt;
&lt;P&gt;Then, along came the Interactive HTML development team. The goal of this team has been to allow the production of web-deliverable JMP content that retains as much interactivity as possible. Interactive HTML brings many JMP data exploration features to people who don’t have the software. For example, users can brush data points or bars in one graph and see where those &lt;FONT size="3"&gt;selected&lt;/FONT&gt; points are in other linked graphs. They can also hover over points to see rich identifying information in hover tips.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Interactive HTML has been a welcome addition, but it also has limits. Important JMP features like &lt;STRONG&gt;&lt;EM&gt;Data Filter&lt;/EM&gt;&lt;/STRONG&gt; and &lt;STRONG&gt;&lt;EM&gt;Column Switcher&lt;/EM&gt;&lt;/STRONG&gt; cannot be fully supported; they require JMP to run to recompute the analysis. Also, Interactive HTML leaves an HTML file on your local machine, leaving you to figure out how to share it with others.&lt;/P&gt;
&lt;H3&gt;JMP Live – No Compromises&lt;/H3&gt;
&lt;P&gt;These opportunities to take Interactive HTML further opened the door for &lt;STRONG&gt;JMP Live&lt;/STRONG&gt;.&amp;nbsp;&lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpblog&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;JMP Live&lt;/A&gt; is a web application running either on-premise at your company or in your company’s private cloud. JMP Live gives your users a portal to which they can publish interesting JMP reports, in Interactive HTML format, directly from JMP.&amp;nbsp; At publish time, they can decide who should be able to see the report – everybody, a specific group of people, or just themselves. If a colleague bookmarks a link to their report, and then the original publisher decides to update the report, the colleague visiting that bookmarked link sees the updated version.&lt;/P&gt;
&lt;P&gt;A&lt;EM&gt;nd now for the pièce de résistance&lt;/EM&gt;: JMP Live &lt;EM&gt;includes a pool of JMP instances&lt;/EM&gt; standing ready to regenerate an analysis when needed. So, when a user viewing Interactive HTML on JMP Live makes a change to a data filter, JMP Live uses one of those JMP instances to recalculate and update the statistics and graphs in the report, with appropriate points excluded.&lt;/P&gt;
&lt;P&gt;Similarly, when the user makes a change to a Column Switcher, a JMP instance is used to regenerate the analysis with the new role assignments. JMP Live supercharges Interactive HTML by giving anyone with a web browser the power to make their own discoveries.&lt;/P&gt;
&lt;P&gt;If you are interested in supercharging your JMP Interactive HTML, &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software/jmp-live-info-request.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpblog&amp;amp;utm_medium" target="_blank" rel="noopener"&gt;talk to us about bringing JMP Live&lt;/A&gt; to your organization.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jmp-live-animation.gif" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19621i1C75C280D43438AC/image-dimensions/750x570?v=v2" width="750" height="570" role="button" title="jmp-live-animation.gif" alt="jmp-live-animation.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 15:56:09 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Why-JMP-Live/ba-p/226786</guid>
      <dc:creator>Eric_Hill</dc:creator>
      <dc:date>2019-10-22T15:56:09Z</dc:date>
    </item>
    <item>
      <title>All your base are belong to us (in JSL)</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/All-your-base-are-belong-to-us-in-JSL/ba-p/227367</link>
      <description>&lt;P&gt;Converting a value from one base or radix to another is often required with data in external formats such as sensor or network data. &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt; has supported converting from hexadecimal to decimal and back using the &lt;A href="https://www.jmp.com/support/help/14-2/hexadecimal-and-blob-functions.shtml#272300" target="_self"&gt;&lt;STRONG&gt;Hex&lt;/STRONG&gt;&lt;/A&gt; and &lt;A href="https://www.jmp.com/support/help/14-2/character-functions.shtml" target="_self"&gt;&lt;STRONG&gt;Hex to Number&lt;/STRONG&gt;&lt;/A&gt; functions. For example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;decimalToHex = Hex(1234, “integer”);
show(decimalToHex);
backToDecimal = HexToNumber(decimalToHex);
show(backToDecimal);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;decimalToHex = "000004D2";
backToDecimal = 1234;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But what if you have binary or octal data?&lt;/P&gt;
&lt;H3&gt;&lt;FONT size="5"&gt;Not just hex anymore&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;With &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;, these functions have been expanded to support any base from 2 to 36. By specifying the &lt;STRONG&gt;Base&lt;/STRONG&gt; option on the &lt;STRONG&gt;Hex&lt;/STRONG&gt; function, the decimal number will be converted to that base rather than the default base of 16.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;decimalToBinary = Hex(1234, Base(2));
show(decimalToBinary);
decimalToOctal = Hex(1234, Base(8));
show(decimalToOctal);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;decimalToBinary = "10011010010";
decimalToOctal = “2322”&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Often with binary data, you want the values to be padded to byte boundaries for consistency. The new &lt;STRONG&gt;Pad To&lt;/STRONG&gt; option allows that.&lt;/P&gt;
&lt;P&gt;Padded to 2-bytes:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Hex(1234, Base(2), Pad To(16));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="courier new,courier"&gt;"0000010011010010"&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Padded to 4-bytes:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Hex(1234, Base(2), Pad To(32));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="courier new,courier"&gt;"00000000000000000000010011010010"&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hex To Number&lt;/STRONG&gt; provides the reverse functionality when the &lt;STRONG&gt;Base&lt;/STRONG&gt; option is specified.&lt;/P&gt;
&lt;P&gt;Convert from binary to decimal:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;binaryToDec = Hex To Number("10011010010", Base(2));
show(binaryToDec);
octalToDec = Hex To Number("2322", Base(8));
show(octalToDec);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;binaryToDec = 1234;
octalToDec = 1234;
&lt;/PRE&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;QR Codes&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;QR codes (Quick Response codes) are two-dimensional bar codes that store small amounts of binary data that can be read using a scanner or smartphone. These codes were developed for inventory tracking, but they are often used now to encode location data for websites or applications. For example, here is a QR code for the JMP Discovery Summit in Tucson that links to the main web page of the conference.&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-center" image-alt="QR Code for Discovery Summit Tucson 2019" style="width: 610px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19490iE7A8A23220068D2E/image-size/large?v=v2&amp;amp;px=999" role="button" title="Discovery_QR.png" alt="QR Code for Discovery Summit Tucson 2019" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;QR Code for Discovery Summit Tucson 2019&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The QR code consists of several fixed patterns (such as the three large square blocks for alignment) and the cell/content area for the data plus the error detection/correction information. QR codes come in a variety of sizes and have varying levels of error correction. Those details are not important for this exercise.&lt;/P&gt;
&lt;P&gt;Let’s imagine that you wanted to encode the URL for &lt;STRONG&gt;Discovery Summit Tucson 2019&lt;/STRONG&gt; into the bits needed for a QR code.&lt;/P&gt;
&lt;P&gt;We can start with the URL:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://discoverysummit.jmp/en/2019/usa/home.html" target="_blank" rel="noopener"&gt;https://discoverysummit.jmp/en/2019/usa/home.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;QR codes support four types of encoding: Numeric, Alphanumeric, Byte and Kanji. Since our URL is a combination of letters, numbers and symbols, we can use the Alphanumeric encoding. Alphanumeric coding only supports uppercase letters, but that’s OK since the URL is case-insensitive.&lt;/P&gt;
&lt;P&gt;Unfortunately, the QR encodings for characters aren’t just the ASCII values. If they were, we could just use the &lt;STRONG&gt;Hex&lt;/STRONG&gt; function to get the encoding. Instead, we will write a short JSL function to do the conversion based on the table below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Letter&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Code&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;ASCII&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Letter&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Code&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;ASCII&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Letter&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;Code&lt;/P&gt;
&lt;/TH&gt;
&lt;TH style="width: 64px; text-align: center;" width="64"&gt;
&lt;P&gt;ASCII&lt;/P&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;48&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;F&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;15&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;70&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;U&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;30&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;85&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;49&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;G&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;16&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;71&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;V&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;31&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;86&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;50&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;H&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;17&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;72&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;W&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;32&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;87&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;51&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;I&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;73&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;X&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;33&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;88&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;52&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;J&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;19&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;74&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;Y&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;34&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;89&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;53&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;K&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;75&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;Z&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;35&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;90&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;54&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;L&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;21&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;76&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;Space&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;36&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;32&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;7&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;7&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;55&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;M&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;22&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;77&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;$&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;37&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;36&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;56&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;N&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;23&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;78&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;%&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;38&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;37&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;9&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;9&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;57&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;O&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;24&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;79&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;*&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;39&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;42&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;A&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;65&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;P&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;25&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;80&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;+&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;40&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;43&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;B&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;11&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;66&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;Q&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;26&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;81&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;-&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;41&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;45&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;C&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;67&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;R&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;27&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;82&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;42&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;46&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;D&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;68&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;S&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;28&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;83&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;/&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;43&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;47&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;E&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;14&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;69&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;T&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;29&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;84&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64" style="background-color: #eeeeee; width: 64px;"&gt;
&lt;P&gt;:&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;44&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;58&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the JSL function to do the conversion from a character to the alphanumeric encoded value.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;encodeAlpha = Function( {ch},
    // Convert character to its ASCII number value.
    hexVal = Hex To Number(Hex(ch));
    // Map the ASCII value to the QR encoded value.
    If(hexVal &amp;gt;= 48 &amp;amp; hexVal &amp;lt;= 57, hexVal - 48, // 0-9
       hexVal &amp;gt;= 65 &amp;amp; hexVal &amp;lt;= 90, hexVal - 55, // A-Z
       hexVal &amp;gt;= 97 &amp;amp; hexVal &amp;lt;= 122, hexVal - 87,// a-z
       hexVal == 32, 36,                         //Space
       hexVal &amp;gt;= 36 &amp;amp; hexVal &amp;lt;= 37, hexVal + 1,  // $ %
       hexVal &amp;gt;= 42 &amp;amp; hexVal &amp;lt;= 43, hexVal - 3,  // * +
       hexVal &amp;gt;= 45 &amp;amp; hexVal &amp;lt;= 47, hexVal - 4,  // - . /
       hexVal == 58, 44,                         // :
       0;
    );
);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The &lt;STRONG&gt;If&lt;/STRONG&gt; statement maps the ASCII value to the encoded value using ranges. For example, the characters 0-9 are ASCII 48-57 and are encoded as 0-9. Therefore, those can be transformed from ASCII by simply subtracting 48. There are similar ranges for A-Z and a-z. The lowercase a-z are mapped to the values for the uppercase A-Z. The symbols jump around, so most are handled on an individual basis.&lt;/P&gt;
&lt;P&gt;To save space, the QR code doesn’t directly write out the encoded value. It breaks the string into pairs of characters. For our URL, it would look like this:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;ht tp s: // di sc ov er ys um mi t. jm p/ en /2 01 9/ us a/ ho me .h tm l&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;For each pair of characters, the encoded value for the first character is multiplied by 45 and added to the encoded value of the second character.&lt;/P&gt;
&lt;P&gt;Our first pair is &lt;FONT face="courier new,courier"&gt;‘ht’&lt;/FONT&gt;:&lt;/P&gt;
&lt;P&gt;H = 17&lt;/P&gt;
&lt;P&gt;T = 29&lt;/P&gt;
&lt;P&gt;The result would be 17 * 45 + 29 = 794. This is then converted into an 11-bit binary value which is padded with zeros if necessary.&lt;/P&gt;
&lt;P&gt;749 = 01011101101&lt;/P&gt;
&lt;P&gt;If there is an odd number of characters, as in our case, the last character is just encoded and converted to a 6-bit binary value. In our case, we have a single &lt;FONT face="courier new,courier"&gt;‘l’&lt;/FONT&gt; at the end.&lt;/P&gt;
&lt;P&gt;L = 21&lt;/P&gt;
&lt;P&gt;21 = 010101&lt;/P&gt;
&lt;P&gt;Converting numbers to binary and applying padding is exactly what the &lt;STRONG&gt;Hex&lt;/STRONG&gt; function can do now. Let’s start by writing a function to calculate the encoded number for a pair of characters.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;encodePair = Function ( {pair},
    char1 = Substr(pair, 1, 1);
    char2 = Substr(pair, 2, 1);
    encode1 = If(Length(pair) == 1, 0, encodeAlpha(char1));
    encode2 = If(Length(pair) == 1, encodeAlpha(char1),
                                    encodeAlpha(char2));
    encode1 * 45 + encode2;	
); 
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now we can encode each pair from our URL to create the data for our QR code.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;qrData = "";
For( i = 1, i &amp;lt;= Length( url ), i = i + 2,
    charPair = Substr( url, i, 2 );
    encodedValue = encodePair(charPair);
    asBinary = If(Length(charPair) == 1, 
           Hex(encodedValue, Base( 2 ), Pad To (6)),
           Hex(encodedValue, Base( 2 ), Pad To (11));
    );
    qrData = qrData || asBinary || " ";
);

show(qrData);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In this JSL, two characters are taken from the URL with each pass of the &lt;STRONG&gt;For&lt;/STRONG&gt; loop and the alphanumeric encoding is calculated on that pair. The &lt;STRONG&gt;Hex&lt;/STRONG&gt; function converts the number to its binary representation. The value is padded to either 11-bits or 6-bits depending on whether there are 1 or 2 characters. The binary value is appended to the previous value. We added a space between the pairs to make the output easier to read. The space wouldn’t be included in the actual QR data.&lt;/P&gt;
&lt;P&gt;Here is the result for the URL:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="courier new,courier"&gt;qrData = "01100011010 10100110010 10100011000 11110111010 01001011011 10011111000 10001010111 01010010001 11000010110 10101011100 01111110000 10101000011 01101101101 10010010000 01010001101 11110010001 00000000001 00111000000 10101100010 00111101101 01100010101 01111101100 11101110011 10100101111 010101 ";&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There is a lot more that goes into creating the final output for a QR code like the encoding mode, the character count indicator, and error correction coding. That’s more than we need to cover to show the new features. Hopefully, this helped explain some of the new &lt;STRONG&gt;Hex&lt;/STRONG&gt; and &lt;STRONG&gt;Hex To Number&lt;/STRONG&gt; features and how they can be applied.&lt;/P&gt;</description>
      <pubDate>Mon, 09 Dec 2019 14:32:49 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/All-your-base-are-belong-to-us-in-JSL/ba-p/227367</guid>
      <dc:creator>paul_vezzetti</dc:creator>
      <dc:date>2019-12-09T14:32:49Z</dc:date>
    </item>
    <item>
      <title>Box plots - now in COLOR!</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Box-plots-now-in-COLOR/ba-p/227275</link>
      <description>&lt;P&gt;&lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt; adds new ways to control box plot colors and sizes. The color role is now fully supported in Graph Builder, giving you the ability to create more expressive box plots. Color provides additional visual information to guide the data exploration process.&lt;/P&gt;
&lt;P&gt;The only way to add color to a box plot in JMP 14 was to use the &lt;EM&gt;Customize…&lt;/EM&gt; option from the right-click context menu on the graph.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Customize Context Menu" style="width: 625px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19483i1C472EA75036E21A/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image1.png" alt="Customize Context Menu" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Customize Context Menu&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The &lt;EM&gt;Customize Graph&lt;/EM&gt; dialog contains an entry for each box and outlier in the graph. The line color and several other properties can be set as shown below. This process works well for highlighting a single box or a small set of boxes but can be tedious if there are lots of boxes. Also, mapping values to a continuous gradient is difficult, and if the data changes, the customizations can be incorrect or, in some cases, completely lost.&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-center" image-alt="Customize Box Plot Line Color" style="width: 748px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19484i614E4337F11F63AD/image-dimensions/748x486?v=v2" width="748" height="486" role="button" title="Image2.png" alt="Customize Box Plot Line Color" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Customize Box Plot Line Color&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;JMP 15&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;With JMP 15, the Graph Builder box plot now supports the color role for both continuous and categorical variables. I downloaded some of my personal workout data to show off the new features.&lt;/P&gt;
&lt;P&gt;The data includes information about when I exercised, the distance, pace, heart rate and weather. Here is a quick sample:&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Exercise Data" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19472i931A7FD283CD271F/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image3.png" alt="Exercise Data" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Exercise Data&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Continuous Color&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;In this first example below, the box plot is showing the &lt;EM&gt;Distance&lt;/EM&gt; by the &lt;EM&gt;Day of Week&lt;/EM&gt; for my Run activities. It shows, as I would have expected, that Sunday is typically when I do my longer runs. By adding &lt;EM&gt;Pace&lt;/EM&gt; as the color, some other relationships are also visible. My longer Sunday runs are also my slowest. Monday tends to be a slower day as well probably because I’m still tired from Sunday. My fastest day is typically Thursday, which is usually when I will &lt;EM&gt;try&lt;/EM&gt; to do some speed work.&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-center" image-alt="Distance by Day of Week with Pace as Color" style="width: 668px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19474i09706B14006D6495/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image4.png" alt="Distance by Day of Week with Pace as Color" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Distance by Day of Week with Pace as Color&lt;/span&gt;&lt;/span&gt;In the example above, the &lt;EM&gt;Pace(min/mi)&lt;/EM&gt; variable is summarized using Median. The statistic could be changed by selecting any of the standard JMP summary statistics from the &lt;EM&gt;Summary Statistic&lt;/EM&gt; item in the right-click context menu on the color role.&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Selecting Summary Statistic for Color" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19485iA4109E85189D4523/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image5.png" alt="Selecting Summary Statistic for Color" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Selecting Summary Statistic for Color&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Categorical Color&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;The color variable can also be categorical. One way this can be useful is for identifying boxes in a busy graph. Consider the example below from JMP 14. In this case, we are looking at &lt;EM&gt;Distance&lt;/EM&gt; again, but now there is additional nesting on the y-axis by &lt;EM&gt;Month &lt;/EM&gt;and by&lt;EM&gt; Day of Week&lt;/EM&gt;.&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-center" image-alt="Nested Box Plot without Color" style="width: 711px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19477iA631FD4725DDC496/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image6.png" alt="Nested Box Plot without Color" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Nested Box Plot without Color&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Matching a box up with the appropriate &lt;EM&gt;Day of Week&lt;/EM&gt; is challenging because there are so many boxes and the axis is thinned. Your eye must try to create a straight line from the box back to the axis to determine the &lt;EM&gt;Day of Week&lt;/EM&gt; and then the &lt;EM&gt;Month&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;By adding &lt;EM&gt;Day of Week&lt;/EM&gt; to the color variable in JMP 15, it is now very easy to identify which day the box represents. It also makes it much easier to compare the same &lt;EM&gt;Day of Week&lt;/EM&gt; across the months because we can focus on a single color and don’t have to go back to the axis for reference. For example, by knowing that Sunday is blue, and that the Months are in order from bottom to top, it’s easy to identify and compare the Sunday in June to the Sunday in July without looking at the axis simply by locating the sixth and seventh blue boxes.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Box Plot with Categorical Color" style="width: 712px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19471i9386A5A8FB7C3343/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image7.png" alt="Box Plot with Categorical Color" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Box Plot with Categorical Color&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Box Width&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;In addition to color, the width of the boxes is now adjustable. A new option on the box plot called &lt;STRONG&gt;Width Proportion&lt;/STRONG&gt; specifies the width of the box relative to the available width. By default, the option is set to 0, which means that the automatic (pre-JMP 15) width will be used. To change that, you can specify a value between 0 and 1.&lt;/P&gt;
&lt;P&gt;Here is an example with very thin boxes with the Width Proportion equal to 0.1.&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-center" image-alt="Width Proportion set to 0.1" style="width: 648px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19479i3F47C54209B262E9/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image8.png" alt="Width Proportion set to 0.1" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Width Proportion set to 0.1&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Alternatively, for very large boxes with almost no space, the &lt;STRONG&gt;Width Proportion&lt;/STRONG&gt; is set to 0.95.&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-center" image-alt="Width Proportion set to 0.95" style="width: 653px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/19480i3EBC81EDD0559FAB/image-size/large?v=v2&amp;amp;px=999" role="button" title="Image9.png" alt="Width Proportion set to 0.95" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Width Proportion set to 0.95&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is simply an aesthetic change, but it is useful if you are trying to achieve a certain “look” for your box plots.&lt;/P&gt;
&lt;H1&gt;&lt;FONT size="5"&gt;Summary&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;This has been a quick look at some new features in JMP 15 for box plots. There are lots of new features in Graph Builder that will be the subject of additional blog posts. Let us know what you think of JMP 15!&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2019 19:31:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Box-plots-now-in-COLOR/ba-p/227275</guid>
      <dc:creator>paul_vezzetti</dc:creator>
      <dc:date>2019-12-04T19:31:27Z</dc:date>
    </item>
    <item>
      <title>Why is my Interactive HTML Profiler not interactive?</title>
      <link>https://community.jmp.com/t5/JMPer-Cable/Why-is-my-Interactive-HTML-Profiler-not-interactive/ba-p/226800</link>
      <description>&lt;P&gt;A common question that comes up with Interactive HTML output is "Why is this report just an image?" We attempt to provide feedback in the Log to give a high-level indication of why. Not familiar with the log? You can access it in Windows by going to View &amp;gt; Log (or pressing CTRL+SHIFT+L), or on the Mac by going to to Window &amp;gt; Log (CMD + 1). The Log can include script output when working with JSL as well as informational output such as the messages output when exporting Interactive HTML. We avoid messages that are so vague that they frustrate power users and statisticians and messages that so specific that they sound like gibberish to less technical users. Hopefully, the messages are informative, and are useful to provide to Technical Support if you are requesting something be implemented in interactive HTML or reporting a problem. Below, I decode the most common causes for Profilers to come out as static images.&lt;/P&gt;
&lt;H3&gt;Reason 1: Categorical response&lt;/H3&gt;
&lt;P&gt;I mentioned this above, but currently only continuous responses are supported. If you have tried to model a categorical response and save to Interactive HTML or publish to &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpercable&amp;amp;utm_medium" target="_self"&gt;JMP Live&lt;/A&gt;, you will get the message &lt;FONT face="courier new,courier"&gt;"Interactive HTML: Profiler with categorical response &amp;lt;column name&amp;gt; is not interactive"&amp;nbsp;&lt;FONT face="arial,helvetica,sans-serif"&gt;in the log.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;Reason 2: Unsupported JSL commands&lt;/H3&gt;
&lt;P&gt;The JMP Profiler evaluates a mathematical formula with multiple factors, varying one while keeping the others fixed to produce a curve for each factor. Internally, the formula is a JSL expression, such as what you find when you view the properties of a column with a formula.&amp;nbsp;&lt;A href="https://www.jmp.com/support/help/14-2/scripting-guide.shtml" target="_self"&gt;JSL is a large language&lt;/A&gt; with many commands and operations. Some are too programatically intensive to perform in the browser, which might perform badly.&lt;/P&gt;
&lt;P&gt;Also, we are trying to implement the most widely used subset and will add features judiciously as we understand the demand for them from you, the user. In JMP 12, the same 50 or so commands implemented in Flash were ported: Add, Subtract, Multiply, Divide, Minus, Power, Root, Abs, Floor, Ceiling, Min, Max, Equals, NotEquals, GreaterThan, LessThan, GreaterThanOrEqualTo, LessThanOrEqualTo, Or, And, Not (negation), Exp, Log, Log10, Sine, Cosine, Tangent, SinH, CosH, TanH, ArcSine, ArcCosine, ArcTangent, ArcSinH, ArcCosH, OpArcTanH, If, Match, Choose, and a number of Financial calculations DDB, FinFV, FinIPMT, FinIRR, FinMIRR, FinNPER, FinNPV, FinPMT, FinPPMT, FinPV, FinRATE, FinSLN,FinSYD.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;In &lt;A href="https://www.jmp.com/en_us/software/new-release/new-in-jmp-and-jmp-pro.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP 15&lt;/A&gt;, six additional ones were added (Is Missing, Zero or Missing, IfMZ, Modulo, Ln and Log1P), mostly because they were heavily used by the Partition, Boosted Tree and Bootstrap Forest platforms. There is no point in doing the work to enable a new embedded platform if the formulas it typically produces are not supported yet due to unimplemented JSL commands, so these had to be implemented first. If a command we haven't gotten to is encountered, the log will display the message &lt;FONT face="courier new,courier"&gt;"Interactive HTML: Profiler for &amp;lt;column name&amp;gt; is not interactive because of unsupported operations."&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;Reason 3: Unsupported platforms&lt;/H3&gt;
&lt;P&gt;If you go to Preferences &amp;gt; Platforms in &lt;A href="https://www.jmp.com/en_us/software/data-analysis-software.html?utm_campaign=td7013Z000002sEGsQAM&amp;amp;utm_source=jmpercable&amp;amp;utm_medium=social" target="_self"&gt;JMP&lt;/A&gt;, you will see more than 100 platforms listed, many of them with Profilers.&amp;nbsp; Not counting the Prediction Profiler platform (found in Graph&amp;gt; Profiler), eight platforms are now supported. Again, we started with what we felt were the most widely used, and we want to hear from you if there is a platform you need that isn't supported. If your platform comes out static, look in the log and it will say &lt;FONT face="courier new,courier"&gt;"Interactive HTML: Embedded profilers in this platform are not interactive."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;If you get this message in the log, there may be a workaround. For many platforms that have a Profiler, the red triangle menu will provide a "Save Columns" submenu with "Save Prediction Formula" as an option:&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Demonstrating the Save Prediction Formula option in the Partial Least Squares platform." style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/18156i4F5BE4CB3F60F6EF/image-dimensions/750x572?v=v2" width="750" height="572" role="button" title="savePredictionColumn.png" alt="Demonstrating the Save Prediction Formula option in the Partial Least Squares platform." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Demonstrating the Save Prediction Formula option in the Partial Least Squares platform.&lt;/span&gt;&lt;/span&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Using the Body Fat sample data set, run the "Partial Least Squares" script and add the Profiler from the red triangle menu for "NIPALS Fit with 7 Factors". If you were to export this, you would get a static image -- we haven't gotten to enhancing the Partial Least Squares platform yet to export the Profiler to Interactive HTML. However, if you go to that same red triangle menu and select Save Columns &amp;gt; Save Prediction Formula, it will create a new column "Pred Formula Percent body fat".&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Prediction column saved to the data table.  By viewing the column&amp;amp;#39;s properties you can see the formula of the profiler." style="width: 749px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/18157i8E20CBAFD4391880/image-dimensions/749x552?v=v2" width="749" height="552" role="button" title="savePredictionColumn2.png" alt="Prediction column saved to the data table.  By viewing the column's properties you can see the formula of the profiler." /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Prediction column saved to the data table.  By viewing the column's properties you can see the formula of the profiler.&lt;/span&gt;&lt;/span&gt;If you view the Column Properties, you can see there is nothing complex about this formula -- simple multiplication and addition. If you open up the Graph &amp;gt; Profiler menu and add this column for Y, you get a standalone Profiler that does export to Interactive HTML or &lt;A href="https://www.jmp.com/en_us/software/collaborative-analytics-software.html?utm_campaign=rf7011U0000009jDVQAY&amp;amp;utm_source=jmpblog&amp;amp;utm_medium" target="_self"&gt;JMP Live&lt;/A&gt;. Because of the number of factors, I chose to go to the red triangle menu and make use of the Arrange in Rows feature (found under the Appearance submenu) to make the Profiler wrap into two rows with a value of 7.&lt;/P&gt;
&lt;P&gt;&lt;IFRAME src="https://public.jmp.com/api/packages/Standalone-Profiler/js-p/2NFlb4vbhxVXR63xVRF_s/indexPage" width="900" height="600" frameborder="0" style="margin: 0.8em 0;" class="jmp-live-iframe"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;H3&gt;Reason 4: Advanced features&lt;/H3&gt;
&lt;P&gt;For individual embedded Profilers, there could be additional features that aren’t supported specific to that platform:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Non-mixture linear constraints&lt;/LI&gt;
&lt;LI&gt;Random effects&lt;/LI&gt;
&lt;LI&gt;Multiple response variables&lt;/LI&gt;
&lt;LI&gt;Noise factors&lt;/LI&gt;
&lt;LI&gt;Offset variables (this is specific to&amp;nbsp;Generalized Linear Model)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you encounter one of these, you will get a message in the log that should explain, for example:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;"Interactive HTML: Profiler with non-mixture linear constraint is not interactive."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;We continue to improve the output of the very popular Profiler feature in Interactive HTML. Hopefully, this blog post helps to explain some of the cases that we haven't implemented yet. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;We want to hear from you about the features and embedded platforms you would like to see -- leave me a comment!&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Nov 2019 16:08:18 GMT</pubDate>
      <guid>https://community.jmp.com/t5/JMPer-Cable/Why-is-my-Interactive-HTML-Profiler-not-interactive/ba-p/226800</guid>
      <dc:creator>josh_markwordt</dc:creator>
      <dc:date>2019-11-18T16:08:18Z</dc:date>
    </item>
  </channel>
</rss>

