From 3f7234064bca456a1eaeba5f1e5f2d334903d20f Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 29 Apr 2016 11:08:13 -0700 Subject: [PATCH] Add Beeswarm example. --- README.md | 4 ++-- img/beeswarm.png | Bin 0 -> 14537 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 img/beeswarm.png diff --git a/README.md b/README.md index db28ab2..caec4a1 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This simplified, extensible [velocity Verlet](https://en.wikipedia.org/wiki/Verl [Force-Directed Graph](http://bl.ocks.org/mbostock/f584aa36df54c451c94a9d0798caed35)[Force-Directed Tree](http://bl.ocks.org/mbostock/95aa92e2f4e8345aaa55a4a94d41ce37) -You can also simulate circles (disks) with collision, such as for [bubble charts](http://www.nytimes.com/interactive/2012/09/06/us/politics/convention-word-counts.html): +You can also simulate circles (disks) with collision, such as for [bubble charts](http://www.nytimes.com/interactive/2012/09/06/us/politics/convention-word-counts.html) or [beeswam plots](http://bl.ocks.org/mbostock/6526445e2b44303eebf21da3b6627320): -[Collision Detection](http://bl.ocks.org/mbostock/31ce330646fa8bcb7289ff3b97aab3f5) +[Collision Detection](http://bl.ocks.org/mbostock/31ce330646fa8bcb7289ff3b97aab3f5)[Beeswarm](http://bl.ocks.org/mbostock/6526445e2b44303eebf21da3b6627320) You can even use it as a rudimentary physics engine, say to simulate cloth: diff --git a/img/beeswarm.png b/img/beeswarm.png new file mode 100644 index 0000000000000000000000000000000000000000..237f686286fbbcd39e9e21e9ae907af6d8ded967 GIT binary patch literal 14537 zcmeHu=U-D@vuFST3q?TbO+c!2=~WTwy|>UrKza>?s;Ed;DUps!4ZYWZNRy6)NDp8P z9Ri_4fE%83-twG#?)?ki{Pu^vX04goYuesxW)h>Xt44m4@g@KOAlFcTVh8{beFFdp z_OBD-Az|O(Kmg!ozN?CgzJ`hlyS}g2b60mK06;w^6+&uEGtJnC8Oo=#WFNl)}5lG zE}NMztr*sRr_1<{<>kM_brmhEOqNM{xaOr0$Ly&*|1_Gt?HX&;ePJLz)Q^qLwHKO| z^M2doYQQQ!L_4fFIQm?5q{_v$sji(pEc|_4IJMS*hJ_-Pc-GL7)3CRv=CdKPm7T9E zqu!>LPZl@ng)mD+SNQ z<;RRZcH7;MrhQK4rX>&pC>)vF=Lyrg3{PV}t)I4jE(b^?cKIlk>9|4YeaZ)@JF1nL zms$;+BKS59Of*js&(54#2i#IursXBPn|H(iC6x&2uWziQ!!JPP4RH**-z(|F>JIvRj9|=m6=tk0dlUM^FodILFNWKxV6Lc*S(-UDjuU&f- z^zPlR$QY$;S+^wVHe;u1=SWF0w3V*AsLYG&n z&*o3b`1ioUgo3)Kx=%v8YS8wr9f_4hZ zZ`8-c@`-@g@ncjT-OTnJK=td?NnD&9&&UlU?{KE76OF(1zb8d?1517Ky3^i;o}`x< z6~Ei}#9sQ7_7LNcsWx9BEj)g$d#;QzJ~zQ?24Yrv80{@H@$4(WUE4%%5{b9)DsVpgM@r?Y_+cX?oR^ZLaFh ziDajs;ZetOseHV}_c2A&QjhKQB(;p#ZjG< zVn^@n+$6cFc+>ig{F|EaxD4%nN`B}(nDtiX+)t6Wl&@8QhmVd| zil34*H3nkjH)cJetl?x?e{)Z9WPaNm+mzJ)^fj<)i_tko+((?CkVOSYdeV z1@K(xoRZ`%i6}`XnI%~c13yy@nIHKEIUA!v!d$#q0)K)h11dhf*R}U7Aworq$KOJ^oR3PV$o8?vl zhtHq8I;VSDIGudc?BxIUBFZEa!Q@8cmKczJAjkwws2sM;G|ilBC~VMZAa%#g{M>xC zB{>~16;=@(8I=zAtpN=L$}a5})i(QO z>`|>a?~$$CA1=+1`tt?#J+Q?4Lz9>_jWuPn=3L$UlxM1^-dw&Mv8jj%r4CeHM<{><^5=p1yq zVDDNbjdv>ZNR@Bvkt52Qc2DeF7n9kO*$woqM3|Xxw+S3Cg`S_hIuX3b{`zi>z#oHR zdza^{!uCy7V^uX(MN6hjrQcgQT&T1-5}&js?Z?ltp0E$_YBD3J1estWEkdU%@gQx3 zc&snD@}d#0_vYXkQSQNdHLXLY$jGDxn_?%aBQNF?VicTLU{<3DR*#bujf^{`GL$ZXHEcl*^m=J3I^U;R|W@gi^> zxC_+K(AU^dgoVi+hVkj}vGDFaaC=}TykK}?uLO#?Bsd}>CzYU}WyOWQi&*u1W2@>{ z@W^S`er_qNORw}xX-l}ng|S(=rH%P{{ZoC;67tHeGQZ+dxi8_*LKLipE7%lTc3d!` z7{_w*W%9cT`@P>$i%rMJd$}~>?O_}{Px>^L``;R!77b*&=nxO<@5L@xr=`$pxLLa` ztVP0EJVrcpI?Qo~eoxP|r!5Ltq|7 z&3A&<2AmcK>00GmMr?hWeV3td1bp(-q-Djdt=D$LhUY0_d$N%AEN7XCLdr6PC1mz= z`5=1(w9(-WKU+pym03-aE>rH$C$@wgjeM8;*gDrbx?Qjk5~j3r(H#{)SxtG1wO@fh zyzHV0D}`EMynpzyHVPRvug8%iPyd??cC4^*B-|COSE3iER`+y0$3jU?d|htlEVOfP ziS9ccjqu*(`^&Gm)SsnB5iOU~3bb;PILm!7cKBB#zn2?wx_yJ5k|hGCh&u0%ewD<} z=B6a76cCnpA}?0GdFw)}-wajhu|U|NkTvuv>rRd8CdL%-h)7qLWKoA4Fd;o5w@;}2 zG5xT6fmrA47<27{M(=DH^Eg{8K@MQB0l5BHVSwP_zCmH$B%juuH3~Z>CRdz_MZe@P zcs*}%ZFhK9R%j^!pq)Ij@=Jez%z1LMZRyx^48d5A%vMj)Yn4m=M8~3HD?jpMvvcBk z4g&4S$9fj{kJoHhV{?CV9c@`hFApL6XI>6YLO~wh`0rT&Kt4zof9v7oZ_gg&;qK`t z8>GPT*9uwu{S{c4gZ-~1{%#5!<~sW9Dqg-$>=Hr`g+w?MZ?dzq%lkfiE^GMY>3^f+ zM+zJ+{{G&w!onaBNC+e@+ z8~QJ4{RPE~OYx?>@IOVbcoSA3b{hbAAf@r-k#W$>*1Uoxlg1>8UEt0z#U{%)ir#dU zDS}OaShULWZD$If<@f#E-RUZi@xM2(PZNy;VQ6TDDd)AP*f3J-hT9*ZR!Vvh-Q1Z> zA^;$HYx)`hz^+ULhy;)W0E7<#fa_!b0C>;<{x|T|x;h=ab^LwxKhY%#{+-A_!BJG&wx!Dp%;f+eEGX!>SgE7EJ^X0f2DjAN*?Dr( z97YECmPoofI5?PPS6H%A8akj%`^%4)MZ#iF%ZcDA>-D?2Xu_l^*V)Oq}3A=1^9 zs7eUO{ZUBrz>1bnaQn!`ML1ImD#L{Mhteg^QHlsqRZ9SFFa}cJXd>$_skY%-nfcKVlpt(SqbLL05*+wrXrys|uMu-4h*#+13K3*h)5MjiAFf&Q071o#t zziX+oo89*E%C7x&5}mzNf9BvVOefdu(2v<#QA|)dtVLX+1701 z3AW}qzm54yc0}WKK1_MSLP9f)tDDQq+@$bM;%}T*lo!DPwVx-qzv^_MiUfNFN28&2 zCXPh-h?(gR23z(HqfjWZ`)d3Np;Who!6p>5)(OQVC>< z(KTy8hLjMKnX5pVN#!d2Wo1F@!`l#IN;5OFX1E{D5#~ouO0*jk=^5qQvVkP?&zyJE z&+*2G+M_BmV58Nxri2^^1#(P#60hYc&JnIVmq>S*ScZKOp_>AmeIKkj$wW zf)jP0?byDLgU$aOm7(Kfq2CvT^md9;mT^he# zY=YNW9{>DlaALN*V|c$GuccDN_t~hIxa)AV$ERO;M0ktMfi?!(RX%N&wGe>>4rSt{ zS`>bQEs&k8a&Pwu3{2Z|t0)z+nlMQcZ2aQJ<~K4BMM|`{oYj+sK|SgnF1$raLBSoE zPlBfetmXw-ScL`$GXy{U=$~=Q;yz$N@=Lv#?^6TMVZn12AGs(VLQ{JM(uFm_E#LkC zuitGikPrdA9F7JRW+vtbcpHz`^Xf~JQBq1O4LjZMe;Sl|YD~ z*udu5q-{h&=>b^e$a19qrL+ywEkH^^xkz~~QIvFb9sA={Zz11gd(=&qqHrZ)K@R`E zJl`D1I$a*l>^fzN6QcZpc@b!ncoYS4-)>& zPgqvSMhLOa;>{t0Sa{E$L3@u#7nG6_)II8(CaY7>5q8$llD%Jg7(QuaD&N-|aK(+tOmKc%B~EBFTvtC#>)g*LLTAh$=DSV6d1jU4j@5JolXQ?gGIjF-uQ$#r>J}yieq?-Rp zUq%wX{@}*>5F?zOlXJ-J$+=wUM~-q9S}9+TH#*)%XdLN2+zeQE5!S0+^ayy;5}J>g zX9S0-4n#%sdlzld_((Q(3PsGy5n5O@iB<3`L~NIM0wP(+#$XJq!3N2Hs(fViAL>y|D zr`c7*{YzGSDSM`rmrRQ>>Bm%};G^w%MhTu>9++XkRfK}72RVI;8=D&hen>Ks@ooMQ zDDiTBuxSmu{=I1-ID(|b?2duLVq2A#aQ%^{+*8Z>)PeCoAHRO4viIwdp9uv$SM? zJ$zPsr&ufrSL|Tje6vjxQIc$vIUnLtyI0IJ0;x1+*(rm3Cp8g2=Pd25D&S_-Cj7=m zm8a#=z*N>QEiFxdV+^LTpkDmp&ZQS0)|SDXll>`S+{A3*6i$Xk3cCg`dQr0DA8h%! zO+my(cqqaU>BTHgHd36xH4_89``u3f@1_so@*gLqOsZMB;+3@LPkZ(JwCe@b)YP1v zosCQbT;tYkk4rLTnZN?U+?fi_06-wW@)3UwX{qoG`==sR&a494o>8E_7D409ZYqxj zSjc3KjoAn--iReHHG+e?Pdf((^-g{HVHpuRA9nxz`GdpBtM(qM+o4lDaQ3*9j?0To zR*m`$5K^&(Ja9(wWT`%Y-O0CH^1uEti^5@mN6RT$TC>D8tKhUd9KOS z23{t!n5O+oNk9_20Isb%Q;wO)58S%_lxx5!36bxcnL4;kef7%7wZw5=LStiK;MM(N zFr-mI)Hgu0vS7X~T}9_ZHQ8?%dYIJfUIEUx7nJX+L7P<6*gj+z^WzRWCf+1^bIsKi zJrQE^CzR9f9<9soz4&+vX=)CC<}D^CC{_D?6W`RmiW~ zQ3EdW0NGe;&Bk3nuJHoPH}5NrdZw*;6sAIgDn;4WC4Sx-gPHon0NK2;D3xV!uNdpR=9| zxpl9U>SE&Da+j;58MDL zH4R-hLnW0SbO6J@WJ1h}F7tM8tZO-5lqe;NKlWM=H)nOJH+bOj1v}BNMjh1v(lD#3l2FDs&C1(|Y zo-6qZVl={`f?S_*i*cBR%14~;mkd1HeH4!W5}0*LNw3`UgAkg|>6#$l>v}xMd~Wp%CkSqmUK2pTiB_Dn-OJD5Ne@N62EhO^gTYg z4h0`7!euf}Hv6a8-HZc{WZxupsE5!Xm@38CZ&7?$Y|K)>7GPg>M6~oz#_>eD` zrcs*!jbZAgZ|~M!jIQ;Ch|Wa)QUDryU#9ITRJWvbh9XK~2K%0Ll8vu#yf-88m53(~ zYwv~OG+Pzk1T%gx&n*Wl98P_2o(rsc?dXj@L_RxN%+X}(Xe8x%Iy)yNtJ=GZjlxR$ z1q5007V%>=e2Kq<59Zv|a4+s44o4;A;YpnXlQv%C3fcX)MWw$jibkkvKXN#Dg!{3oJ>t zQAVHPR+9yJbF57HgCXdVl5D>WC*~6h7Itk}txyQlK&k$8AS?GEJG}nfv zpZ!RbDJkmuOh01>)$Lhz66k^&*wp{T?iESFY;2GM6~&UvKW=z?l$;+=`yy%`U;#hb z&Zq}@KBnQnu9M`4-W9=$`qb}^31c{E(%wZ(@Xx^*SJxvw^5qM`f7UD-nZTuT1V9!X zAAxMxNKdqbFniicSC86af4@fXvcBTW&BaB#Q1Xt>%FiLh02sigr!s{ajGloz=fOF% zfZOu-d&x=SnmR#BXePF`2`b75I^DeorB8B}V^GdaF*D%lHFN_40nJ$Md{1{zZVMtt ze5e`5Jz|?EA0L>k2>l&gdn>6(m;1y*;TX#Y+GZ?$U)L8Blk{@g0T`A1WLdACJr zbfaE67gKZni_61-*%{0=$uk!zG1}VCG*TlZjVl{-5}Dx7<>%|>A%5q`t+h9YHyisg zH^$H$qr3LgnbJdg=bg7jK1q`j`D5Hxu~wVwa0OO-sCIE-lW%Lhm_%>DxWi-=KH|N7gOVk!CFIfC>Lh zs>n~IhUKA1Iv$|&BASiMiN&2B*MaF#gE3}bnJ$reEm-x3xen+L8eZ9h&>Kg`OBR;2 ziVS6%7#8t5(h5$Hu|g%bEJ6k&M&F6LDKiXd&6}AJpzQ7K$PO~zI#_RU^~Bd z!n*ae7wc^4h;sK1X&aGEX`wO(C|CF)T&Ei;(ZWhFhVR$Ri7m}z%6)Xd+C-Uc~8Z^%SG zSiuO3{J3BNhVQ|N{4WyAKy>IAv&~};RU=K7%?dWP{GVClYZ1KAXVxrR)(;Y1Hyh`& zByq8-%*_u7zcr-nJoI+kX?-RC?VZ1#`qrDFQWtu4O)Apn4aw4WrlQ{Ft(y5~2}FotsEAsaK_y|5P);pFqZ3r)Tj zS?`tJmX_sSG=Mx!y%cK(NNF}QL*D#EgI0rYc1&uw93_fN@7f;feKN;>@G3e-s6S^c z5!WrHJOpwzTO9uo=a({$DgQ~!gbUMg7huOee^auT#;Q6({11RIMtiI%z^>@Fz!^c{GXPcm1@`+>YUy$*kRK6?;R zC?Wa(vu9X(Ez+#ZY1d~u`X2D!n%-}cJ{pZvMp;i0Sn)s^v%Nr=aiePhQc2Cb>e&|s z67|Y;q|};#Npd9&&Rja4%Xh8;6>g}AfL7$bwFsQ7kTjNIo0HQ|#~w-<4vC=MGLQk_ z(c-ycp&SyYjqO9%J$&9I;_@66+9F#qR?!S+{nj0T9hYJH;5-1AX@cufXHe&<(Y|27 zA!zg%$}Z%O$~Wo<_;R=0awR7`hc2!7nWS}3ww_}I1e_Q8Mn73&4yDex$VS6#t(+4Q zYCE@1WI@9zbTcV^ZHJ|fTV}&r?PYCaz*(kwftzE9Xs3|~szt0?NT|Bm*7(3{y4;Md zTf%yu%B@i#kqe5Em*hFu5oZ_0ppjqQe$Ci0RVb5n30Kh&5cpuF$1Eo$W8B`oR00Ve zcL!xojnldfcA72M*4;9+_b0nI?g5;6J`h6~oP@k!Z6bYifx>tpa}Cl@#ELDTx(B}m%H2wfWDRxmaQY1nUyZPHTAQ*or{lp z24I&dDm$r@e7RjEbImWlE6}g9&9*z{H>|AvR1&a&oj_y$r;su17ef?J?g58E zChK^DadS~tiOvd}v1qZ)kT7eYtcj?xM&l985c)X1{f|{}ZApyUi|r2sX4pI7iY8y? zuk&@2Nh+~whr_PRg;jrAQ;1?^%A0H-4!vn}GF6!3t?kN%V{*>pA(;av$MP*nDEa-a zdf_mw0j&j}&iOUltHn;VV%#hh397^iz*Xr_D}5X*d1ktGS@`t!$5j}V`{ES1HObo^ zTZOYE-K+6xChJbgGa3PoX2vW5GfEyK7VoLur18Kq@#(B(vmK@YY|?)JQ5-{{MicaB zgn4HiYa0RN5axnKJH}L0 zd?%Zm4_0FMi_#L@Lk9E7Nt&{RXBS(6QRPT`<$z#JZz*Xm&z>(<;8H}=4!P-M`^i@| zUW~7BEZ1RR|7X1%408F)9OS`yx0fbr-b?;0B!AetwH~g;O;G`i0Ou&xd_H~${VWY| zcZ#fdwY(SuGC9@g>En!x$`?LDIp;i!O&Y4pSi~RZ&nP7Ye(-du5?-At4{Dm1lue{RSgIJ)v9hq}^nZ1I4D$BC z=k>s+WcxFZibCDJkZl@Pg`hO6V04i`OX8;-$>)eK74jnHsB4was$PGUD2RFDr2$Q_ zYAz;al9$(tCY=>?qrm4VsST-AGvtLvZ}WHDA6@dQT2hwl$Q(Zzcn5bA_=U7f%s~vB z4lbJ%d~-?lB`PlEW0yCFfqxSIGV+Y>&XnMTh+iqVYMP~DWYl} z2bu&nv-r?QKY{i}MXTh{9GOum1UWwcOa$G5i0>~R9Ym3nl8ipgz}`Rmk^fwAr4qWI zEnJjtl$f+pMcKTc`Qi74#Wx!8IxX>bxbv z%o~^FH@aAp!J%Vk7Lija6ApH;6s=CUKr_Um4@O5uI12HnR#&5wkb%dnc*8qN4tL-2 zSXqN_)$s(C5Ru@sHV~1f?fy2`y(}|(6da+tfkf*WvuJfMuX`l$ zX~`BTXALx=3V)Ths>kgFPhagB^MO0bPct#XcGF2EZ`jmbRZGCV&NYD~{U{tuil3ma?JD6KJDRz}(k9*PL?@c0ASu90Q9zt+h zT{L$<=pWE=!qpb+cVXS!5+u`q{@sQToXYA}HY!yEwG9YvUcYyRX+6_R5oIIhd&nXm zS0PxfP5^R>)VKWzgO(mtadZ17R%uUuIUbR-E zz;8(DD=>2fcv!w{>h~!Qm%-tP8+z2hzf?>Ol<~@Da?`dT6Bcx$=1x<_3GuZK(0d~WnC)#L=Z)jOAbXz|0T4sSdh-IflYPDnfWW7$quA1st3sAs&Z?Uzfm()7h-yp zm6fI40S{abakv8v;Y&8-5TFWt5qc`XVFP-)^`b*Xr*hH zWnGnS!f9cIF`bF7CX~x5Ab8CKJX;NSbNr)HGzMW!wYipcUds|!R$%X$_ z0jpy*`-@qs)gQxzi2xz2zwD$pGQ~U}y2|f-bjk+N;g@U;Wxslg+T!I%zi~k`l9*fY z39nYNfi|OZ1IeB^5e44{hiO@GtK|d%V26if)fmED0*Z*ZJU$M}M_5`2W9H zy%O&OXYiGqR_46fH|-%Td47?)5vdTTm3BEdTW6VQ;L}J*)Ht}IS^V0EE z6>}pVyWg2wdY2IJEs%7z;g^h5Ra_Z?;pZssen^dBw z$H(U2ze;T`XTCoMu9V=YtEX3L%2YeOiBEFdt!-`&8S-7h>wSMWL&J4T7yGwM62d4S_1<$^(9KuSU;=_>QGi`x~ z<1fOxm6vqoSCD^PS4e-Olma-9CBk=QxjSt);-l?g%_>>9*HBbCTea3c zmx`MlUyDYeop-uC+Z-Q8&3pjGKex6zPuz7NI9=KZcTekC1~;A1dp)YYq&yOa_g!9` z#hsO(mnAhK9#))eb_6veF+ZAUcY`CU+eeqSuo^HXIRT{`sG#kROV2$&(JwoN;x{f-c?u&?4W>O75tzZZ)N*^jP_ zR#HSY`s*W_exnp}-o_OzTsWOd&&Bx6vtD4bQP}XzK9lV-v|QiXN?cFq*6(abEz*NM z@nidwLXcl04Tc_(#~O%c`N}Y9+Tqw{90?39$6XvQ^>r*@!kTQ`?+YRmFJ_mIagP4g zqjaSDlW`fPHuPp~)vUsaPYf;BO7-*7&0?_^53Ma8tOnqaoN?!8!ui_DQG$ z16pN4MMTY%gW`RyXYsb?d!IS?Xu)kIAkt4s2@6yu>{Tji|*xem9y;uU(bu=gNGL(>ca5+@~!}R6r>7oz(kt zc#>#4<>V|=9>(bB!ok+4GSMMP`oW^y&Q(VBi?OxK@?a;B1;jdB>cjbwt%9X9<=gJy2xD4R7|HJ%!?CM;@KaRz#zj z`nu-76z`&ZbKIqR10qiMb|Xfe>Sr&wvTW3RE!zEtyo3%>@L(;x&Ev>&&N1RabV$*e zM_avePsJ;?!ux_cB?D_Q(MpM8x)E8B!|)S@!7mPLeS<+-sKLw4qT?DORL13yQ1oDW zfepjN=JHCi2r#R5o_=!k%qg4@DAek``7O`0gY}})`gnN-kW?9dr(ck=2UC%Vit=qp zh-$g4#C=>jM{gZcKxZsYzQE2atzfk+df#F2%xPWu8z{R)taQZiahMxv!1)q{4*tbD z=xjlB{n7l^54oqUwGF2%s5f+m7R(--PvfK-%w)0iFwrfnz@Qu{Ql`x>sBe*y;@_J= w|K9lbZ;iPBuRh!VXLBwd_n)nm!stta6i8DGJ*D33tB!6BRoy2QkL_OlA7>|@-v9sr literal 0 HcmV?d00001