J'ai eu le besoin à plusieurs reprises de créer une courbe de distribution normale remplie pour une utilisation dans les présentations, la formation et la publication. Aussi commun et aussi important que soit la distribution normale, vous penseriez pouvoir le trouver facilement sous forme standard ou en utilisant une recherche sur Internet, mais je n'ai pas eu beaucoup de chance pour trouver ce dont j'avais besoin.
JMP propose de belles méthodes pour dessiner des lignes et des formes géométriques sur des tracés à l'aide de scripts graphiques. Si je veux une forme qui ressemble à ça

une façon de le faire est de créer des vecteurs avec les points de coordonnées qui définissent un polygone, en utilisant la fonction de distribution normale, puis dans le script graphique, utilisez-le comme argument pour la fonction Polygon ().
C'est exactement ce que fait la fonction ci-dessous et retourne une expression évaluée qui peut être utilisée dans un script graphique
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 ) );
); puis cette fonction peut être utilisée à l'intérieur de la fonction Graph Box () comme indiqué ci-dessous (qui crée la courbe normale remplie illustrée ci-dessus).
_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 );
)
)
)
);
La même approche pourrait être appliquée à d'autres distributions de probabilité.