寫了一個新版本,可以支援Filling這個Option。圖形的表現雖不典雅,但堪用!科科~
mylegend[plot_Graphics,legend_List]:= Block[{p=plot,l=legend,colortemp,color,Opacitytemp,temp}, (*擷取色彩*) colortemp=Cases[p,Hue[a_,b_,c_]:>Hue[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}}]] (*Example*) mylegend[ListLinePlot[Table[Accumulate[RandomReal[{-1,1},250]],{3}], Filling->0],{"a","b","c"}] mylegend[ListLinePlot[Table[Accumulate[RandomReal[{-1,1},250]],{10}]], CharacterRange["a","z"][[1;;10]]]
上面的程式使用系統預設的色彩,下面程式可以自行指定顏色的話
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"}]
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~