- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Check Box to toggle jitter on/off on Graph Builder
Hello,
I would like to have a check box object on top of Graph builder view to toggle on/off separation of overlapping points (jitter). I know that this can be done from control panel but from visualization perspective, I want to keep the control panel closed.
Example script below which creates control elements for jitter on top of graph. Despite of my best efforts, I can't get the check box to toggle the jitter; I don't know what is the correct way to send update to report.
I am requesting Your help with the syntax.
Names Default To Here(1);
dt= Open("$SAMPLE_DATA/Big Class.jmp");
gb=Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ) ),
Elements(
Points( X, Y )
)
);
jitter = 1;
jitter_elements=H List Box(
cb=Check Box(
{"Jitter enabled"},
If(cb<<Get()==1,
gb << SendToReport(Elements(Points(Jitter( "Positive Grid" ), Jitter Limit( jitter )))), // This is not correct but something like this (maybe)
gb << SendToReport(Elements(Points(Jitter( "None" )))) // This is not correct but something like this (maybe)
);
),
sb = Slider Box( 0, 2, jitter,
neb << set( jitter );
),
neb = Number Edit Box(jitter,
<<setfunction(
Function( {this},
jitter = this << get;
sb << inval;
)
)
)
);
rgb = Report(gb);
(( rgb[PictureBox(1)] << Parent ) << Child ) << Sib Append (jitter_elements);
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Check Box to toggle jitter on/off on Graph Builder
Manipulating Elements is a mess to my knowledge and it gets even messier when you have grouping. That's why I try to (usually) avoid it and just redo the graph. Here is one way you could try using Update Elements to change Jitter
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
jitter = 1;
New Window("",
V List Box(
H List Box(
cb = Check Box(
{"Jitter enabled"},
If(cb << Get() == 1,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("Positive Grid"), Jitter Limit(jitter)});
,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("None")});
)
),
sb = Slider Box(0, 2, jitter, neb << set(jitter)),
neb = Number Edit Box(
jitter,
<<setfunction(
Function({this},
jitter = this << get;
sb << inval;
)
)
)
),
gb = dt << Graph Builder(Show Control Panel(1), Variables(X(:height), Y(:weight)), Elements(Points(X, Y)));
)
);
Other useful functions might be Add Elements and Remove Elements, also see this post Updating the Graph Builder's Element statement
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Check Box to toggle jitter on/off on Graph Builder
Nice idea, not obvious how to do it, looking forward to an answer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Check Box to toggle jitter on/off on Graph Builder
Manipulating Elements is a mess to my knowledge and it gets even messier when you have grouping. That's why I try to (usually) avoid it and just redo the graph. Here is one way you could try using Update Elements to change Jitter
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
jitter = 1;
New Window("",
V List Box(
H List Box(
cb = Check Box(
{"Jitter enabled"},
If(cb << Get() == 1,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("Positive Grid"), Jitter Limit(jitter)});
,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("None")});
)
),
sb = Slider Box(0, 2, jitter, neb << set(jitter)),
neb = Number Edit Box(
jitter,
<<setfunction(
Function({this},
jitter = this << get;
sb << inval;
)
)
)
),
gb = dt << Graph Builder(Show Control Panel(1), Variables(X(:height), Y(:weight)), Elements(Points(X, Y)));
)
);
Other useful functions might be Add Elements and Remove Elements, also see this post Updating the Graph Builder's Element statement
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Check Box to toggle jitter on/off on Graph Builder
Thanks Jarmo,
Your solution (Update elements) works well, very good.
Below is further modified version to get also the slider and number boxes updating the graph.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
jitter = 0.2;
New Window("",
V List Box(
H List Box(
cb = Check Box(
{"Jitter enabled"},
If(cb << Get() == 1,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("Positive Grid"), Jitter Limit(jitter)});
,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("None")});
)
),
sb = Slider Box(0.1, 0.2, jitter,
neb << set(jitter);
If(cb << Get() == 1,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("Positive Grid"), Jitter Limit(jitter)});
);
),
neb = Number Edit Box(
jitter,
<<setfunction(
Function({this},
jitter = this << get;
if(jitter<0.1, jitter=0.1, jitter>0.2, jitter=0.2);
sb << inval;
If(cb << Get() == 1,
Report(gb)[GraphBuilderBox(1)] << Update Element(1, 1, 1, {Type("Points"), X, Y, Legend(3), Jitter("Positive Grid"), Jitter Limit(jitter)});
);
neb << set(jitter);
)
)
)
),
gb = dt << Graph Builder(Show Control Panel(0), Variables(X(:height), Y(:weight)), Elements(Points(X, Y)));
)
);