2011-12-19 15 views
11

¿Podría especificar diferentes colores de relleno para un solo diagrama como el siguiente o tendré que "Mostrar" varios gráficos? Digamos que me gustaría que el estilo de relleno sea el mismo que el PlotStyle.Estilos de relleno usando un solo gráfico en Mathematica

priorMean = 50; 
priorVar = 100; 

llhMean = 30; 
llhVar = 40; 

postMean=35.71; 
postVar=28.57; 


Plot[ 
    [email protected][ 
    Function[{\[Mu], \[Sigma]}, 
    PDF[NormalDistribution[\[Mu], Sqrt[\[Sigma]]], x]], 
    {{priorMean, llhMean, postMean}, {priorVar, llhVar, postVar}}], 
{x, 0, 100}, Filling -> Axis, PlotStyle -> {Red, Green, Blue}] 

enter image description here

+1

¿No 'FillingStyle' hacer lo que quiere? – Verbeia

+0

500 Tengo curiosidad: pensé que le gustaría mi respuesta, pero sin comentarios. ¿No funciona para tu aplicación? –

+0

@Mr. Es ! He tenido esa fecha límite que me incapacitó para profundizar todavía. Pero en realidad estaba pensando que esto junto con otras 2 soluciones de Graphics representan una buena filosofía para configurar las cosas "en la roca" ¡Solo necesito hacerle preguntas al respecto! ¡Pero me gusta! – 500

Respuesta

13

Tendrá que utilizar FillingStyle para rellenar. Creo que se quedó atascado en la sintaxis para FillingStyle , que es no lo mismo que para PlotStyle, aunque es de esperar que lo sea. Vas a tener que asignar un color para cada curva como FillingStyle -> {1 -> color1, 2 -> color2}, etc. He aquí un ejemplo:

colors = {Red, Green, Blue}; 
Plot[[email protected] 
    MapThread[ 
    Function[{\[Mu], \[Sigma]}, 
    PDF[NormalDistribution[\[Mu], Sqrt[\[Sigma]]], x]], {{priorMean, 
    llhMean, postMean}, {priorVar, llhVar, postVar}}], {x, 0, 100}, 
Filling -> Axis, PlotStyle -> colors, 
FillingStyle -> 
    MapIndexed[#2 -> Directive[Opacity[0.3], #] &, colors]] 

enter image description here

8

Se podría hacer algo como

With[{colours = {Red, Green, Blue}}, 
Plot[[email protected] 
    MapThread[ 
    Function[{\[Mu], \[Sigma]}, 
    PDF[NormalDistribution[\[Mu], Sqrt[\[Sigma]]], x]], 
    {{priorMean, llhMean, postMean}, {priorVar, llhVar, postVar}}], 
    {x, 0, 100}, 
    Filling -> 
    MapIndexed[#2[[1]] -> {Axis, Directive[Opacity[.3, #1]]} &, colours], 
    PlotStyle -> colours]] 

filling with different colours

3

Esto consigue un resultado:

Plot[[email protected] 
    MapThread[ 
    Function[{\[Mu], \[Sigma]}, 
    PDF[NormalDistribution[\[Mu], Sqrt[\[Sigma]]], x]], {{priorMean, 
    llhMean, postMean}, {priorVar, llhVar, postVar}}], {x, 0, 100}, 
Filling -> {1 -> {Axis, Red}, 2 -> {Axis, Green}, 3 -> {Axis, Blue}}, 
    PlotStyle -> {Red, Green, Blue}] 

en la ayuda en virtud de FillingStyle , Alcance, estilo de relleno.

y alternativamente:

f = MapThread[ 
    Function[{\[Mu], \[Sigma]}, 
    PDF[NormalDistribution[\[Mu], Sqrt[\[Sigma]]], x]], 
    {{priorMean, llhMean, postMean}, {priorVar, llhVar, postVar}}]; 
c = {Red, Green, Blue}; 
Show[Array[ 
    Plot[f[[#]], {x, 0, 100}, Filling -> {1 -> {Axis, c[[#]]}}, 
    PlotRange -> {Automatic, 0.08}, PlotStyle -> c[[#]]] &, 3]] 

enter image description here

9

propongo hacer una ampliación de la definición de Plot. I have done this before.

toDirective[{ps__} | ps__] := Flatten[Directive @@ Flatten[{#}]] & /@ {ps} 

makefills = MapIndexed[#2 -> Join @@ [email protected]{Opacity[0.3], #} &, #] &; 

Unprotect[Plot]; 
Plot[a__, b : OptionsPattern[]] := 
    Block[{$FSmatch = True}, 
    With[{fills = [email protected][PlotStyle]}, 
     Plot[a, FillingStyle -> fills, b] 
    ]] /; ! TrueQ[$FSmatch] /; OptionValue[FillingStyle] === "Match" 

Con esto en su lugar, puede utilizar FillingStyle -> "Match" al estilo de los rellenos de automóviles para que coincida con los principales estilos.

Plot[{Sin[x], Cos[x], Log[x]}, {x, 0, 2 Pi}, 
    PlotRange -> {-2, 2}, 
    PlotStyle -> {{Blue, Dashing[{0.04, 0.01}]}, 
       {Thick, Dashed, Orange}, 
       {[email protected], Thick}}, 
    Filling -> Axis, 
    FillingStyle -> "Match" 
] 

Mathematica graphics

+1

Me gusta este enfoque. – abcd

+0

@yoda, gracias –

Cuestiones relacionadas