Names Default to Here(1); dt = Open("$sample_data/Time Series/Monthly Sales.jmp"); dt << New Column("Month", character, nominal, Formula(Trim( Word( 2, Long Date( :Date ), ", " ) )) ); dt << Color by Column(:Month); dtsum = dt << Summary(Group(:Month), Mean(:Sales), Invisible); cc= dtsum << get row states() ; cavg = dtsum << get as matrix; //n and mean close(dtsum, NoSave); gb = dt << Graph Builder( Size( 1029, 464 ), Show Control Panel( 0 ), Variables( X( :Month ), Y( :Sales ) ), Elements( Box Plot( X, Y, Legend( 6 ) ), Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ), SendToReport( Dispatch( {}, "Sales", ScaleBox, {Min( 50 ), Max( 700 ), Inc( 100 ), Minor Ticks( 1 )} ), Dispatch( {}, "Graph Builder", FrameBox, {DispatchSeg( Box Plot Seg( "Box Plot (January)" ), {Confidence Diamond( 1 ), Line Width( 2 ), Transparency( 0.8 )} ), DispatchSeg( Box Plot Seg( "Box Plot (February)" ), {Box Style( "Solid" ), Confidence Diamond( 1 ), Fences( 0 ), Transparency( 0.8 )} ), DispatchSeg( Box Plot Seg( "Box Plot (March)" ), {Box Style( "Solid" ), Confidence Diamond( 1 ), Fences( 0 )} )} ) ) ); //assume you like March's style and do not want to show the points //here is the code to set all bpseg = gb << Xpath("//BoxPlotSeg"); bpseg << {Box Style( "Solid" ), Confidence Diamond( 1 ), Fences( 0 )}; //if you want to color each by month for(i=1, i<=nitems(bpseg), i++, bpseg[i] << Fill Color(Color Of(As Row State(cc[i]))) ); //if you want to remove points. since ponts are the 3rd element report(gb)[GraphBuilderBox(1)] << remove element(1,1,3); //to add them back, uncomment and run the next line //report(gb)[GraphBuilderBox(1)] << Add Element(1, 1, {Type("Points"), X, Y}); ymin = report(gb)[AxisBox(2)]<< get min; yinc = report(gb)[AxisBox(2)]<< get inc; ypos = ymin + yinc/5; runi = 2; //this is a simple example, some function like to find good format should be used sList = {}; //will be use to collect the code to add text for each box plot mean and n //note that boxplots in graphbuilder are associated with x = 0 to #boxes -1 for(i=1, i<=nitems(bpseg), i++, Insert Into(sList, EvalInsert("\[Text(Center Justified, {^i-1^, ^ypos^}, "^Round(cavg[i,2],runi)^\!N^cavg[i,1]^")]\") ); ); cmd = Eval(Parse("report(gb)[FrameBox(1)] << Add Graphics Script(" || concat items(sList, "; ") || ");" )); //right click on the framebox, select customize, find the script to see the code that was generated