2009-11-25 7 views
3

J'ai besoin de tracer une distribution normale puis d'ombrer une zone spécifique de celle-ci. En ce moment je le fais en créant un tracé de la distribution et en le superposant avec un RegionPlot. C'est assez compliqué et je suis certain qu'il doit y avoir une façon plus élégante de le faire. J'ai googlé, regardé les docs, rien trouvé. Aide moi SO!Mathematica, PDF Courbes et ombrage

Je suppose que Mathematica compte comme programmation? : D

Répondre

5

L'approche la plus simple que je peux envisager est d'utiliser deux fonctions Plot, où l'une trace la plage que vous souhaitez ombrer, et l'autre trace la plage entière, tout en utilisant l'option Filling pour obtenir l'ombrage. Ensuite, vous les afficher ensemble à l'aide Show, comme ceci:

distFn = PDF[NormalDistribution[], x]; 
Show[ 
    {Plot[distFn, {x, -5, 5}], 
    Plot[distFn, {x, -1, 1}, Filling -> {1 -> {0, Automatic}}]}, 
    PlotRange -> All] 

Il est encore un peu sur le côté maladroit, mais il fonctionne, et il devrait être assez facile de faire abstraction en une seule fonction si vous le faites beaucoup.

+0

"clunky" c'est aussi très flexible en ce sens que vous pouvez varier très facilement la plage de remplissage. La même technique, bien sûr, peut être utilisée lorsque vous avez besoin de tracer quelque chose de plus compliqué. – rcollyer

2

Cela peut également être fait avec une seule instruction Plot.

mu = 4; sigma = 3;

distFn = PDF [ NormalDistribution [mu, sigma], x];

terrain [Évaluer [distFn * {1, Boole [mu - sigma < x < mu + sigma]}], {x, mu - 3 sigma, mu + 3 sigma}, remplissage -> {2 -> Axe}]