- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
How to save picture by jsl
Hi, JMPer I want to use jsl to only save the Process Capability's histogram charts without any . Is there any way to achieve it?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
If you just want those histograms and nothing else, it is most likely easiest to capture them one by one from distribution platform
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
nw_collector = New Window("",
vlb = V List Box()
);
cols = {"NPN1", "PNP1"};
For Each({col_name}, cols,
dist = dt << Distribution(
Stack(1),
Continuous Distribution(
Column(Eval(col_name)),
Horizontal Layout(1),
Vertical(0),
Process Capability(Use Column Property Specs)
)
);
lb = Report(dist)[OutlineBox(col_name || " Capability"), OutlineBox("Histogram"), ListBox(1)];
pic = lb << Get Picture;
vlb << Append( // use outlinebox to add title
OutlineBox("Process Capability for " || col_name, pic)
);
dist << Close Window;
);
Those images can be captured from Process Capability or from distribution when you have all of those open at the same time, but it is easier to navigate report layer this way.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
Recently, I found that saving images to a data table can be useful in some use cases. Here is a modified version does that, based on @jthi 's example.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cols = {"NPN1", "PNP1"};
outputdt = New Table( "imgs",
Add Rows( nitems(cols) ),
New Column( "image", Expression, "None", Set Values( {} ) ),
);
i = 1;
For Each({col_name}, cols,
dist = dt << Distribution(
Stack(1),
Continuous Distribution(
Column(Eval(col_name)),
Horizontal Layout(1),
Vertical(0),
Process Capability(Use Column Property Specs)
)
);
lb = Report(dist)[OutlineBox(col_name || " Capability"), OutlineBox("Histogram"), ListBox(1)];
pic = lb << Get Picture;
outputdt:image[i] = pic;
i++;
dist << Close Window;
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
Thank you very much.
But I had another question, after saving image to table, can export as excel file? I tried to do this, it was not shown as picture.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
This not possible to my knowledge. Here are the reasons:
1) Images in Excel are not cell data. They are OLE objects, which you can think that images are attachments to the sheet. Images in JMP Data Table are cell data. So Excel and JMP see images differently.
2) Excel probably will never understand the meaning of images in JMP.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
Here's how to export the report as an MS Word file.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
nw_collector = New Window("",
vlb = V List Box()
);
cols = {"NPN1", "PNP1"};
For Each({col_name}, cols,
dist = dt << Distribution(
Stack(1),
Continuous Distribution(
Column(Eval(col_name)),
Horizontal Layout(1),
Vertical(0),
Process Capability(Use Column Property Specs)
)
);
lb = Report(dist)[OutlineBox(col_name || " Capability"), OutlineBox("Histogram"), ListBox(1)];
vlb << Append( // use outlinebox to add title
OutlineBox("Process Capability for " || col_name, lb);
);
dist << Close Window;
);
vlb << save msword("c:\TEMP\test.doc", native);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: How to save picture by jsl
I think getting the images to excel will require powershell (or something else like python) in addition to jsl. You could execute the powershell code from JMP using Run Program()