- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
interactive plots
Does anyone have any ideas on how to create interactive reports?
In the report, I want to include graphs with multiple lines in each graph. On the left side of the window, I would like to have a list of the lines. When I click on a line from the list, I want the selected line in the graph to be more prominent, while the remaining lines are faded out.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
They seem to have changed it in JMP18. In JMP17.2 this seemed to work
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = Tab Box(<< Set Style("Horizontal Spread"));
For(i = 1, i <= 3, i++,
tab = Tab Page Box("",
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
);
tab << Title("Title " || Char(i));
gb << title(Char(i));
gb_collector << Append(tab)
);
nw = New Window("",
gb_collector
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
Having legend on the left side can be a bit tricky but if right side is fine, basic graph builder should be enough
https://www.jmp.com/support/help/en/18.0/#page/jmp/graph-builder.shtml#
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
Hello! I have used a for loop to create multiple graphs using the graph builder. Now, I would like to group all these graphs onto a single sheet and create an interactive interface for users to interact with all the graphs together. Is there a way to achieve this? Thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
Its nice idea to use just the basic graph builder , i just want to put them all together one under the other after i create all of them.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
I bit more information is needed. You could for example collect them into V List Box and then display using New Window
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = V List Box();
For(i = 1, i <= 3, i++,
gb_collector << Append(
dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
)
);
nw = New Window("",
gb_collector
);
If you are utilizing For loop I assume you are doing scripting. Have you read Scripting Guide (for example https://www.jmp.com/support/help/en/18.0/#page/jmp/examples-of-creating-a-dashboard-from-two-reports... ).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
I would like to combine the tab page box method with the for loop, but it doesn't work.
Here is my part of the script:
New Window("My Dashboard",
H Splitter Box(
Size(1000, 1000),
// Loop for each parameter
For(i = 1, i <= N Items(numPar), i++,
// Column boxes for plots of all batches, actual data, and difference
col1 = Col Box(""),
col2 = Col Box(""),
col3 = Col Box(""),
// Tab Page Box for each parameter
Tab Page Box(
Title(numPar[i] || " vs. Time Point"),
// Create all batches plot
gb = Graph Builder(
Size(500, 500),
Variables(X(:Time Point Months), Y(:Result), Overlay(:Batch)),
Elements(Points(X, Y))
),
// Local filter: set the batch to only the batches that are in cyc with a ref, not all other batches
gb << Local Data Filter(
invisible,
Add Filter(
columns(:Component, :Batch, :Source Table),
Where(:Component == numPar[i]),
Where(:Batch == {cyc, bat}),
Where(:Source Table == dt_name)
)
),
dt << Clear Select(),
// Remove the filter display from the graph
gb << Show Control Panel(0),
// Report for changing plot
gbb = Report(gb)[GraphBuilderBox(1)],
// Add linear regression
gbb << Add Element(
1,
1,
{Type("Line Of Fit"), X, Y, Confidence of Fit(0), Equation(0)}
),
// Set Y axis
minval = Min(
:Result[dt << get rows where(
:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name |
:Batch == bat & :Component == numPar[i] & :Source Table == dt_name
)]
) * 0.95,
maxval = Max(
:Result[dt << get rows where(
:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name |
:Batch == bat & :Component == numPar[i] & :Source Table == dt_name
)]
) * 1.05,
maxvalts = Max(
:Time Point Months[dt << get rows where(
:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name |
:Batch == bat & :Component == numPar[i] & :Source Table == dt_name
)]
) * 1.05,
gbb[AxisBox(1)] << Min(-0.1),
gbb[AxisBox(1)] << Max(maxvalts),
gbb[AxisBox(2)] << Min(minval),
gbb[AxisBox(2)] << Max(maxval),
gbb[AxisBox(2)] << inc((maxval - minval) / 10),
// Set Y axis label
unitList = Associative Array(
:Result Unit[dt << get rows where(
:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name |
:Batch == bat & :Component == numPar[i] & :Source Table == dt_name
)]
) << Remove("") << Get Keys,
If(N Items(unitList) == 1,
gbb[Text Edit Box(4)] << Set text(numPar[i] || " [" || unitList[1] || "]"),
gbb[Text Edit Box(4)] << Set text(numPar[i])
),
// Set graph title
gbb[Text Edit Box(1)] << Set text(numPar[i] || " vs. Time Point"),
// Append
gbba = Report(gb),
col1 << Append(gbba),
<<Moveable(1)
)
)
),
<<Dockable(1)
);
Edit 2024-09-05 jthi: added jsl formatting
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = Tab Box(<< Set Style("Horizontal Spread"));
For(i = 1, i <= 3, i++,
gb_collector << Add("Title",
dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
)
);
nw = New Window("",
gb_collector
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
What jmp version you have? Does it work in your jmp? Because I don't have the expected output using the above script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
I don't know what is your expected output and I do not have your data. The script use Tab Box to collect results from for loop
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: interactive plots
I have this output when i run the above script . Its not the same as you