2011年7月4日 星期一

[自動轉寄] [心得] Legend for Plot without PlotLegend

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: [心得] Legend for Plot without PlotLegend
時間: Tue Jul 5 09:42:48 2011


Mathematica 裡面繪製圖例的函數PlotLegend雖然功能將多,
但我個人覺得不是很好用,所以寫了一個比較陽春的函數。
如果有什麼其他的建議可以跟我講∼


mylegend[plot_Graphics, legend_List] :=
Block[{p = plot, l = legend, color, temp},

(* 擷取色彩 *)

color = Cases[p, Hue[a_, b_, c_] :> Hue[a, b, c], Infinity];

(* 配對圖例及色彩 *)

temp = {color[[#]], l[[#]]} & /@ Range[Length@color];

(* 建立圖例 *)

Labeled[p,
Grid[{Graphics[{#[[1]], Thickness[0.1], Line[{{0, 0}, {1, 0}}]},
ImageSize -> {24, 24}, AspectRatio -> 8/24, ImagePadding -> 0],
#[[2]]} & /@ temp],

(* 指定圖例位置 *)

{{Right, Top}}]
]

用法:

mylegend[圖形,圖例文字]

p1 = Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}]

mylegend[p1,{Sin,Cos}]

p2=ListLinePlot[Accumulate@RandomReal[{-1,1},100]&/@Range[5]]

mylegend[p2,{"Series-1","Series-2","Series-3","Series-4","Series-5"}]

p3=ContourPlot[Evaluate[x^2+y^2==#&/@Range[5]],{x,-3,3},{y,-3,3}]

mylegend[p3,{"Circle-1","Circle-2","Circle-3","Circle-4","Circle-5"}]


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

http://chungyuandye.twbbs.org


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.130.220

沒有留言:

張貼留言