Total Pageviews

Blog Archive

Teaching (241) Mathematica (158) 3Q (50) Excel (45) SPSS (32) Cat (24) LaTeX (23) Mac (22) 君達呀 (15) Kaohsiung (14) 論文測試 (13) Mathematica教學講義 (3)

 

Followers

Mathematica 教學: BagPlot

Chung-Yuan Dye 於 Friday, August 5, 2011 7:10 PM 發表




<< ComputationalGeometry`


leq[ptstemp_List]:= Block[{pts=ptstemp,slope,x,y},

If[Abs[pts[[2,1]]-pts[[1,1]]]<10^-9,x==pts[[1,1]],

y==(pts[[2,2]]-pts[[1,2]])/(pts[[2,1]]-pts[[1,1]])*(x-pts[[1,1]])

+pts[[1,2]]]]

bagscheme[{sourcetemp_List,ptstemp_List}]:=

Block[{source=sourcetemp,pts=ptstemp,ch,temp,newlineeq,

newpts,x,y,newch,newchpts},

ch=Quiet@ConvexHull@Flatten[{source,pts},1];

temp=source[[#]]&/@Select[ch,#<=Length@source&];

source=source[[#]]&/@Complement[Range[Length@source],

Select[ch,#<=Length@source&]];

newlineeq=Flatten[{{{#[[1]],#[[-2]]},{#[[-1]],#[[2]]}},

{{#[[1]],#[[3]]},{#[[-1]],#[[2]]}}}&/@

Table[RotateLeft[temp,i],{i,0,Length@temp-1}],1];

newpts={x,y}/.Solve[leq[#]&/@#,{x,y}][[1]]&/@newlineeq;

N@{source,newpts}]

car=Import["http://netstat.stat.tku.edu.tw/downfile.php?file=samples/car.csv"];

cardata=car[[All,{4, 6}]][[2;;61]];

mybag=NestWhileList[bagscheme,{cardata,{}},

Length@#[[1]]>Length[cardata]/2&,1];

mybagcontour[i_]:=Tally[Flatten[mybag[[-i]],1]][[All,1]][[#]]&/@

(Quiet@ConvexHull@Tally[Flatten[mybag[[-i]],1]][[All,1]]);

ListPlot[cardata,Axes->False,Frame->True,AspectRatio->1,
PlotRange->All,
Epilog->{{Blue,Opacity[0.25],
Polygon[cardata[[#]]&/@Flatten[{##,
First@##}&/@{Quiet@ConvexHull@cardata}]]},
{Blue,Opacity[0.5],EdgeForm[Thick],
Polygon[Insert[mybagcontour[1],mybagcontour[1][[1]],-1]]},
Red,Opacity[1],PointSize[0.0125],Point@cardata,
Black,PointSize[0.0275],Point@Quiet@ConvexHullMedian@cardata}]



Tags:

讀者回應 ( 0 意見 )

Post a Comment

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~