In diverse occasioni ho avuto la necessità di creare una curva di distribuzione normale piena da utilizzare in presentazioni, formazione e pubblicazione. Per quanto comune e importante sia la normale distribuzione, potresti pensare di poterlo trovare facilmente come una forma standard o usando una ricerca su Internet, ma non ho avuto molta fortuna nel trovare quello che mi serviva.
JMP ha alcuni modi carini per disegnare linee e forme geometriche su grafici usando script grafici. Se voglio una forma simile a questa

un modo per farlo è creare vettori con i punti di coordinata che definiscono un poligono, usando la normale funzione di distribuzione, e quindi nello script grafico usarlo come argomento per la funzione Poligono ().
La funzione mostrata di seguito fa proprio questo e restituisce un'espressione valutata che può essere utilizzata in uno script grafico
func_VNormalShape = Function( // create a polygon that looks like a vertically oriented normal distribution
{_xloc, _yloc, _xscale = 1, _yscale = 1, _range=3, _scaleres=10},
{_VNormShapeX, _VNormShapeY},
// _xloc, _yloc is the "origin" for the normal curve (centered on Yloc, base of curve at xloc)
// _xscale is the scale magnification in the x-axis direction
// _yscale is the scale magnification in the y-axis direction
// range is the +/- range (in standard deviation) to draws the curve over
// scalres is the number of points per _yscale to use for determining the polygon. 10 generally works well, but if range is set to be large
// then scale_res should probably be increased.
// create a vector of y values to use for plotting the shape
_VNormShapeY = ((_yloc - _range * _yscale) :: (_yloc + _range * _yscale) :: (_yscale / _scaleres))`;
// create the filled polygon boundary points
_VNormShapeX = V Concat(
J( _range*2*_scaleres + 1, 1, _xloc ),
_xloc + Sqrt( 2 * Pi() ) * _yscale * _xscale * Normal Density( Sort Descending( _VNormShapeY ), _yloc, _yscale )
);
_VNormShapeY = V Concat(
_VNormShapeY,
Sort Descending( _VNormShapeY )
);
// substitute into the Polygon(function) the two vectorw with the boundary point X and Y values
// and evaluate the function
Eval( Substitute( Expr( Polygon( Expr( shape_x ), Expr( shape_y ) ) ), Expr( shape_x ), _VNormShapeX, Expr( shape_y ), _VNormShapeY ) );
); e quindi quella funzione può essere utilizzata all'interno della funzione Graph Box () come mostrato di seguito (che crea la curva normale piena mostrata sopra).
_nw = New Window( "Vertical Normal Distribution",
_ob = Outline Box("Gray Vertical Filled Normal Distribution",
_hlb = H List Box(
_gb = Graph Box(
X Scale( 0, 1.1 ),
Y Scale( 1, 8 ),
Xname( "" ),
Yname( "" ),
Fill Color( "gray" );
func_VNormalShape( 0, 4.5, 1, 1, 3.4, 8 );
)
)
)
);
Lo stesso approccio potrebbe essere applicato ad altre distribuzioni di probabilità.