cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Register to attend Discovery Summit 2025 Online: Early Users Edition, Sept. 24-25.
  • New JMP features coming to desktops everywhere this September. Sign up to learn more at jmp.com/launch.
Choose Language Hide Translation Bar
lala
This widget could not be displayed.
" alt = "Level IX"/> lala
Level IX

How can a complete large table be used to create an independent graph in the control panel without extracting subsets

Rather special stock charts. Thank you, experts.
How can a complete large table be used to create an independent graph in the control panel without extracting subsets
For example, this stock data is processed by a script to generate multiple stock data, and the price data of each stock vary greatly.
It is difficult to obtain a perfect Graph using wrap in Graph Builder.

d0=Current Data Table();r=N Row(d0);
VV={"Date","Open","High","Low","Close","Volume"};
for(k=1,k<=4,k++,
d0<<Select Where(1);d0<<Select Columns(Eval(VV));d1=d0<<Subset(Output Table("ts"),Selected Rows(1),columns(Eval(VV)));
if(k==1,a="A",if(k==2,a="B";g=10,if(k==3,a="C";g=100,a="D")));
if(k>2,For(j=2,j<=NItems(VV)-1,j++,i=1;ca=VV[j];ar=d1<<GetAsMatrix(ca);for(i=1,i<=r,i++,ar[i,1]=round(ar[i,1]*g,0));d1[0,ca]=ar;));
ca="code";New Column(ca,Character,"Nominal");Current Data Table()[0,ca]= a;
m=5;ca="M"||char(m);New Column(ca);Column(ca)<<Formula( if(lag(code,m-1)==code,round(mean(close[Index(Row()-m+1,Row())]),2))) ;d1<<run formulas;Column(ca)<<deleteFormula;
m=10;ca="M"||char(m);New Column(ca);Column(ca)<<Formula( if(lag(code,m-1)==code,round(mean(close[Index(Row()-m+1,Row())]),2))) ;d1<<run formulas;Column(ca)<<deleteFormula;
if(k==1,dt=d1;dt<<setName("ts2");current data table()<<Go To(code);current data table()<<Move Selected Columns(To first);,current data table(dt);dt<<Concatenate(Data Table(d1),Append to first table);Close(d1,nosave));
);

How to use scripts to create independent graphs for each stock in the control panel?

4 REPLIES 4
lala
This widget could not be displayed.
" alt = "Level IX"/> lala
Level IX

回复: How can a complete large table be used to create an independent graph in the control panel without extracting subsets

dt=Current Data Table();p1=dt<< Graph Builder(Size(656,518),Show Control Panel(0),Show Legend(0),Show Title(0),Show Footer(0),Show X Axis(0),Show Y Axis(0),Show X Axis Title(0),Show Y Axis Title(0),Variables(X(Transform Column("Row",Formula(Row()))),Y(:High),Y(:Low,Position(1)),Y(:M5,Position(1),Side("Right")),Y(:M10,Position(1),Side("Right")),Y(:Volume)),Relative Sizes("Y",[243 166]),Elements(Position(1,1),Bar(X,Y(1),Y(2),Legend(7),Bar Style("Interval")),Line(X,Y(3),Y(4),Legend(6))),Elements(Position(1,2),Bar(X,Y,Legend(5))),SendToReport(Dispatch({},"Row",ScaleBox,{Min(-1),Max(64),Inc(10),Minor Ticks(0)}),Dispatch({},"High",ScaleBox,{Min(20),Max(56),Inc(10),Minor Ticks(1)}),Dispatch({},"M5",ScaleBox,{Min(20),Max(56),Inc(10),Minor Ticks(1)}),Dispatch({},"400",ScaleBox,{Legend Model(5,Properties(0,{Fill Color(32),Transparency(0.5)},Item ID("Volume",1)))}),Dispatch({},"Graph Builder",FrameBox,{Add Graphics Script(4,Description(""),/*KE*/bb=0.4;days=r-1;Pen Size(1);For(i=1,i<=N Rows(dt),i++,If(:Open[i]<=:Close[i],Pen Color(light red);Fill Color(light red);,Pen Color(light green);Fill Color(light green););Rect(i-bb,Max(:Open[i],:Close[i]),i+bb,Min(:Open[i],:Close[i]),1);Rect(i-bb,Max(:Open[i],:Close[i]),i+bb,Min(:Open[i],:Close[i]),0););)}),Dispatch({},"400",LegendBox,{Legend Position({7,[3],6,[0,1],5,[2]})})));(p1 << XPath("//OutlineBox[text() = 'Graph Builder']")) << Set Title("");

2025-06-23_15-36-10.png

jthi
Super User

Re: How can a complete large table be used to create an independent graph in the control panel without extracting subsets

You could use Where in your graph builder call and then get it as a picture

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");

Summarize(dt, groups = By(:sex));


lub = Lineup Box(N Col(2));

For Each({group}, groups,
	gb = dt << Graph Builder(
		Variables(X(:weight), Y(:height)),
		Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
		Where(:sex == group),
		Invisible
	);
	wait(0);
	lub << Append(Report(gb) << get picture);
	gb << Close Window;
);

nw = New Window("Report",
	lub
);

Write();
-Jarmo
lala
This widget could not be displayed.
" alt = "Level IX"/> lala
Level IX

Re: How can a complete large table be used to create an independent graph in the control panel without extracting subsets

Because stock charts have scripts, their effects are different、Thanks Experts!

/*KE*/bb=0.4;days=r-1;Pen Size(1);For(i=1,i<=N Rows(dt),i++,If(:Open[i]<=:Close[i],Pen Color(light red);Fill Color(light red);,Pen Color(light green);Fill Color(light green););Rect(i-bb,Max(:Open[i],:Close[i]),i+bb,Min(:Open[i],:Close[i]),1);Rect(i-bb,Max(:Open[i],:Close[i]),i+bb,Min(:Open[i],:Close[i]),0););
jthi
Super User

Re: How can a complete large table be used to create an independent graph in the control panel without extracting subsets

Skip the picture part and just use Where?

Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");

Summarize(dt, groups = By(:sex));

lub = Lineup Box(N Col(2));

gbs = {};
For Each({group}, groups,
	gb_expr = Expr(dt << Graph Builder(
		Variables(X(:weight), Y(:height)),
		Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
		Where(:sex == group),
		Invisible
	));
	lub << Append(gb = gb_expr);
	Insert Into(gbs, gb);
);

nw = New Window("Report",
	lub
);
Show(gbs << Get Data Table);

Write();
-Jarmo

Recommended Articles