
colorbarplot[fun_,xrange_List,yrange_List,color_String]:= Block[{tt,myvalue,mycolor,colorbar,myticks,mycolorbar}, (* ContourPlot *) tt=ContourPlot[fun,{x,xrange[[1]],xrange[[2]]},{y,yrange[[1]],yrange[[2]]}, ColorFunction->color]; (* 取出ContoourPlot所有等高線的值 *) myvalue=Cases[tt,Tooltip[pts__,v_]:>v,Infinity]; (* 取出ContoourPlot所有等高線的顏色 *) mycolor=Cases[tt,RGBColor[a_,b_,c_],Infinity]; (* 建立color bar *) colorbar=Flatten[{mycolor[[#+1]],Rectangle[{0,#},{1,#+1}]}&/@ Range[0,Length@myvalue]]; myticks=Transpose[{Reverse@Range[0,Length@myvalue+1], Flatten@{myvalue[[1]]+myvalue[[1]]-myvalue[[2]], myvalue, myvalue[[-1]]-myvalue[[1]]+myvalue[[2]]}}]; mycolorbar=Plot[0,{x,0,1}, Axes->None, Frame->{{None,True},{None,None}}, FrameTicks->{{None,myticks},{None,None}}, Epilog->colorbar, PlotRange->{{0,1},{0,Length@myvalue+1}}, AspectRatio->Length@myvalue+1]; (* 將ContoourPlot以及color bar合併 *) Labeled[tt,mycolorbar,{Right}] ] (* Example *) colorbarplot[x^2+y^2,{-2Pi,2Pi},{-2Pi,2Pi},"Rainbow"]
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~