2011年12月14日 星期三

Re: [問題] ListLinePlot的PlotLegend

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [問題] ListLinePlot的PlotLegend
時間: Wed Dec 14 22:31:42 2011

※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: 標題: Re: [問題] ListLinePlot的PlotLegend
: 時間: Wed Dec 14 20:20:04 2011
:
: ※ 引述《enunion (珍惜)》之銘言:
: : 請問有人知道再用ListLinePlot時
: : 怎麼弄出一個方塊上面標示什麼顏色代表什麼意思
: : 我試過PlotLegend
: : 但是沒用
: : 查ListLinePlot的選項也沒有PlotLegend
: : 請問還有什麼方法嗎?
: : 感謝~
:
: → enunion:亮綠色的線會標成暗綠色 這有辦法解決嗎? 12/14 21:42
: 推 enunion:還是一樣耶 紅色還是會標成紫色 12/14 21:51

Mathematica會自行指定顏色,若要自行指定的話,那要改一下地方

mylegend[plot_Graphics,legend_List]:=
Block[{p=plot,l=legend,colortemp,color,Opacitytemp,temp},
(*擷取色彩*)
(*判斷是否自行者定顏色*)
colortemp=If[Cases[p,RGBColor[a_,b_,c_]:>RGBColor[a,b,c],Infinity]=={},
Cases[p,Hue[a_,b_,c_]:>Hue[a,b,c],Infinity],
Cases[p,RGBColor[a_,b_,c_]:>RGBColor[a,b,c],Infinity]];
color=colortemp[[-Length@l;;-1]];

(*配對圖例及色彩*)
temp={color[[#]],l[[#]]}&/@Range[Length@color];

(*建立圖例*)Labeled[p,
Grid[{Graphics[{#[[1]],Thickness[0.1],Opacity[0.75],
Line[{{0,0},{1,0}}]},ImageSize->{24,24},
AspectRatio->8/24,ImagePadding->0],#[[2]]}&/@
temp],
(*指定圖例位置*){{Right,Top}}]
]
mylegend[ListLinePlot[Table[Accumulate[RandomReal[{-1,1},250]],{3}],
Filling->0,PlotStyle->{Red,Blue,Green}],
{"a","b","c"}]

你會發現在沒有Filling這個Option時圖形很OK,但是加上Filling後,圖形就很不協調

而且當數列多時,顏色也是很難選擇,那不如就交由系統指定來得方便!

--
養花種魚數月亮賞星星

http://chungyuandye.twbbs.org


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.134.231
推 enunion:這樣就可以了∼ 不過不懂指令為什麼這樣寫XD  12/14 22:45
→ enunion:如果要自學的話 有推薦的書單嗎?  12/14 22:46

沒有留言:

張貼留言