2011-12-19 26 views
11

Tôi có thể chỉ định các màu tô khác nhau trong một ô giống như dưới đây hoặc tôi có cần "Hiển thị" một số ô không? Hãy nói rằng tôi muốn phong cách làm đầy giống như PlotStyle.Phong cách điền bằng cách sử dụng một Lô duy nhất trong 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

Không 'FillingStyle' làm những gì bạn muốn? – Verbeia

+0

500 Tôi tò mò: Tôi nghĩ bạn muốn câu trả lời của tôi, nhưng không có bình luận. Nó không hoạt động cho ứng dụng của bạn? –

+0

@Mr. Nó là ! Tôi đã có thời hạn mà vô hiệu hóa tôi để khai thác vào nó được nêu ra. Nhưng tôi đã thực sự nghĩ rằng điều này cùng với 2 người khác của giải pháp của bạn liên quan đến đồ họa đại diện cho một triết lý tốt đẹp của việc thiết lập những thứ "trong đá" Tôi chỉ cần hỏi bạn những câu hỏi về nó! Nhưng tôi thích nó! – 500

Trả lời

13

Bạn sẽ cần phải sử dụng FillingStyle để điền vào. Tôi nghĩ rằng bạn đã bị mắc kẹt trong cú pháp cho FillingStyle , là không phải giống như đối với PlotStyle, mặc dù bạn mong đợi nó được. Bạn sẽ phải gán một màu cho mỗi đường cong như FillingStyle -> {1 -> color1, 2 -> color2}, vv Đây là một ví dụ:

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

Bạn có thể làm một cái gì đó giống như

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

này được Kết quả là:

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}] 

Tìm thấy trong sự giúp đỡ dưới FillingStyle , Phạm vi, Phong cách điền.

Và cách khác:

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

Tôi đề nghị làm một phần mở rộng định nghĩa của 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" 

Với điều này tại chỗ, bạn có thể sử dụng FillingStyle -> "Match" tự động phong cách lấp đầy để phù hợp với phong cách chính.

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

Tôi thích cách tiếp cận này. – abcd

+0

@yoda, cảm ơn bạn –

Các vấn đề liên quan