diff --git a/previews/PR54/404.html b/previews/PR54/404.html new file mode 100644 index 00000000..3c3d45bc --- /dev/null +++ b/previews/PR54/404.html @@ -0,0 +1,21 @@ + + + + + + 404 | Beautiful Makie + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/previews/PR54/RRGraph3D.png b/previews/PR54/RRGraph3D.png new file mode 100644 index 00000000..f662edf5 Binary files /dev/null and b/previews/PR54/RRGraph3D.png differ diff --git a/previews/PR54/animScatters.mp4 b/previews/PR54/animScatters.mp4 new file mode 100644 index 00000000..4671ce3e Binary files /dev/null and b/previews/PR54/animScatters.mp4 differ diff --git a/previews/PR54/archimedean_spiral.png b/previews/PR54/archimedean_spiral.png new file mode 100644 index 00000000..11fde6e5 Binary files /dev/null and b/previews/PR54/archimedean_spiral.png differ diff --git a/previews/PR54/assets/Earth_planes.Dzx3IiJC.png b/previews/PR54/assets/Earth_planes.Dzx3IiJC.png new file mode 100644 index 00000000..e55da118 Binary files /dev/null and b/previews/PR54/assets/Earth_planes.Dzx3IiJC.png differ diff --git a/previews/PR54/assets/RGBAcube.Bpn9PdG2.png b/previews/PR54/assets/RGBAcube.Bpn9PdG2.png new file mode 100644 index 00000000..98ed1052 Binary files /dev/null and b/previews/PR54/assets/RGBAcube.Bpn9PdG2.png differ diff --git a/previews/PR54/assets/RRGraph.BKX3sAU9.svg b/previews/PR54/assets/RRGraph.BKX3sAU9.svg new file mode 100644 index 00000000..3b3825dd --- /dev/null +++ b/previews/PR54/assets/RRGraph.BKX3sAU9.svg @@ -0,0 +1,4254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/RRGraph3D.DeZc8NnB.png b/previews/PR54/assets/RRGraph3D.DeZc8NnB.png new file mode 100644 index 00000000..f346cb8b Binary files /dev/null and b/previews/PR54/assets/RRGraph3D.DeZc8NnB.png differ diff --git a/previews/PR54/assets/SSAO_meshscatter.BKHiKm97.png b/previews/PR54/assets/SSAO_meshscatter.BKHiKm97.png new file mode 100644 index 00000000..1c53fc38 Binary files /dev/null and b/previews/PR54/assets/SSAO_meshscatter.BKHiKm97.png differ diff --git a/previews/PR54/assets/SSAO_mgrid.BObk24OV.png b/previews/PR54/assets/SSAO_mgrid.BObk24OV.png new file mode 100644 index 00000000..283da5d3 Binary files /dev/null and b/previews/PR54/assets/SSAO_mgrid.BObk24OV.png differ diff --git a/previews/PR54/assets/aarqlva.ByWakPlv.jpeg b/previews/PR54/assets/aarqlva.ByWakPlv.jpeg new file mode 100644 index 00000000..257bb6be Binary files /dev/null and b/previews/PR54/assets/aarqlva.ByWakPlv.jpeg differ diff --git a/previews/PR54/assets/ablines1.Cf3RR05q.svg b/previews/PR54/assets/ablines1.Cf3RR05q.svg new file mode 100644 index 00000000..35ed442a --- /dev/null +++ b/previews/PR54/assets/ablines1.Cf3RR05q.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/ablines2.RZJMpC4p.svg b/previews/PR54/assets/ablines2.RZJMpC4p.svg new file mode 100644 index 00000000..1f34f216 --- /dev/null +++ b/previews/PR54/assets/ablines2.RZJMpC4p.svg @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/aehqbew.C3DxtXjN.jpeg b/previews/PR54/assets/aehqbew.C3DxtXjN.jpeg new file mode 100644 index 00000000..6a8f07fb Binary files /dev/null and b/previews/PR54/assets/aehqbew.C3DxtXjN.jpeg differ diff --git a/previews/PR54/assets/airquality.D-HWF3R4.svg b/previews/PR54/assets/airquality.D-HWF3R4.svg new file mode 100644 index 00000000..efb424c2 --- /dev/null +++ b/previews/PR54/assets/airquality.D-HWF3R4.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/airquality.D2xjY-DN.svg b/previews/PR54/assets/airquality.D2xjY-DN.svg new file mode 100644 index 00000000..b389a0f5 --- /dev/null +++ b/previews/PR54/assets/airquality.D2xjY-DN.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/animScatters.D-D47jZ5.mp4 b/previews/PR54/assets/animScatters.D-D47jZ5.mp4 new file mode 100644 index 00000000..6fff20cf Binary files /dev/null and b/previews/PR54/assets/animScatters.D-D47jZ5.mp4 differ diff --git a/previews/PR54/assets/app.DQVNZgai.js b/previews/PR54/assets/app.DQVNZgai.js new file mode 100644 index 00000000..8cb92f10 --- /dev/null +++ b/previews/PR54/assets/app.DQVNZgai.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.CfG94X52.js";import{U as o,a7 as u,a8 as c,a9 as l,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,ag as y,d as P,u as v,y as w,x as C,ah as R,ai as b,aj as E,ak as S}from"./chunks/framework.uXlnTO8a.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function x(){return g(T)}function D(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/previews/PR54/assets/archimedean_spiral.Bci0qTsR.png b/previews/PR54/assets/archimedean_spiral.Bci0qTsR.png new file mode 100644 index 00000000..ce2bc4e8 Binary files /dev/null and b/previews/PR54/assets/archimedean_spiral.Bci0qTsR.png differ diff --git a/previews/PR54/assets/arrows.aCWBqbKF.png b/previews/PR54/assets/arrows.aCWBqbKF.png new file mode 100644 index 00000000..2c4d3986 Binary files /dev/null and b/previews/PR54/assets/arrows.aCWBqbKF.png differ diff --git a/previews/PR54/assets/astronauts.DuyhzBuN.png b/previews/PR54/assets/astronauts.DuyhzBuN.png new file mode 100644 index 00000000..c9ebed97 Binary files /dev/null and b/previews/PR54/assets/astronauts.DuyhzBuN.png differ diff --git a/previews/PR54/assets/bakjqfs.CVggQmmU.png b/previews/PR54/assets/bakjqfs.CVggQmmU.png new file mode 100644 index 00000000..9150c340 Binary files /dev/null and b/previews/PR54/assets/bakjqfs.CVggQmmU.png differ diff --git a/previews/PR54/assets/band.uVtmLffi.svg b/previews/PR54/assets/band.uVtmLffi.svg new file mode 100644 index 00000000..e93d57de --- /dev/null +++ b/previews/PR54/assets/band.uVtmLffi.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/band3d.DEcXPdpU.png b/previews/PR54/assets/band3d.DEcXPdpU.png new file mode 100644 index 00000000..019144b4 Binary files /dev/null and b/previews/PR54/assets/band3d.DEcXPdpU.png differ diff --git a/previews/PR54/assets/band_confidence_error.NIPjkcqn.svg b/previews/PR54/assets/band_confidence_error.NIPjkcqn.svg new file mode 100644 index 00000000..5140a102 --- /dev/null +++ b/previews/PR54/assets/band_confidence_error.NIPjkcqn.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/band_ribbon.DwCeqvvC.svg b/previews/PR54/assets/band_ribbon.DwCeqvvC.svg new file mode 100644 index 00000000..bd7e00ea --- /dev/null +++ b/previews/PR54/assets/band_ribbon.DwCeqvvC.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/band_y_error.D4QvtXrq.svg b/previews/PR54/assets/band_y_error.D4QvtXrq.svg new file mode 100644 index 00000000..4256246e --- /dev/null +++ b/previews/PR54/assets/band_y_error.D4QvtXrq.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/barplot_cmap_y_error.9wG3xrgC.svg b/previews/PR54/assets/barplot_cmap_y_error.9wG3xrgC.svg new file mode 100644 index 00000000..9cacf2ef --- /dev/null +++ b/previews/PR54/assets/barplot_cmap_y_error.9wG3xrgC.svg @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/bins_counts.lSHbyUr6.svg b/previews/PR54/assets/bins_counts.lSHbyUr6.svg new file mode 100644 index 00000000..b20bc69c --- /dev/null +++ b/previews/PR54/assets/bins_counts.lSHbyUr6.svg @@ -0,0 +1,3904 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/black_epicycloid.BEXQJ_cv.svg b/previews/PR54/assets/black_epicycloid.BEXQJ_cv.svg new file mode 100644 index 00000000..08156ec0 --- /dev/null +++ b/previews/PR54/assets/black_epicycloid.BEXQJ_cv.svg @@ -0,0 +1,637 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/blue_marble.CMuaYMif.png b/previews/PR54/assets/blue_marble.CMuaYMif.png new file mode 100644 index 00000000..cccd0bfa Binary files /dev/null and b/previews/PR54/assets/blue_marble.CMuaYMif.png differ diff --git a/previews/PR54/assets/boxplot_collection.s1CoOzB_.svg b/previews/PR54/assets/boxplot_collection.s1CoOzB_.svg new file mode 100644 index 00000000..51f9926a --- /dev/null +++ b/previews/PR54/assets/boxplot_collection.s1CoOzB_.svg @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/branching.B1Gitfaz.png b/previews/PR54/assets/branching.B1Gitfaz.png new file mode 100644 index 00000000..116ea24b Binary files /dev/null and b/previews/PR54/assets/branching.B1Gitfaz.png differ diff --git a/previews/PR54/assets/bubble_plot.1UZCsFYW.svg b/previews/PR54/assets/bubble_plot.1UZCsFYW.svg new file mode 100644 index 00000000..e3dd7cc5 --- /dev/null +++ b/previews/PR54/assets/bubble_plot.1UZCsFYW.svg @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/bubble_plot_logxy.Bwg1eP0R.png b/previews/PR54/assets/bubble_plot_logxy.Bwg1eP0R.png new file mode 100644 index 00000000..59bd654e Binary files /dev/null and b/previews/PR54/assets/bubble_plot_logxy.Bwg1eP0R.png differ diff --git a/previews/PR54/assets/bxxzaqu.CndvdfoT.jpeg b/previews/PR54/assets/bxxzaqu.CndvdfoT.jpeg new file mode 100644 index 00000000..b1fbdbc1 Binary files /dev/null and b/previews/PR54/assets/bxxzaqu.CndvdfoT.jpeg differ diff --git a/previews/PR54/assets/candlestick.BEcnkkX3.png b/previews/PR54/assets/candlestick.BEcnkkX3.png new file mode 100644 index 00000000..b643065c Binary files /dev/null and b/previews/PR54/assets/candlestick.BEcnkkX3.png differ diff --git a/previews/PR54/assets/ccfsjgl.GmHGyjMT.png b/previews/PR54/assets/ccfsjgl.GmHGyjMT.png new file mode 100644 index 00000000..b3530fb7 Binary files /dev/null and b/previews/PR54/assets/ccfsjgl.GmHGyjMT.png differ diff --git a/previews/PR54/assets/chunks/@localSearchIndexroot.CPLF6U-Y.js b/previews/PR54/assets/chunks/@localSearchIndexroot.CPLF6U-Y.js new file mode 100644 index 00000000..0efe5385 --- /dev/null +++ b/previews/PR54/assets/chunks/@localSearchIndexroot.CPLF6U-Y.js @@ -0,0 +1 @@ +const e='{"documentCount":196,"nextId":196,"documentIds":{"0":"/previews/PR54/examples/2d/arrows/arrows#arrows","1":"/previews/PR54/examples/2d/band/band#band","2":"/previews/PR54/examples/2d/band/band_confidence_error#band-confidence-error","3":"/previews/PR54/examples/2d/band/band_ribbon#band-or-ribbon","4":"/previews/PR54/examples/2d/band/filled_under#Filled-Under","5":"/previews/PR54/examples/2d/band/filled_under_bell#Filled-curve.-Under-the-bell","6":"/previews/PR54/examples/2d/bars/barplot_cmap_y_error#barplot-with-colormap-and-y-errorbars","7":"/previews/PR54/examples/2d/bars/barplot_y_error#barplot-and-y-errorbars","8":"/previews/PR54/examples/2d/bars/stripped_bars#stripped-bars","9":"/previews/PR54/examples/2d/bars/x_barplot_error_y_error#x-error-barplot-and-y-errorbars","10":"/previews/PR54/examples/2d/boxplots/airquality#boxplots-for-airquality-data","11":"/previews/PR54/examples/2d/boxplots/boxplots_collection#boxplot-collection:-Normal-distributions","12":"/previews/PR54/examples/2d/boxplots/vertical_horizontal#vertical-and-horizontal-boxplots","13":"/previews/PR54/examples/2d/contour/complex_function#contour-plots-at-levels","14":"/previews/PR54/examples/2d/contour/contour_over_heatmap#contour-over-heatmap","15":"/previews/PR54/examples/2d/contour/egg_shape#contour-levels:-egg-shape","16":"/previews/PR54/examples/2d/contour/overlayed_functions#Multiple-overlayed-contour-plots","17":"/previews/PR54/examples/2d/contour/qubit#contour-levels:-qubit","18":"/previews/PR54/examples/2d/density/density#density-plot","19":"/previews/PR54/examples/2d/density/mtcars_density#density-mtcars","20":"/previews/PR54/examples/2d/errorbars/errorbars#errorbars","21":"/previews/PR54/examples/2d/errorbars/simple_x_y#errorbars-in-x-and-y","22":"/previews/PR54/examples/2d/errorbars/y_colormap#errorbars-with-a-colormap","23":"/previews/PR54/examples/2d/heatmaps/heatmap#heatmap","24":"/previews/PR54/examples/2d/heatmaps/heatmap1SharedCbar#heatmap-with-1-shared-colorbar","25":"/previews/PR54/examples/2d/heatmaps/heatmap2SharedCbars#heatmap-with-2-shared-colorbars","26":"/previews/PR54/examples/2d/heatmaps/heatmapCbarBottom#heatmap-with-bottom-colorbar","27":"/previews/PR54/examples/2d/heatmaps/heatmapCbarLeft#heatmap-with-left-colorbar","28":"/previews/PR54/examples/2d/heatmaps/heatmapCbarTop#heatmap-with-top-colorbar","29":"/previews/PR54/examples/2d/heatmaps/heatmapGrid#heatmaps:-grid","30":"/previews/PR54/examples/2d/heatmaps/heatmapIrregular#heatmap-irregular-steps","31":"/previews/PR54/examples/2d/heatmaps/heatmapIrregularCategories#heatmap:-Irregular-Categories","32":"/previews/PR54/examples/2d/heatmaps/heatmapLogIrregular#heatmap:-log-scales","33":"/previews/PR54/examples/2d/heatmaps/heatmapScaleAdd#heatmap:-scales-added","34":"/previews/PR54/examples/2d/heatmaps/heatmapScaleCrosshair#heatmap:-scale-crosshair","35":"/previews/PR54/examples/2d/heatmaps/heatmapScaleDetail#heatmap:-scale-detail","36":"/previews/PR54/examples/2d/heatmaps/heatmapScaleSections#heatmap:-scale-sections","37":"/previews/PR54/examples/2d/heatmaps/heatmapxyz#heatmap:-x,-y-positions","38":"/previews/PR54/examples/2d/heatmaps/text_heatmap#heatmap-with-text-on-top","39":"/previews/PR54/examples/2d/histogram/bins_counts#histograms-bins-counts","40":"/previews/PR54/examples/2d/histogram/hist#histogram-pdf-normalization","41":"/previews/PR54/examples/2d/histogram/hist_pdf#Histogram-and-pdf","42":"/previews/PR54/examples/2d/histogram/hists_on_the_sides#Histograms-on-the-sides","43":"/previews/PR54/examples/2d/histogram/normalizations#Histogram-normalizations","44":"/previews/PR54/examples/2d/histogram/parallel_image_hist#Histograms-r,g,b-colors-on-image","45":"/previews/PR54/examples/2d/lines/line_cmap#line-with-colormap","46":"/previews/PR54/examples/2d/lines/line_cmaps#lines-width-colormaps","47":"/previews/PR54/examples/2d/lines/line_cmaps_a#lines-with-colormap-and-colorbars-around","48":"/previews/PR54/examples/2d/lines/line_colored#lines-colored-with-discrete-colors-from-colormap:-Legend","49":"/previews/PR54/examples/2d/lines/line_colored_cbar#lines-colored-with-discrete-colors-from-colormap:-Colorbar","50":"/previews/PR54/examples/2d/lines/line_inset#Inset-line-plot","51":"/previews/PR54/examples/2d/lines/line_inset_h#Inset-heatmap","52":"/previews/PR54/examples/2d/lines/line_latex#lines,-latex-fonts","53":"/previews/PR54/examples/2d/lines/line_latex_bessel#besselj-lines-with-latex-fonts","54":"/previews/PR54/examples/2d/lines/line_latex_bessels#bessely-width-latex-fonts","55":"/previews/PR54/examples/2d/lines/line_single#simple-line","56":"/previews/PR54/examples/2d/lines/line_time#Time-ticks-on-x-axis","57":"/previews/PR54/examples/2d/lines/line_twin_axis#twin-axis","58":"/previews/PR54/examples/2d/lines/line_two#two-lines","59":"/previews/PR54/examples/2d/lines/line_xlog#x-log-scale","60":"/previews/PR54/examples/2d/lines/line_xylog#x-and-y-log-scales","61":"/previews/PR54/examples/2d/lines/line_ylog#y-log-scale","62":"/previews/PR54/examples/2d/linesegments/RRGraph#rrgraph","63":"/previews/PR54/examples/2d/linesegments/linesegments#linesegments","64":"/previews/PR54/examples/2d/poly/poly_ngon#poly-ngonShape","65":"/previews/PR54/examples/2d/scatterlines/markers#scatter-markers","66":"/previews/PR54/examples/2d/scatterlines/scatters_line#scatterlines-scatter-with-legend-inside","67":"/previews/PR54/examples/2d/scatterlines/scatters_line_leg_out#scatters-line-with-Legend-outside","68":"/previews/PR54/examples/2d/scatterlines/simple#simple-scatterlines","69":"/previews/PR54/examples/2d/scatterlines/spirals#spiral-scatterlines","70":"/previews/PR54/examples/2d/scatters/bubble_plot#bubble-plot:-scatters","71":"/previews/PR54/examples/2d/scatters/bubble_plot_logxy#bubble-plot:-scatters-in-x-and-y-log-scale","72":"/previews/PR54/examples/2d/scatters/iris_dataset#iris-dataset:-scatter-plot","73":"/previews/PR54/examples/2d/scatters/makie_contributors#Makie-contributors","74":"/previews/PR54/examples/2d/scatters/scatter#scatter","75":"/previews/PR54/examples/2d/scatters/scatters_colormap#scatters-with-colormap","76":"/previews/PR54/examples/2d/scatters/scatters_legend#scatters-and-axislegend:-Legend-inside","77":"/previews/PR54/examples/2d/series/series#multiple-lines-at-once:-series","78":"/previews/PR54/examples/2d/stairs/stairs#stairs-plot","79":"/previews/PR54/examples/2d/stem/stem#stem-plot","80":"/previews/PR54/examples/2d/streamplot/complex_polya_field#streamplot:-complex-polya-field","81":"/previews/PR54/examples/2d/streamplot/field_heatmap#streamplot-over-heatmap","82":"/previews/PR54/examples/2d/streamplot/ode_solution#streamplot-ode-solution","83":"/previews/PR54/examples/2d/streamplot/poincare_vander#streamplot:-Poincare-and-Van-der-Paul","84":"/previews/PR54/examples/2d/streamplot/streamplot#streamplot:-Electric-field-lines","85":"/previews/PR54/examples/2d/text/your_name#text:-rich-text","86":"/previews/PR54/examples/2d/violins/airquality#violin-plot:-airquality-data","87":"/previews/PR54/examples/2d/violins/collection_violins#several-violins:-Normal-distributions","88":"/previews/PR54/examples/2d/violins/single#single-violin","89":"/previews/PR54/examples/3d/contour3d/contour_v#contour-in-3d","90":"/previews/PR54/examples/3d/contour3d/contourf_contour3d#contourf-and-contour3d","91":"/previews/PR54/examples/3d/lines3d/archimedean_spiral#line:-archimedean-spiral","92":"/previews/PR54/examples/3d/lines3d/filled3d_curve#Filled-curve-in-3d","93":"/previews/PR54/examples/3d/lines3d/filled3d_curve#Filled-gradient-under-3D-curve","94":"/previews/PR54/examples/3d/lines3d/line3d#single-3d-line","95":"/previews/PR54/examples/3d/lines3d/lines_wire_contour_3d#lines,-wireframe-and-contour-in-3d","96":"/previews/PR54/examples/3d/lines3d/wireframe_torus#wireframe-torus","97":"/previews/PR54/examples/3d/meshes/Earth_planes#Earth-on-sphere-surrounded-by-planes","98":"/previews/PR54/examples/3d/meshes/cpunkCube#Download-images-from-twitter","99":"/previews/PR54/examples/3d/meshes/cpunkCube#Set-images-into-the-right-(your)-order","100":"/previews/PR54/examples/3d/meshes/cpunkCube#Do-the-meshed-cube","101":"/previews/PR54/examples/3d/meshes/cpunkCube#Get-stats","102":"/previews/PR54/examples/3d/meshes/cpunkCube#Plot-all-together","103":"/previews/PR54/examples/3d/meshes/gfield#Fake-gravitation-field,-spheres-and-wireframes","104":"/previews/PR54/examples/3d/meshes/how_to_cube#Simple-cubed-mesh","105":"/previews/PR54/examples/3d/meshes/how_to_cube#A-matrix-(image)-as-colors","106":"/previews/PR54/examples/3d/meshes/how_to_cube#Wrap-individual-colors-around-mesh","107":"/previews/PR54/examples/3d/meshes/how_to_cube#Individual-images-per-face","108":"/previews/PR54/examples/3d/meshes/isosurfaces#isosurfaces","109":"/previews/PR54/examples/3d/meshes/isosurfaces#torus","110":"/previews/PR54/examples/3d/meshes/isosurfaces#Entzensberger-star","111":"/previews/PR54/examples/3d/meshes/isosurfaces#tetrahedron","112":"/previews/PR54/examples/3d/meshes/isosurfaces#decocube","113":"/previews/PR54/examples/3d/meshes/meshes#Meshes:-Cylinder,-Pyramid,-Cone,-Cube","114":"/previews/PR54/examples/3d/meshes/simplex#simplex","115":"/previews/PR54/examples/3d/mscatters/RGBAcube#rgbacube","116":"/previews/PR54/examples/3d/mscatters/RRGraph3D#Random-Rectangular-Graph","117":"/previews/PR54/examples/3d/mscatters/SSAO_meshscatter#SSAO-and-meshscatters","118":"/previews/PR54/examples/3d/mscatters/SSAO_mgrid#SSAO-meshscatters-grid","119":"/previews/PR54/examples/3d/mscatters/gauss2d#meshscatters-and-distributions","120":"/previews/PR54/examples/3d/mscatters/lscene_limits#Sets-limits-on-a-LScene","121":"/previews/PR54/examples/3d/mscatters/cube_mscatters#Assembled-cube-with-smaller-cubes:-meshscatters","122":"/previews/PR54/examples/3d/surfaces/band3d#band-in-3d","123":"/previews/PR54/examples/3d/surfaces/branching#branching","124":"/previews/PR54/examples/3d/surfaces/complex_function#complex-function-surface","125":"/previews/PR54/examples/3d/surfaces/constraints#constraints:-split-surfaces","126":"/previews/PR54/examples/3d/surfaces/gabriels_horn#gabriels-horn:-surface-revolution","127":"/previews/PR54/examples/3d/surfaces/onecolor#surface-with-one-color","128":"/previews/PR54/examples/3d/surfaces/klein_bottle#klein-bottle","129":"/previews/PR54/examples/3d/surfaces/revolution_surface#revolution-surface","130":"/previews/PR54/examples/3d/surfaces/revolution_surface_s#revolution-surface-s","131":"/previews/PR54/examples/3d/surfaces/surface#surface-contour-wireframe","132":"/previews/PR54/examples/3d/surfaces/surface_filled_sides#Plotting-sides","133":"/previews/PR54/examples/3d/surfaces/surface_filled_sides#Sides,-colour-gradient-bottom-to-top","134":"/previews/PR54/examples/3d/surfaces/surface_filled_sides#Different-views-and-options","135":"/previews/PR54/examples/3d/surfaces/tesseralSphericalH#Tesseral-Spherical-Harmonics","136":"/previews/PR54/examples/3d/surfaces/torus#Torus-surfaces","137":"/previews/PR54/examples/3d/volume/volume#volume","138":"/previews/PR54/examples/3d/volume/volume_contour_scatters#volume,-contour-and-scatters","139":"/previews/PR54/examples/animations/gravities#Falling-bodies-in-the-Solar-System.","140":"/previews/PR54/examples/animations/rotating_with_time#Rotating-disc-points","141":"/previews/PR54/examples/animations/scatter_and_line#Animate-line-and-point:-Projectile-motion","142":"/previews/PR54/examples/animations/scatter_size#Animate-markersize-growth","143":"/previews/PR54/examples/animations/travelling_solar_system#The-speed-of-light-in-the-solar-system","144":"/previews/PR54/examples/aog/MarketData#Close-Price","145":"/previews/PR54/examples/aog/MarketData#prices","146":"/previews/PR54/examples/aog/MarketData#stockchart","147":"/previews/PR54/examples/aog/datasaurus#ggplot2-theme","148":"/previews/PR54/examples/aog/datasaurus#dark-theme","149":"/previews/PR54/examples/aog/penguins3d#Penguins-3d-Wireframe-density","150":"/previews/PR54/examples/aog/penguins3d#Penguins-histogram","151":"/previews/PR54/examples/aog/penguins3d#AoG-and-plain-Makie","152":"/previews/PR54/examples/dashboards/colorschemes#colorschemes-options:-Slider-volume","153":"/previews/PR54/examples/dashboards/matcap#Mesh-with-matcap:-Slider","154":"/previews/PR54/examples/dashboards/tesseral_spherical_harmonics#Tesseral-Spherical-Harmonics:-Slider-Menu","155":"/previews/PR54/examples/datavis/astronauts#astronauts","156":"/previews/PR54/examples/datavis/candlestick#candlestick","157":"/previews/PR54/examples/datavis/earthquakes#earthquakes","158":"/previews/PR54/examples/datavis/eigenvals_densities#4x4-random","159":"/previews/PR54/examples/datavis/eigenvals_densities#tridiagonal","160":"/previews/PR54/examples/datavis/eigenvals_densities#Beta-distribution","161":"/previews/PR54/examples/datavis/eigenvals_densities#3x3-random","162":"/previews/PR54/examples/datavis/eigenvals_densities#Tridiagonal-30x30-[-1,1]","163":"/previews/PR54/examples/datavis/eigenvals_densities#8x8-random-[-1,-1/f,-0,-1/f,-1]","164":"/previews/PR54/examples/datavis/eigenvals_evolution#Unitary-matrices","165":"/previews/PR54/examples/datavis/eigenvals_evolution#Complex-valued-random-matrices","166":"/previews/PR54/examples/datavis/fractals#Mandelbrot-definitions","167":"/previews/PR54/examples/datavis/fractals#Mandelbrot-plot","168":"/previews/PR54/examples/datavis/fractals#Julia-set-definitions","169":"/previews/PR54/examples/datavis/fractals#Julia-set-plot","170":"/previews/PR54/examples/datavis/fractals#Julia-set-examples","171":"/previews/PR54/examples/datavis/leos#leos","172":"/previews/PR54/examples/datavis/strange_attractors#Strange-attractors","173":"/previews/PR54/examples/datavis/strange_attractors#trajectory","174":"/previews/PR54/examples/datavis/strange_attractors#aggregation","175":"/previews/PR54/examples/datavis/strange_attractors#equalization","176":"/previews/PR54/examples/datavis/strange_attractors#clifford","177":"/previews/PR54/examples/datavis/multipleTitles#Multiple-Titles","178":"/previews/PR54/examples/geo/blue_marble#Blue-marble","179":"/previews/PR54/examples/geo/coastlines#coastlines","180":"/previews/PR54/examples/geo/donut_earth_sun#Torus-surfacec-with-sun-and-moon-textures","181":"/previews/PR54/examples/geo/moon#Moon-texture-onto-a-sphere","182":"/previews/PR54/examples/geo/projections#Geo-Projections","183":"/previews/PR54/examples/geo/projections#More-projections","184":"/previews/PR54/examples/rpr/sphere_plane#background/sky-color","185":"/previews/PR54/examples/rpr/sphere_plane#color-as-an-array/image,-hence-a-normal-image-also-works","186":"/previews/PR54/examples/rpr/sphere_plane#custom-Tesselation-over-an-Sphere","187":"/previews/PR54/examples/rpr/sphere_plane#the-actual-figure","188":"/previews/PR54/examples/rpr/sphere_plane#save("SpherePlaneSky.png",-imageOut)-#-save-just-screen-scene.","189":"/previews/PR54/examples/geo/vertical_feature_mask#vertical-3d-band-over-map","190":"/previews/PR54/examples/themes/dark_surface_contour3d_streamplot#Dark-theme","191":"/previews/PR54/examples/themes/black_epicycloid#Black-theme","192":"/previews/PR54/examples/themes/light_ngon#light-theme","193":"/previews/PR54/examples/themes/ggplot2_stem#ggplot2-theme","194":"/previews/PR54/examples/themes/minimal_series#minimal-theme","195":"/previews/PR54/pkgs_versions#Packages-versions"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,56],"1":[1,1,52],"2":[3,1,30],"3":[3,1,28],"4":[2,1,35],"5":[5,1,63],"6":[6,1,45],"7":[4,1,40],"8":[2,1,104],"9":[6,1,46],"10":[4,1,53],"11":[4,1,73],"12":[4,1,64],"13":[4,1,51],"14":[3,1,54],"15":[4,1,49],"16":[4,1,43],"17":[3,1,54],"18":[2,1,68],"19":[2,1,71],"20":[1,1,47],"21":[5,1,41],"22":[4,1,48],"23":[1,1,42],"24":[5,1,44],"25":[5,1,48],"26":[4,1,44],"27":[4,1,40],"28":[4,1,45],"29":[2,1,46],"30":[3,1,43],"31":[3,1,88],"32":[3,1,68],"33":[3,1,215],"34":[3,1,226],"35":[3,1,242],"36":[3,1,254],"37":[4,1,45],"38":[5,1,82],"39":[3,1,52],"40":[3,1,65],"41":[3,1,37],"42":[4,1,63],"43":[2,1,49],"44":[7,1,61],"45":[3,1,36],"46":[3,1,54],"47":[6,1,66],"48":[8,1,68],"49":[8,1,72],"50":[3,1,60],"51":[2,1,75],"52":[3,1,68],"53":[5,1,54],"54":[4,1,69],"55":[2,1,42],"56":[5,1,53],"57":[2,1,34],"58":[2,1,49],"59":[3,1,40],"60":[5,1,39],"61":[3,1,38],"62":[1,1,119],"63":[1,1,44],"64":[2,1,68],"65":[2,1,36],"66":[6,1,44],"67":[6,1,37],"68":[2,1,27],"69":[2,1,39],"70":[3,1,59],"71":[9,1,65],"72":[4,1,58],"73":[2,1,66],"74":[1,1,42],"75":[3,1,86],"76":[5,1,16],"77":[5,1,60],"78":[2,1,66],"79":[2,1,70],"80":[4,1,62],"81":[3,1,62],"82":[3,1,32],"83":[6,1,57],"84":[4,1,72],"85":[2,1,56],"86":[4,1,55],"87":[4,1,67],"88":[2,1,52],"89":[3,1,54],"90":[3,1,77],"91":[3,1,80],"92":[4,1,49],"93":[5,1,33],"94":[3,1,32],"95":[6,1,76],"96":[2,1,79],"97":[6,1,86],"98":[4,1,38],"99":[7,1,40],"100":[4,1,31],"101":[2,1,50],"102":[3,1,103],"103":[6,1,138],"104":[3,1,40],"105":[5,1,39],"106":[5,1,102],"107":[4,1,48],"108":[1,1,63],"109":[1,1,35],"110":[2,1,29],"111":[1,1,37],"112":[1,1,61],"113":[5,1,109],"114":[1,1,82],"115":[1,1,49],"116":[3,1,128],"117":[3,1,73],"118":[3,1,82],"119":[3,1,88],"120":[5,1,29],"121":[6,1,84],"122":[3,1,76],"123":[1,1,44],"124":[3,1,60],"125":[3,1,82],"126":[4,1,66],"127":[4,1,43],"128":[2,1,60],"129":[2,1,59],"130":[3,1,60],"131":[4,1,76],"132":[2,1,48],"133":[6,1,49],"134":[4,1,58],"135":[3,1,104],"136":[2,1,99],"137":[1,1,107],"138":[4,1,141],"139":[7,1,242],"140":[3,1,72],"141":[6,1,99],"142":[3,1,87],"143":[8,1,180],"144":[2,1,21],"145":[1,1,32],"146":[1,1,44],"147":[2,1,61],"148":[2,1,71],"149":[4,1,21],"150":[2,1,29],"151":[4,1,91],"152":[5,1,97],"153":[4,1,140],"154":[6,1,159],"155":[1,1,263],"156":[1,1,79],"157":[1,1,204],"158":[2,1,42],"159":[1,1,43],"160":[2,1,44],"161":[2,1,45],"162":[4,1,48],"163":[6,1,42],"164":[2,1,51],"165":[4,1,51],"166":[2,1,44],"167":[2,1,127],"168":[3,1,49],"169":[3,1,26],"170":[3,1,56],"171":[1,1,266],"172":[2,1,41],"173":[1,1,27],"174":[1,1,25],"175":[1,1,33],"176":[1,1,87],"177":[2,1,182],"178":[2,1,73],"179":[1,1,30],"180":[7,1,87],"181":[5,1,67],"182":[2,1,60],"183":[2,1,174],"184":[3,1,11],"185":[10,1,15],"186":[5,1,27],"187":[3,1,55],"188":[9,1,9],"189":[5,1,83],"190":[2,1,99],"191":[2,1,66],"192":[2,1,61],"193":[2,1,75],"194":[2,1,64],"195":[2,1,151]},"averageFieldLength":[3.316326530612245,1,68.63265306122452],"storedFields":{"0":{"title":"Arrows","titles":[]},"1":{"title":"band","titles":[]},"2":{"title":"band confidence error","titles":[]},"3":{"title":"band or ribbon","titles":[]},"4":{"title":"Filled Under","titles":[]},"5":{"title":"Filled curve. Under the bell","titles":[]},"6":{"title":"barplot with colormap and y-errorbars","titles":[]},"7":{"title":"barplot and y-errorbars","titles":[]},"8":{"title":"stripped bars","titles":[]},"9":{"title":"x-error barplot and y-errorbars","titles":[]},"10":{"title":"boxplots for airquality data","titles":[]},"11":{"title":"boxplot collection: Normal distributions","titles":[]},"12":{"title":"vertical and horizontal boxplots","titles":[]},"13":{"title":"contour plots at levels","titles":[]},"14":{"title":"contour over heatmap","titles":[]},"15":{"title":"contour levels: egg shape","titles":[]},"16":{"title":"Multiple overlayed contour plots","titles":[]},"17":{"title":"contour levels: qubit","titles":[]},"18":{"title":"density plot","titles":[]},"19":{"title":"density mtcars","titles":[]},"20":{"title":"errorbars","titles":[]},"21":{"title":"errorbars in x and y","titles":[]},"22":{"title":"errorbars with a colormap","titles":[]},"23":{"title":"heatmap","titles":[]},"24":{"title":"heatmap with 1 shared colorbar","titles":[]},"25":{"title":"heatmap with 2 shared colorbars","titles":[]},"26":{"title":"heatmap with bottom colorbar","titles":[]},"27":{"title":"heatmap with left colorbar","titles":[]},"28":{"title":"heatmap with top colorbar","titles":[]},"29":{"title":"heatmaps: grid","titles":[]},"30":{"title":"heatmap irregular steps","titles":[]},"31":{"title":"heatmap: Irregular Categories","titles":[]},"32":{"title":"heatmap: log scales","titles":[]},"33":{"title":"heatmap: scales added","titles":[]},"34":{"title":"heatmap: scale crosshair","titles":[]},"35":{"title":"heatmap: scale-detail","titles":[]},"36":{"title":"heatmap: scale sections","titles":[]},"37":{"title":"heatmap: x, y positions","titles":[]},"38":{"title":"heatmap with text on top","titles":[]},"39":{"title":"histograms bins counts","titles":[]},"40":{"title":"histogram pdf normalization","titles":[]},"41":{"title":"Histogram and pdf","titles":[]},"42":{"title":"Histograms on the sides","titles":[]},"43":{"title":"Histogram normalizations","titles":[]},"44":{"title":"Histograms r,g,b colors on image","titles":[]},"45":{"title":"line with colormap","titles":[]},"46":{"title":"lines width colormaps","titles":[]},"47":{"title":"lines with colormap and colorbars around","titles":[]},"48":{"title":"lines colored with discrete colors from colormap: Legend","titles":[]},"49":{"title":"lines colored with discrete colors from colormap: Colorbar","titles":[]},"50":{"title":"Inset line plot","titles":[]},"51":{"title":"Inset heatmap","titles":[]},"52":{"title":"lines, latex fonts","titles":[]},"53":{"title":"besselj lines with latex fonts","titles":[]},"54":{"title":"bessely width latex fonts","titles":[]},"55":{"title":"simple line","titles":[]},"56":{"title":"Time ticks on x axis","titles":[]},"57":{"title":"twin axis","titles":[]},"58":{"title":"two lines","titles":[]},"59":{"title":"x log scale","titles":[]},"60":{"title":"x and y log scales","titles":[]},"61":{"title":"y log scale","titles":[]},"62":{"title":"RRGraph","titles":[]},"63":{"title":"linesegments","titles":[]},"64":{"title":"poly ngonShape","titles":[]},"65":{"title":"scatter markers","titles":[]},"66":{"title":"scatterlines + scatter with legend inside","titles":[]},"67":{"title":"scatters + line with Legend outside","titles":[]},"68":{"title":"simple scatterlines","titles":[]},"69":{"title":"spiral scatterlines","titles":[]},"70":{"title":"bubble plot: scatters","titles":[]},"71":{"title":"bubble plot: scatters in x and y log scale","titles":[]},"72":{"title":"iris dataset: scatter plot","titles":[]},"73":{"title":"Makie contributors","titles":[]},"74":{"title":"scatter","titles":[]},"75":{"title":"scatters with colormap","titles":[]},"76":{"title":"scatters and axislegend: Legend inside","titles":[]},"77":{"title":"multiple lines at once: series","titles":[]},"78":{"title":"stairs plot","titles":[]},"79":{"title":"stem plot","titles":[]},"80":{"title":"streamplot: complex polya field","titles":[]},"81":{"title":"streamplot over heatmap","titles":[]},"82":{"title":"streamplot ode solution","titles":[]},"83":{"title":"streamplot: Poincare and Van der Paul","titles":[]},"84":{"title":"streamplot: Electric field lines","titles":[]},"85":{"title":"text: rich text","titles":[]},"86":{"title":"violin plot: airquality data","titles":[]},"87":{"title":"several violins: Normal distributions","titles":[]},"88":{"title":"single violin","titles":[]},"89":{"title":"contour in 3d","titles":[]},"90":{"title":"contourf and contour3d","titles":[]},"91":{"title":"line: archimedean spiral","titles":[]},"92":{"title":"Filled curve in 3d","titles":[]},"93":{"title":"Filled gradient under 3D curve","titles":[]},"94":{"title":"single 3d line","titles":[]},"95":{"title":"lines, wireframe and contour in 3d","titles":[]},"96":{"title":"wireframe torus","titles":[]},"97":{"title":"Earth on sphere surrounded by planes","titles":[]},"98":{"title":"Download images from twitter","titles":[]},"99":{"title":"Set images into the right (your) order","titles":[]},"100":{"title":"Do the meshed cube","titles":[]},"101":{"title":"Get stats","titles":[]},"102":{"title":"Plot all together","titles":[]},"103":{"title":"Fake gravitation field, spheres and wireframes","titles":[]},"104":{"title":"Simple cubed mesh","titles":[]},"105":{"title":"A matrix (image) as colors","titles":[]},"106":{"title":"Wrap individual colors around mesh","titles":[]},"107":{"title":"Individual images per face","titles":[]},"108":{"title":"Isosurfaces","titles":[]},"109":{"title":"Torus","titles":["Isosurfaces"]},"110":{"title":"Entzensberger star","titles":["Isosurfaces"]},"111":{"title":"Tetrahedron","titles":["Isosurfaces"]},"112":{"title":"Decocube","titles":["Isosurfaces"]},"113":{"title":"Meshes: Cylinder, Pyramid, Cone, Cube","titles":[]},"114":{"title":"simplex","titles":[]},"115":{"title":"RGBAcube","titles":[]},"116":{"title":"Random Rectangular Graph","titles":[]},"117":{"title":"SSAO and meshscatters","titles":[]},"118":{"title":"SSAO meshscatters grid","titles":[]},"119":{"title":"meshscatters and distributions","titles":[]},"120":{"title":"Sets limits on a LScene","titles":[]},"121":{"title":"Assembled cube with smaller cubes: meshscatters","titles":[]},"122":{"title":"band in 3d","titles":[]},"123":{"title":"branching","titles":[]},"124":{"title":"complex function surface","titles":[]},"125":{"title":"constraints: split surfaces","titles":[]},"126":{"title":"gabriels horn: surface revolution","titles":[]},"127":{"title":"surface with one color","titles":[]},"128":{"title":"klein bottle","titles":[]},"129":{"title":"revolution surface","titles":[]},"130":{"title":"revolution surface s","titles":[]},"131":{"title":"surface + contour + wireframe","titles":[]},"132":{"title":"Plotting sides","titles":[]},"133":{"title":"Sides, colour gradient bottom to top","titles":[]},"134":{"title":"Different views and options","titles":[]},"135":{"title":"Tesseral Spherical Harmonics","titles":[]},"136":{"title":"Torus surfaces","titles":[]},"137":{"title":"volume","titles":[]},"138":{"title":"volume, contour and scatters","titles":[]},"139":{"title":"Falling bodies in the Solar System.","titles":[]},"140":{"title":"Rotating disc points","titles":[]},"141":{"title":"Animate line and point: Projectile motion","titles":[]},"142":{"title":"Animate markersize growth","titles":[]},"143":{"title":"The speed of light in the solar system","titles":[]},"144":{"title":"Close Price","titles":[]},"145":{"title":"Prices","titles":[]},"146":{"title":"StockChart","titles":[]},"147":{"title":"ggplot2 theme","titles":[]},"148":{"title":"dark theme","titles":[]},"149":{"title":"Penguins 3d Wireframe density","titles":[]},"150":{"title":"Penguins histogram","titles":[]},"151":{"title":"AoG and plain Makie","titles":[]},"152":{"title":"colorschemes options: Slider + volume","titles":[]},"153":{"title":"Mesh with matcap: Slider","titles":[]},"154":{"title":"Tesseral Spherical Harmonics: Slider + Menu","titles":[]},"155":{"title":"Astronauts","titles":[]},"156":{"title":"candlestick","titles":[]},"157":{"title":"Earthquakes","titles":[]},"158":{"title":"4x4 random","titles":[]},"159":{"title":"Tridiagonal","titles":[]},"160":{"title":"Beta distribution","titles":[]},"161":{"title":"3x3 random","titles":[]},"162":{"title":"Tridiagonal 30x30 [-1,1]","titles":[]},"163":{"title":"8x8 random [-1, -1/f, 0, 1/f, 1]","titles":[]},"164":{"title":"Unitary matrices","titles":[]},"165":{"title":"Complex valued random matrices","titles":[]},"166":{"title":"Mandelbrot definitions","titles":[]},"167":{"title":"Mandelbrot plot","titles":[]},"168":{"title":"Julia set definitions","titles":[]},"169":{"title":"Julia set plot","titles":[]},"170":{"title":"Julia set examples","titles":[]},"171":{"title":"Leos","titles":[]},"172":{"title":"Strange attractors","titles":[]},"173":{"title":"Trajectory","titles":[]},"174":{"title":"Aggregation","titles":[]},"175":{"title":"Equalization","titles":[]},"176":{"title":"Clifford","titles":[]},"177":{"title":"Multiple Titles","titles":[]},"178":{"title":"Blue marble","titles":[]},"179":{"title":"Coastlines","titles":[]},"180":{"title":"Torus surfacec with sun and moon textures","titles":[]},"181":{"title":"Moon texture onto a sphere","titles":[]},"182":{"title":"Geo Projections","titles":[]},"183":{"title":"More projections","titles":[]},"184":{"title":"background/sky color","titles":[]},"185":{"title":"color as an array/image, hence a normal image also works","titles":[]},"186":{"title":"custom Tesselation over an Sphere","titles":[]},"187":{"title":"the actual figure","titles":[]},"188":{"title":"save("SpherePlaneSky.png", imageOut) # save just screen scene.","titles":[]},"189":{"title":"vertical 3d band over map","titles":[]},"190":{"title":"Dark theme","titles":[]},"191":{"title":"Black theme","titles":[]},"192":{"title":"light theme","titles":[]},"193":{"title":"ggplot2 theme","titles":[]},"194":{"title":"minimal theme","titles":[]},"195":{"title":"Packages versions","titles":[]}},"dirtCount":0,"index":[["⌃",{"2":{"195":2}}],["÷",{"2":{"178":1,"180":1}}],["≡",{"2":{"155":1}}],["▶",{"2":{"143":1}}],["😄",{"2":{"171":1}}],["😢",{"2":{"143":1}}],["😃",{"2":{"143":1}}],["│",{"2":{"137":6,"138":12}}],["ϕ",{"2":{"135":16,"154":16}}],["ξ4",{"2":{"112":2}}],["ξ3",{"2":{"112":2}}],["ξ2",{"2":{"112":2}}],["ξ1",{"2":{"112":2}}],["ξ",{"2":{"108":4,"109":2,"110":2,"111":2,"112":2}}],["~",{"2":{"85":1,"137":3,"138":6}}],["└",{"2":{"85":1,"137":3,"138":6}}],["┌",{"2":{"85":1,"137":3,"138":6}}],["φ",{"2":{"77":5,"91":4,"157":9,"178":9,"181":9,"194":5}}],["■",{"2":{"65":1,"66":1,"67":1}}],["◆",{"2":{"65":1}}],["θ",{"2":{"64":3,"103":3,"135":18,"141":4,"154":18,"155":23,"157":10,"178":10,"181":10,"191":15,"192":3}}],["ν",{"2":{"53":3,"54":3,"122":13}}],["kargs",{"2":{"173":3}}],["k+1",{"2":{"171":2,"191":4}}],["key",{"2":{"177":1}}],["keys",{"2":{"25":1,"29":1,"152":1}}],["kelly",{"2":{"171":1}}],["kry",{"2":{"162":1}}],["krumbiegel",{"2":{"155":1}}],["k^2",{"2":{"152":1}}],["km",{"2":{"139":2,"143":1,"157":1}}],["kinematic",{"2":{"139":3}}],["klein",{"0":{"128":1}}],["kbw",{"2":{"64":1}}],["k",{"2":{"38":2,"64":2,"69":1,"73":3,"77":2,"115":3,"118":2,"121":2,"139":4,"152":3,"168":2,"171":9,"182":4,"191":11,"192":2,"194":2}}],["δy",{"2":{"33":9,"34":10,"35":13,"36":13}}],["δx",{"2":{"33":11,"34":12,"35":15,"36":15}}],["δ",{"2":{"31":2}}],["∈",{"2":{"31":2}}],["qs",{"2":{"84":12}}],["quot",{"0":{"188":2},"2":{"184":2}}],["quality=10",{"2":{"153":1}}],["quality",{"2":{"113":3,"153":2}}],["quad",{"2":{"18":1,"77":2,"194":2}}],["qubit",{"0":{"17":1},"2":{"17":2}}],["q",{"2":{"17":1,"84":7}}],["αcolorsleg",{"2":{"171":2}}],["αcolors",{"2":{"171":3}}],["α",{"2":{"17":1,"155":3}}],["ψ2",{"2":{"17":7}}],["ψ1",{"2":{"17":7}}],["β+1",{"2":{"78":1}}],["β",{"2":{"17":3,"78":12}}],["jacobian",{"2":{"190":1}}],["japan",{"2":{"177":3}}],["jan",{"2":{"157":2}}],["javis",{"2":{"139":1}}],["json",{"2":{"153":3,"195":1}}],["jpl",{"2":{"143":1}}],["jpg",{"2":{"97":1,"155":1,"157":1,"178":1,"180":2,"181":1,"189":1}}],["julius",{"2":{"155":1}}],["juliarandom",{"2":{"177":1}}],["juliacargs",{"2":{"176":1}}],["juliacvalues",{"2":{"170":1}}],["juliacmap",{"2":{"102":1}}],["juliaxyrange=",{"2":{"167":1}}],["julianpoints",{"2":{"167":1,"169":1}}],["juliamap",{"2":{"168":2}}],["juliam3",{"2":{"161":1}}],["juliamβ",{"2":{"160":1}}],["juliamtrin",{"2":{"162":1}}],["juliamtri",{"2":{"159":1}}],["juliam",{"2":{"158":1}}],["juliamrand",{"2":{"163":1}}],["juliamr",{"2":{"104":1}}],["juliaprojections",{"2":{"183":1}}],["juliaphist",{"2":{"150":1}}],["juliaplt",{"2":{"144":1}}],["juliaplots",{"2":{"73":1,"117":1,"140":1}}],["juliagdf",{"2":{"147":1}}],["juliaanimators",{"2":{"139":1}}],["juliaax1",{"2":{"33":1,"34":1,"35":1,"36":1}}],["juliawith",{"2":{"112":1,"132":1,"133":1,"134":1,"147":1,"148":1,"149":1,"151":1}}],["juliadf",{"2":{"146":1}}],["juliadeco",{"2":{"112":1}}],["juliadimx",{"2":{"33":1,"34":1,"35":1,"36":1}}],["juliaestar",{"2":{"110":1}}],["juliaedges",{"2":{"33":1,"34":1,"35":1,"36":1}}],["juliatetra",{"2":{"111":1}}],["juliatorus",{"2":{"109":1}}],["juliatimgs",{"2":{"107":1}}],["juliatheme",{"2":{"33":1,"34":1,"35":1,"36":1}}],["juliaimg",{"2":{"105":1,"106":2}}],["juliaimgs",{"2":{"99":1}}],["julialabels",{"2":{"145":1}}],["julialang",{"2":{"8":1,"42":1,"92":1}}],["julialucy",{"2":{"98":1}}],["juliafunction",{"2":{"100":1,"101":1,"106":1,"164":1,"165":1,"166":1,"168":1,"173":1,"174":1,"175":1,"176":1}}],["juliafig",{"2":{"33":1,"34":1,"35":1,"36":1,"56":1,"88":1,"93":1,"104":1}}],["juliafsize",{"2":{"33":1,"34":1,"35":1,"36":1}}],["juliavalmax",{"2":{"33":1,"34":1,"35":1,"36":1}}],["julia",{"0":{"168":1,"169":1,"170":1},"2":{"8":2,"33":1,"34":1,"35":1,"36":1,"62":1,"85":1,"116":1,"117":1,"137":3,"138":6,"168":2,"169":1,"170":1,"190":1}}],["juliausing",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"97":1,"103":1,"108":1,"113":1,"114":1,"115":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"171":1,"172":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"189":1,"191":1,"192":1,"193":1,"194":1,"195":1}}],["justification",{"2":{"177":1}}],["justification=",{"2":{"139":1,"157":2}}],["just",{"0":{"188":1},"2":{"151":1,"172":1,"182":1,"190":1}}],["jupiter",{"2":{"139":2,"143":1}}],["j^2",{"2":{"103":1,"152":1}}],["jl",{"2":{"73":1,"85":1,"137":3,"138":6,"139":2}}],["joinpath",{"2":{"171":1}}],["join",{"2":{"38":1,"171":2,"176":1}}],["j+1",{"2":{"25":1,"29":1,"75":1}}],["j",{"2":{"13":2,"14":2,"24":2,"25":2,"29":2,"33":4,"34":4,"35":4,"36":4,"38":4,"43":2,"53":2,"62":6,"73":2,"75":2,"87":2,"99":2,"103":8,"107":2,"113":2,"115":3,"116":7,"118":2,"121":2,"122":2,"125":13,"134":2,"135":2,"139":2,"147":2,"148":2,"152":3,"153":2,"166":2,"167":2,"168":2,"170":2,"176":2,"182":2,"184":1,"190":8}}],["9a3f8284",{"2":{"195":1}}],["9e3dc215",{"2":{"195":1}}],["9ea4a4",{"2":{"102":1}}],["93",{"2":{"176":1}}],["97",{"2":{"155":1}}],["945b72a4",{"2":{"195":1}}],["94",{"2":{"155":1}}],["916415d5",{"2":{"195":1}}],["91",{"2":{"97":1}}],["918",{"2":{"97":1,"187":1}}],["96",{"2":{"34":1,"36":1,"157":1}}],["929",{"2":{"97":1}}],["92",{"2":{"34":1,"36":1}}],["98b081ad",{"2":{"195":1}}],["98f0",{"2":{"33":1,"34":1}}],["98",{"2":{"33":1,"34":1,"64":1,"113":1,"126":1}}],["9valmax",{"2":{"33":1,"34":1,"35":1,"36":1}}],["9",{"2":{"32":1,"50":1,"59":1,"60":2,"61":1,"71":2,"90":1,"92":1,"93":1,"102":2,"114":1,"118":3,"121":1,"125":1,"131":1,"139":4,"141":1,"143":2,"148":2,"152":1,"157":2,"171":4,"176":5,"183":1,"195":2}}],["90625",{"2":{"157":1}}],["90",{"2":{"32":1,"34":1,"36":1,"73":1,"116":1,"128":1,"155":3,"189":4}}],["900",{"2":{"13":1,"80":1,"109":2,"110":2,"111":2,"112":2,"139":1,"143":1,"153":1,"157":2,"167":1,"176":1,"181":2,"182":1,"187":2}}],["996380695443582",{"2":{"167":1}}],["9963806954442953",{"2":{"167":1}}],["99",{"2":{"32":1,"155":4,"176":1}}],["9548896813770819",{"2":{"167":1}}],["9548899408372031",{"2":{"167":1}}],["95cc5eff",{"2":{"191":1}}],["95cc5e",{"2":{"18":1,"78":1}}],["95",{"2":{"11":1,"34":1,"36":1,"78":1,"97":1,"130":3,"147":2,"154":1,"162":1,"167":1,"189":2}}],["zip",{"2":{"174":1}}],["zin",{"2":{"125":5}}],["zs",{"2":{"152":2}}],["zseps",{"2":{"116":2}}],["zm",{"2":{"131":1}}],["zmax",{"2":{"131":3,"190":3}}],["zmin",{"2":{"131":4,"190":2}}],["zout2",{"2":{"125":5}}],["zout1",{"2":{"125":5}}],["zoom",{"2":{"103":1,"114":1,"117":1,"118":3,"126":1,"153":3,"157":1,"178":1,"187":1,"189":1}}],["zlabel",{"2":{"121":1}}],["z3",{"2":{"103":1}}],["z₀",{"2":{"91":2}}],["z^4",{"2":{"111":1}}],["z^2",{"2":{"80":1,"89":1,"110":3,"111":3,"112":3,"118":1,"121":1,"124":2,"137":1,"166":1,"168":1}}],["z^3",{"2":{"13":1}}],["z2",{"2":{"70":1,"96":1,"103":10,"136":2,"180":2}}],["z1",{"2":{"70":1,"96":2,"126":4,"129":3,"130":4,"136":3,"180":2}}],["zeros",{"2":{"48":1,"49":1,"62":1,"116":1,"155":1,"162":1,"167":2,"169":1,"170":1,"173":2}}],["zgridcolor",{"2":{"125":1,"131":1}}],["zg",{"2":{"16":2}}],["zf",{"2":{"16":2}}],["z",{"2":{"13":2,"14":5,"17":2,"30":3,"32":6,"37":3,"70":3,"80":3,"81":2,"89":5,"90":4,"91":7,"92":5,"93":3,"95":12,"106":2,"108":2,"109":2,"110":1,"111":2,"112":3,"116":12,"118":4,"119":5,"121":5,"123":3,"124":1,"125":7,"127":3,"128":2,"131":6,"132":1,"133":1,"134":4,"135":3,"136":3,"137":5,"138":7,"152":2,"154":3,"157":4,"166":7,"168":7,"178":2,"181":2,"190":6}}],["π",{"2":{"11":1,"13":10,"17":4,"38":1,"56":1,"69":1,"80":6,"124":2,"125":1,"128":1,"131":1,"135":1,"141":2,"152":1,"154":3,"155":3,"156":1,"157":3,"178":1,"190":1}}],["78",{"2":{"171":3}}],["78f518",{"2":{"156":1}}],["748aa6ff",{"2":{"191":1}}],["748aa6",{"2":{"181":1}}],["74872",{"2":{"167":1}}],["74877",{"2":{"167":1}}],["74",{"2":{"176":1}}],["74219",{"2":{"157":1}}],["73963",{"2":{"180":1}}],["73000",{"2":{"180":1}}],["73",{"2":{"155":1}}],["7269",{"2":{"170":1}}],["72",{"2":{"143":1}}],["77",{"2":{"132":1,"133":1,"134":1,"176":1}}],["773",{"2":{"97":1}}],["708ec375",{"2":{"195":1}}],["70176",{"2":{"170":1}}],["700",{"2":{"102":1,"151":2,"156":1}}],["70",{"2":{"73":1,"103":1}}],["75",{"2":{"62":1,"70":1,"75":1,"113":1,"116":1,"121":1,"131":2,"142":1,"153":1,"176":1}}],["750",{"2":{"31":1,"33":1,"34":1,"35":1,"36":1}}],["7fsize",{"2":{"33":1,"34":1,"35":1,"36":2}}],["7",{"2":{"11":2,"23":1,"30":1,"32":1,"33":1,"54":1,"73":1,"74":1,"78":2,"90":1,"115":4,"117":2,"119":2,"122":2,"138":2,"139":5,"143":1,"152":4,"164":4,"167":2,"169":4,"170":4,"176":9,"195":6}}],[">=",{"2":{"48":1,"49":1,"125":2}}],[">",{"2":{"10":1,"18":2,"19":1,"38":1,"40":1,"48":1,"49":1,"52":3,"57":2,"62":1,"72":1,"84":2,"86":1,"87":1,"100":1,"106":1,"114":2,"115":1,"116":1,"124":1,"140":2,"142":1,"151":1,"155":5,"156":1,"166":1,"168":1,"190":1}}],["8b842266",{"2":{"195":1}}],["82cc6244",{"2":{"195":1}}],["8295a6",{"2":{"102":1}}],["81",{"2":{"176":1}}],["8108",{"2":{"155":1}}],["835",{"2":{"168":1}}],["8x8",{"0":{"163":1}}],["8xerr",{"2":{"9":1}}],["80",{"2":{"128":2,"154":1}}],["8000",{"2":{"155":1}}],["800",{"2":{"19":1,"29":1,"39":1,"43":1,"46":1,"47":1,"62":1,"75":1,"89":2,"90":1,"91":1,"95":1,"113":1,"115":1,"116":1,"117":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"140":2,"142":1,"146":1,"152":1,"154":1,"164":2,"165":2,"171":1,"178":1,"180":1,"189":2,"190":1}}],["87",{"2":{"103":1}}],["8k",{"2":{"97":1}}],["882297662380940440063",{"2":{"167":1}}],["882297664710767940063",{"2":{"167":1}}],["88",{"2":{"34":1,"36":2}}],["84",{"2":{"34":1,"36":1}}],["8",{"2":{"8":1,"11":2,"12":2,"32":2,"34":1,"36":2,"54":1,"79":6,"87":1,"92":1,"96":1,"102":1,"103":1,"108":1,"111":1,"115":1,"126":1,"127":1,"128":1,"139":4,"141":1,"142":2,"143":1,"154":2,"165":4,"170":2,"171":4,"176":2,"177":3,"185":1,"193":6,"195":5}}],["85π",{"2":{"181":1}}],["850",{"2":{"36":1}}],["85",{"2":{"6":1,"8":1,"13":1,"15":1,"25":1,"44":1,"56":1,"58":1,"63":1,"66":1,"70":1,"87":2,"93":1,"113":1,"119":3,"135":1,"139":1,"143":2,"155":1,"171":2}}],["n2015",{"2":{"177":1}}],["n256",{"2":{"40":1,"64":1,"79":2,"90":1,"103":1,"113":1,"119":1,"132":1,"133":1,"134":1,"154":5,"162":1,"167":1,"193":2}}],["ncrisis",{"2":{"177":2}}],["nfinancial",{"2":{"177":1}}],["nbins",{"2":{"175":3}}],["nbinsy",{"2":{"174":2,"176":1}}],["nbinsx",{"2":{"174":2,"176":1}}],["nbanks",{"2":{"48":1,"53":1,"54":1}}],["n+1",{"2":{"173":2}}],["ntantrum",{"2":{"177":1}}],["ntoteva",{"2":{"155":2}}],["ntuple",{"2":{"38":1}}],["npoints",{"2":{"166":1,"167":7,"168":1,"169":3,"170":4}}],["npts",{"2":{"142":4}}],["npixel",{"2":{"33":2,"34":2,"35":2,"36":2}}],["n1",{"2":{"139":1}}],["nlm",{"2":{"135":2,"154":2}}],["nina",{"2":{"171":1}}],["nidorx",{"2":{"153":1}}],["nice",{"2":{"151":1}}],["nither",{"2":{"114":1}}],["nimages",{"2":{"102":1}}],["natural",{"2":{"179":1,"182":1}}],["nasa",{"2":{"143":1,"155":1,"157":1,"180":3,"181":1}}],["navajowhite",{"2":{"139":1,"143":1}}],["navy",{"2":{"12":3,"60":1,"88":1}}],["nan",{"2":{"95":4,"125":6}}],["name=large",{"2":{"98":6}}],["namesfiles",{"2":{"171":2}}],["names",{"2":{"91":2,"96":2,"136":2,"143":2,"148":1,"171":3}}],["name",{"2":{"85":1,"139":5,"155":3,"171":3}}],["nq",{"2":{"84":5}}],["ngonshape",{"0":{"64":1},"2":{"64":3,"192":3}}],["numerical",{"2":{"172":1}}],["number",{"2":{"106":1,"155":2}}],["nu",{"2":{"53":1,"54":1}}],["nominal",{"2":{"177":1}}],["nof",{"2":{"177":1}}],["northstar",{"2":{"187":1}}],["noriginal",{"2":{"157":1}}],["normiterations",{"2":{"166":1,"168":1}}],["norm",{"2":{"113":1}}],["normf",{"2":{"43":3}}],["normalize",{"2":{"175":1}}],["normalizations",{"0":{"43":1}}],["normalization",{"0":{"40":1},"2":{"40":4,"41":1,"43":1}}],["normals",{"2":{"100":2,"106":2}}],["normal",{"0":{"11":1,"87":1,"185":1},"2":{"8":1,"11":3,"12":2,"18":1,"40":4,"74":1,"87":3,"88":1,"97":1,"100":1,"106":1,"108":1,"186":1}}],["noshading",{"2":{"113":1,"121":1,"135":2,"136":2,"154":2,"178":1}}],["now",{"2":{"89":1,"94":1,"96":1,"106":1}}],["non",{"2":{"83":1}}],["nonstablepoincare",{"2":{"83":2}}],["none",{"2":{"43":1}}],["nodes",{"2":{"62":5,"116":6}}],["nodes=500",{"2":{"62":1}}],["nothing",{"2":{"154":1,"187":1}}],["notation",{"2":{"137":3,"138":6}}],["notes",{"2":{"177":1}}],["note",{"2":{"105":1,"115":1}}],["not",{"2":{"31":1,"85":1,"105":1,"114":1,"151":1}}],["next",{"2":{"178":1,"189":1}}],["neptune",{"2":{"139":2,"143":1}}],["net",{"2":{"101":1,"102":2}}],["nested",{"2":{"91":1,"136":1}}],["needed",{"2":{"106":1}}],["need",{"2":{"52":1,"54":1,"114":5,"137":3,"138":6,"172":1}}],["negative",{"2":{"31":1}}],["new",{"2":{"8":1,"106":1,"139":1,"141":3,"142":1,"143":3,"157":1,"195":1}}],["n=10",{"2":{"164":1,"165":1}}],["n=8",{"2":{"163":1}}],["n=250",{"2":{"159":1}}],["n=500",{"2":{"158":1,"160":1}}],["n=30",{"2":{"95":1}}],["n=",{"2":{"31":1}}],["n",{"2":{"11":7,"12":3,"20":7,"31":6,"33":3,"34":3,"35":3,"36":3,"38":3,"39":3,"41":2,"42":4,"43":2,"50":4,"63":7,"64":10,"69":2,"70":4,"73":2,"74":5,"75":4,"77":2,"87":3,"88":3,"90":3,"95":3,"103":2,"119":2,"138":3,"139":2,"151":2,"155":1,"157":4,"160":3,"161":1,"162":5,"163":3,"164":10,"165":11,"166":2,"171":3,"173":2,"176":1,"177":1,"178":3,"180":2,"181":3,"192":11,"194":2}}],["nsteps",{"2":{"0":1,"49":1}}],["|>",{"2":{"139":3,"144":1,"145":1,"150":1,"155":1}}],["||",{"2":{"31":1}}],["|",{"2":{"8":2}}],["`~",{"2":{"195":1}}],["`start",{"2":{"137":3,"138":6}}],["`imagelike`",{"2":{"137":9,"138":18}}],["`convert",{"2":{"137":3,"138":6}}],["`abstractvector`",{"2":{"137":6,"138":12}}],["`",{"2":{"8":12,"137":6,"138":12}}],["out",{"2":{"175":2}}],["output",{"2":{"172":1}}],["outer=2",{"2":{"189":1}}],["outer",{"2":{"153":3}}],["outside",{"0":{"67":1},"2":{"114":1,"177":1}}],["ohlc",{"2":{"145":1,"146":1,"156":7}}],["observables",{"2":{"141":1}}],["observable",{"2":{"139":1,"140":1,"141":2,"142":2,"143":4,"152":1,"153":1,"154":2}}],["objective",{"2":{"125":1}}],["obj",{"2":{"45":2,"104":2,"105":1,"106":1,"115":1,"153":3}}],["olive",{"2":{"139":1,"143":1}}],["oldaxis",{"2":{"91":1,"96":2,"136":1}}],["o=vec3f",{"2":{"100":1,"106":1}}],["o=point3f",{"2":{"97":2,"186":1}}],["o",{"2":{"97":1,"100":1,"106":1,"171":4,"174":2,"176":4,"183":1,"186":1}}],["ops",{"2":{"171":4}}],["options",{"0":{"134":1,"152":1},"2":{"96":1,"154":1}}],["open",{"2":{"8":1,"89":1,"90":1,"91":1,"94":1,"95":1,"96":1,"97":1,"103":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":3,"152":1,"153":1,"154":1,"156":2}}],["odesol",{"2":{"82":2}}],["ode",{"0":{"82":1}}],["only",{"2":{"188":1}}],["onlinestats",{"2":{"172":1,"195":1}}],["onto",{"0":{"181":1}}],["one",{"0":{"127":1},"2":{"106":1,"137":3,"138":6,"171":1}}],["once",{"0":{"77":1}}],["on",{"0":{"38":1,"42":1,"44":1,"56":1,"97":1,"120":1},"2":{"96":1,"137":3,"138":6,"154":1,"157":1,"179":1}}],["oy",{"2":{"33":2,"34":2,"35":3,"36":2}}],["ox",{"2":{"33":2,"34":2,"35":3,"36":2}}],["offhr",{"2":{"155":4}}],["offset=i",{"2":{"44":1}}],["offset",{"2":{"33":1,"34":1,"35":1,"36":1,"40":3,"177":1}}],["of",{"0":{"143":1},"2":{"31":1,"33":8,"34":8,"35":8,"36":8,"106":2,"135":1,"137":3,"138":6,"139":1,"143":1,"146":1,"154":1,"155":8,"172":1,"177":1}}],["overnight",{"2":{"177":1}}],["overdraw",{"2":{"123":2,"127":2,"131":1}}],["overlayed",{"0":{"16":1}}],["over",{"0":{"14":1,"81":1,"186":1,"189":1},"2":{"96":1,"114":1}}],["ozone",{"2":{"10":1,"86":1}}],["orderby",{"2":{"155":1}}],["order",{"0":{"99":1},"2":{"155":1,"172":1}}],["original",{"2":{"62":1,"157":1}}],["origin",{"2":{"33":2,"34":2,"35":2,"36":2,"155":1,"171":1}}],["orientation",{"2":{"12":1,"19":1,"177":1}}],["orientation=",{"2":{"11":1}}],["org",{"2":{"8":1,"42":1,"62":1,"92":1,"116":1,"117":1,"140":1,"157":1,"178":1,"189":1}}],["orange",{"2":{"4":1,"8":3,"11":1,"39":1,"41":1,"84":2,"114":1,"139":2}}],["orangered",{"2":{"4":1,"16":1,"20":2,"21":1,"42":1,"61":1,"88":1,"92":2,"109":1,"112":1,"120":1,"123":2,"125":2,"135":1,"139":2,"141":1,"143":1,"157":1,"164":1,"165":1,"189":1}}],["or",{"0":{"3":1},"2":{"137":3,"138":6}}],["692",{"2":{"189":1}}],["696340",{"2":{"143":1}}],["682c06a0",{"2":{"195":1}}],["68",{"2":{"157":1}}],["6792",{"2":{"139":1,"143":1}}],["6218d12a",{"2":{"195":1}}],["62871027270105e",{"2":{"167":1}}],["628704923646517e",{"2":{"167":1}}],["62",{"2":{"138":1}}],["62523",{"2":{"42":1}}],["60712",{"2":{"157":1}}],["60",{"2":{"128":2,"141":2,"143":2,"154":2,"155":4,"171":1,"183":2}}],["600",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"32":1,"37":1,"38":1,"40":1,"41":1,"42":1,"45":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"77":1,"78":1,"79":1,"81":1,"82":1,"83":1,"84":1,"86":1,"87":1,"88":1,"92":1,"93":1,"96":2,"99":1,"104":2,"105":1,"106":1,"107":1,"112":2,"114":2,"118":1,"141":1,"144":1,"145":1,"149":1,"150":1,"151":1,"153":1,"158":2,"159":1,"160":1,"161":1,"162":2,"163":2,"167":3,"169":3,"170":1,"178":1,"179":1,"191":1,"192":1,"193":1,"194":1}}],["6exp",{"2":{"119":1}}],["6ee2ffff",{"2":{"171":1,"191":1}}],["6ee2ff",{"2":{"18":1,"78":1}}],["648844800000000001192",{"2":{"167":1}}],["64",{"2":{"138":1}}],["643",{"2":{"97":1,"187":1}}],["64435",{"2":{"8":1}}],["650",{"2":{"177":1}}],["650790400000000001192",{"2":{"167":1}}],["6534376520406489856480",{"2":{"167":1}}],["6534376561891502063520",{"2":{"167":1}}],["65866b",{"2":{"156":2}}],["65",{"2":{"79":1,"91":1,"112":2,"117":1,"123":3,"126":3,"129":3,"155":1,"170":1,"171":1,"176":1,"178":1,"193":1}}],["6π",{"2":{"77":1,"194":1}}],["6fsize",{"2":{"33":4,"34":4,"35":4,"36":4}}],["618",{"2":{"170":1}}],["61afef",{"2":{"155":1}}],["61",{"2":{"17":1}}],["6",{"2":{"15":1,"33":3,"34":2,"35":2,"36":2,"40":2,"44":1,"52":1,"53":1,"71":1,"73":1,"80":2,"84":2,"99":1,"106":2,"107":1,"113":2,"117":1,"118":1,"119":6,"126":1,"127":3,"138":2,"139":2,"140":1,"153":1,"154":1,"155":3,"160":1,"176":4,"177":2,"185":1,"189":1,"191":1,"195":5}}],["pkg",{"2":{"195":3}}],["p=50",{"2":{"183":1}}],["p=40",{"2":{"183":1}}],["p3",{"2":{"171":2}}],["p3d",{"2":{"149":1,"151":1}}],["p2",{"2":{"171":5}}],["p0",{"2":{"171":2}}],["psdo",{"2":{"155":4}}],["ps",{"2":{"155":3}}],["psize",{"2":{"48":4,"49":5}}],["phases",{"2":{"181":1}}],["phist",{"2":{"150":3,"151":1}}],["photo",{"2":{"139":1}}],["physical",{"2":{"33":5,"34":3,"35":6,"36":3}}],["putting",{"2":{"106":1}}],["push",{"2":{"38":1,"62":4,"73":3,"84":1,"101":2,"116":4,"141":1,"143":1,"155":2,"156":2,"189":4}}],["pnames",{"2":{"151":3}}],["png",{"0":{"188":1},"2":{"103":1,"112":1,"153":2,"155":1,"157":1,"171":1}}],["pnts",{"2":{"75":2}}],["pgsx0aidzws",{"2":{"98":1}}],["pbs",{"2":{"98":6}}],["printing",{"2":{"187":1}}],["print",{"2":{"181":1}}],["prices",{"0":{"145":1}}],["price",{"0":{"144":1}}],["pre",{"2":{"78":1,"106":1}}],["proj=mill",{"2":{"183":1}}],["projections",{"0":{"182":1,"183":1}}],["projectile",{"0":{"141":1}}],["project",{"2":{"171":1,"195":1}}],["profile",{"2":{"142":1}}],["protrusions=0",{"2":{"132":1,"133":1,"134":1}}],["protanopic",{"2":{"64":1,"154":1}}],["process",{"2":{"106":1}}],["probably",{"2":{"52":1,"54":1}}],["probability",{"2":{"43":1}}],["product",{"2":{"38":1}}],["penguins",{"0":{"149":1,"150":1},"2":{"150":1,"151":1}}],["pentagon",{"2":{"75":1,"79":1,"193":1}}],["peaks",{"2":{"90":2,"95":2}}],["perpendicular",{"2":{"114":1}}],["per",{"0":{"107":1}}],["percent",{"2":{"102":2,"177":1}}],["perspectiveness=0",{"2":{"122":1}}],["perspectiveness",{"2":{"89":1,"90":1,"92":1,"93":1,"113":1,"116":1,"119":1,"121":1,"125":1,"131":1,"132":1,"133":1,"134":1,"137":1,"138":4,"149":1,"151":1,"152":1,"154":2,"180":1,"181":1,"190":1}}],["periods",{"2":{"33":3,"34":3,"35":3,"36":3}}],["pts2",{"2":{"70":2}}],["pts1",{"2":{"70":2}}],["pdfs",{"2":{"143":1}}],["pdf",{"0":{"40":1,"41":1},"2":{"40":4,"41":2,"43":1,"143":1}}],["policy",{"2":{"177":1}}],["polar",{"2":{"135":1,"154":1}}],["polyelement",{"2":{"171":1}}],["poly3",{"2":{"171":2}}],["polya",{"0":{"80":1},"2":{"80":3}}],["polyscircular",{"2":{"64":2,"192":2}}],["polyscentric",{"2":{"64":2,"192":2}}],["polygon",{"2":{"64":1,"192":1}}],["poly",{"0":{"64":1},"2":{"64":2,"114":1,"192":2}}],["pot",{"2":{"103":2}}],["poincare",{"0":{"83":1}}],["pointlight",{"2":{"185":1}}],["points3d",{"2":{"138":3}}],["points",{"0":{"140":1},"2":{"96":1,"155":1,"171":2}}],["point3f",{"2":{"92":5,"93":3,"103":4,"108":1,"113":8,"114":6,"115":1,"116":1,"117":2,"119":1,"120":3,"122":6,"138":1,"153":6,"157":1,"189":6}}],["point2f",{"2":{"62":1,"63":1,"64":1,"73":1,"80":1,"81":1,"82":1,"83":3,"102":2,"139":12,"141":1,"143":3,"155":11,"156":3,"164":1,"165":1,"171":13,"190":1,"192":1}}],["point+1",{"2":{"62":2,"116":3}}],["point",{"0":{"141":1},"2":{"34":1,"36":1,"56":1,"62":6,"84":3,"113":2,"116":7,"141":12,"143":7,"155":1}}],["port",{"2":{"62":1}}],["posfig",{"2":{"171":5}}],["pos2",{"2":{"140":2}}],["pos1",{"2":{"140":2}}],["pos",{"2":{"139":2}}],["poster",{"2":{"98":5,"99":1}}],["post",{"2":{"78":1,"177":1}}],["possible",{"2":{"59":1,"61":1}}],["positions",{"0":{"37":1},"2":{"33":2,"34":2,"35":2,"36":2,"115":4,"117":3,"118":4,"121":2}}],["position=",{"2":{"18":1}}],["position",{"2":{"1":1,"4":1,"11":1,"12":2,"33":2,"34":2,"35":2,"36":2,"38":1,"39":3,"41":1,"43":1,"52":1,"54":1,"55":1,"58":1,"65":1,"66":1,"77":1,"78":3,"88":1,"102":1,"106":1,"113":4,"122":1,"139":13,"143":2,"148":2,"155":9,"171":3,"177":1,"194":1}}],["pyr",{"2":{"113":4,"153":2}}],["pyramid",{"0":{"113":1},"2":{"113":2,"153":2}}],["py",{"2":{"33":6,"34":6,"35":6,"36":3}}],["px",{"2":{"33":6,"34":6,"35":6,"36":3}}],["p",{"2":{"33":2,"34":2,"35":2,"36":2,"48":8,"49":7,"73":2,"78":5,"139":2,"177":1,"183":1,"189":6}}],["p1",{"2":{"14":2,"171":5}}],["pictures",{"2":{"171":4}}],["pixel",{"2":{"33":11,"34":11,"35":11,"36":11}}],["pi",{"2":{"12":1,"36":1,"80":4,"96":4,"130":1,"132":1,"133":1,"134":1,"136":4,"180":4,"181":2,"189":1}}],["palmerpenguins",{"2":{"195":1}}],["palette=palstyle",{"2":{"149":1,"150":1,"151":1}}],["palettes",{"2":{"148":1}}],["palette",{"2":{"11":1,"18":1,"78":1,"87":1,"146":1,"155":1,"177":1}}],["parsefile",{"2":{"153":1}}],["parse",{"2":{"101":3}}],["parsehtml",{"2":{"101":1}}],["parameters",{"2":{"33":1,"34":1,"35":1,"36":1,"167":1}}],["packages",{"0":{"195":1},"2":{"85":1,"137":3,"138":6,"195":1}}],["paul",{"0":{"83":1}}],["padding=0",{"2":{"99":1,"107":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":1,"169":1}}],["padding=",{"2":{"85":1}}],["padding",{"2":{"36":1}}],["paths",{"2":{"177":1}}],["patchcolor",{"2":{"11":1,"18":1,"87":1}}],["patches",{"2":{"8":1}}],["pattern",{"2":{"8":2,"172":1}}],["patterncolors",{"2":{"8":2}}],["patterns",{"2":{"8":2}}],["plugin=rpr",{"2":{"187":1}}],["pluto",{"2":{"139":2}}],["plm",{"2":{"135":3,"154":3}}],["plain",{"0":{"151":1},"2":{"151":2}}],["planets",{"2":{"139":1}}],["planet",{"2":{"139":4}}],["plane",{"2":{"114":1,"186":1,"187":1}}],["planes",{"0":{"97":1}}],["plasma",{"2":{"14":2,"17":1,"24":2,"38":1,"40":1,"46":1,"47":1,"75":1,"81":2,"82":1,"83":1,"94":1,"122":1,"136":1,"167":1}}],["pltd",{"2":{"146":2}}],["plt",{"2":{"144":1,"145":3,"146":4,"147":2,"148":1}}],["pltpbj",{"2":{"71":2}}],["pltobj2",{"2":{"80":2,"154":2}}],["pltobj1",{"2":{"13":2,"154":3}}],["pltobj",{"2":{"8":1,"62":2,"116":2,"121":2,"124":2,"125":2,"126":2,"129":2,"130":2,"135":2,"155":2,"157":2}}],["plotproj",{"2":{"182":2}}],["plotastro",{"2":{"155":2}}],["plotmat",{"2":{"153":2}}],["plotvolcolormaps",{"2":{"152":2}}],["plotting",{"0":{"132":1}}],["plotcontributors",{"2":{"73":2}}],["plotgraph3d",{"2":{"116":2}}],["plotgraph",{"2":{"62":2}}],["plot",{"0":{"18":1,"50":1,"70":1,"71":1,"72":1,"78":1,"79":1,"86":1,"102":1,"167":1,"169":1},"2":{"31":1,"33":1,"34":1,"35":1,"36":1,"39":1,"96":1,"138":1,"141":1,"142":1,"146":1,"148":1,"155":1,"179":1,"182":2,"190":2}}],["plots",{"0":{"13":1,"16":1},"2":{"8":1,"151":1}}],["hlines",{"2":{"177":1}}],["hrs",{"2":{"155":10}}],["homer1",{"2":{"192":1}}],["hot",{"2":{"163":1}}],["hours",{"2":{"143":1,"155":2}}],["how",{"2":{"139":1}}],["horas",{"2":{"155":2}}],["horn",{"0":{"126":1}}],["horizontal=false",{"2":{"153":1}}],["horizontal",{"0":{"12":1},"2":{"11":2,"12":2,"19":1,"36":2,"122":4,"152":1,"177":1}}],["hypot",{"2":{"109":1}}],["html",{"2":{"140":1}}],["htxt",{"2":{"101":2}}],["http",{"2":{"101":1,"140":1,"155":2,"195":1}}],["https",{"2":{"8":1,"42":1,"62":1,"92":1,"97":1,"98":6,"101":1,"102":3,"116":1,"117":1,"139":2,"143":1,"153":2,"155":2,"157":4,"165":1,"171":2,"178":1,"180":2,"181":1,"189":1}}],["h",{"2":{"64":2,"77":3,"101":2,"108":2,"158":3,"159":3,"160":3,"161":3,"162":3,"163":3,"175":5,"183":1,"192":2,"194":3}}],["have",{"2":{"195":1}}],["haver",{"2":{"177":1}}],["has",{"2":{"172":1}}],["harmonics",{"0":{"135":1,"154":1},"2":{"135":1,"154":1}}],["halign=0",{"2":{"143":1,"157":1}}],["halign=1",{"2":{"139":1,"143":2,"157":1}}],["halign=",{"2":{"102":2}}],["halign",{"2":{"51":1,"155":1,"171":1,"177":5}}],["hatch",{"2":{"8":2}}],["hm3",{"2":{"35":1}}],["hm2",{"2":{"33":1,"34":1,"35":1}}],["hm1",{"2":{"33":2,"34":2,"35":2,"36":2}}],["hm",{"2":{"25":1}}],["hmap",{"2":{"23":2,"26":2,"27":2,"28":2,"29":2,"30":2,"32":2,"37":2,"38":2,"51":2}}],["hemi",{"2":{"183":1}}],["heatherton",{"2":{"171":1}}],["heatmaps",{"0":{"29":1}}],["heatmap",{"0":{"14":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"51":1,"81":1},"2":{"13":1,"14":2,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":2,"32":1,"33":4,"34":4,"35":5,"36":3,"37":1,"38":1,"51":2,"80":1,"81":1,"99":1,"107":1,"158":2,"159":2,"160":2,"161":2,"162":2,"163":2,"167":2,"169":1,"170":1,"174":1,"176":1}}],["here",{"2":{"153":1,"195":1}}],["heros",{"2":{"85":1,"177":1}}],["he",{"2":{"107":5}}],["hence",{"0":{"185":1},"2":{"106":1}}],["helper",{"2":{"171":1}}],["helm",{"2":{"101":2}}],["helvetica",{"2":{"91":1,"136":1}}],["height=relative",{"2":{"126":1}}],["height",{"2":{"24":1,"25":1,"26":1,"28":1,"29":1,"33":2,"34":2,"35":2,"36":2,"47":3,"51":1,"75":1,"91":1,"116":1,"121":1,"124":1,"125":1,"129":1,"130":1,"131":1,"135":1,"136":2,"139":7,"157":1}}],["highv",{"2":{"156":2}}],["high",{"2":{"145":1,"156":1}}],["highclip",{"2":{"124":1}}],["histogram",{"0":{"40":1,"41":1,"43":1,"150":1},"2":{"44":2,"150":1,"175":1}}],["histograms",{"0":{"39":1,"42":1,"44":1}}],["hist",{"2":{"39":3,"40":4,"41":2,"42":2,"43":1,"44":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":2,"175":2,"176":1}}],["hiroshige",{"2":{"19":1,"71":1,"116":1,"138":1,"154":2,"167":1,"171":1}}],["hidespines",{"2":{"44":1,"51":1,"57":1,"64":1,"73":1,"85":1,"99":1,"102":1,"107":1,"119":1,"139":1,"143":1,"155":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"167":2,"169":1,"170":1,"171":2,"176":1,"177":1,"181":1,"192":1}}],["hidexdecorations",{"2":{"42":1,"57":1}}],["hide",{"2":{"28":1}}],["hideydecorations",{"2":{"14":1,"24":1,"42":1,"83":1,"87":1,"102":1}}],["hidedecorations",{"2":{"1":1,"18":1,"20":1,"40":1,"44":1,"64":1,"73":1,"77":1,"79":1,"84":2,"85":1,"90":1,"95":1,"99":1,"107":1,"119":1,"122":1,"135":1,"139":1,"143":1,"148":1,"155":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"167":2,"169":1,"170":1,"171":1,"176":1,"180":1,"181":1,"182":1,"192":1,"193":1,"194":1}}],["ws2",{"2":{"183":1}}],["ws1",{"2":{"183":1}}],["wfacet",{"2":{"147":1,"148":1}}],["wrong",{"2":{"146":1}}],["wrap",{"0":{"106":1},"2":{"105":1}}],["wrwc",{"2":{"103":1}}],["www",{"2":{"97":1,"102":1,"143":1,"180":1}}],["wood",{"2":{"107":1}}],["woolen",{"2":{"107":1}}],["world",{"2":{"157":1}}],["worb",{"2":{"119":1,"132":1,"133":1,"134":1}}],["works",{"0":{"185":1},"2":{"188":1}}],["work",{"2":{"91":1,"106":1,"136":1,"138":1,"142":1,"190":1,"195":1}}],["word",{"2":{"38":2}}],["wong",{"2":{"43":1}}],["wcmr",{"2":{"40":1,"79":1,"193":1}}],["w",{"2":{"33":2,"34":2,"35":2,"36":2}}],["wall",{"2":{"107":1}}],["walra356",{"2":{"31":1,"33":1,"34":1,"35":1,"36":1}}],["way",{"2":{"105":1}}],["warning",{"2":{"85":1,"137":3,"138":6,"188":1}}],["was",{"2":{"33":2,"34":2,"35":2,"36":2}}],["wyor",{"2":{"79":1,"193":1}}],["wy",{"2":{"33":2,"34":2,"35":2,"36":2}}],["wx",{"2":{"33":2,"34":2,"35":2,"36":2}}],["where",{"2":{"31":3,"106":2}}],["which",{"2":{"172":1}}],["whichs",{"2":{"115":1}}],["whiskercolor",{"2":{"10":1,"11":2,"12":2}}],["whiskerwidth",{"2":{"6":1,"7":1,"9":1,"10":1,"11":3,"12":2,"20":2,"21":2,"22":1}}],["white",{"2":{"8":1,"13":1,"14":1,"34":2,"36":2,"38":1,"55":1,"66":1,"85":1,"91":2,"103":1,"104":1,"113":1,"114":1,"122":1,"132":1,"133":1,"134":3,"135":2,"139":1,"142":1,"143":5,"147":1,"155":2,"160":2,"164":1,"165":1,"171":3,"189":2,"190":1}}],["were",{"2":{"195":1}}],["west",{"2":{"155":1}}],["weights",{"2":{"62":7,"116":8,"175":1}}],["we",{"2":{"8":1,"96":1,"172":1,"179":1}}],["wikipedia",{"2":{"157":1,"178":1,"189":1}}],["wikimedia",{"2":{"157":1,"178":1,"189":1}}],["will",{"2":{"106":1,"139":1,"142":1,"190":1}}],["wireframes",{"0":{"103":1}}],["wireframe",{"0":{"95":1,"96":1,"131":1,"149":1},"2":{"95":2,"96":1,"103":4,"104":1,"113":2,"123":1,"126":1,"127":1,"130":1,"131":1,"136":1,"190":1}}],["winter",{"2":{"75":1}}],["windows",{"2":{"188":1}}],["wind",{"2":{"10":1,"86":1}}],["with",{"0":{"6":1,"22":1,"24":1,"25":1,"26":1,"27":1,"28":1,"38":1,"45":1,"47":1,"48":1,"49":1,"53":1,"66":1,"67":1,"75":1,"121":1,"127":1,"153":1,"180":1},"2":{"8":3,"33":1,"34":1,"35":1,"36":3,"44":1,"59":1,"61":1,"62":1,"64":1,"90":1,"91":2,"95":1,"97":1,"101":1,"102":1,"106":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"116":1,"118":1,"119":1,"122":1,"135":1,"136":1,"137":3,"138":8,"139":2,"142":1,"143":1,"144":1,"145":1,"146":1,"150":1,"151":2,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"171":1,"173":1,"174":1,"175":1,"176":2,"177":1,"180":1,"190":2,"191":1,"192":1,"193":1,"194":1,"195":1}}],["width=15",{"2":{"30":1}}],["width=20",{"2":{"14":1}}],["width",{"0":{"46":1,"54":1},"2":{"0":1,"8":1,"9":1,"10":1,"11":3,"12":2,"23":1,"26":1,"27":1,"28":1,"32":1,"33":2,"34":2,"35":2,"36":3,"37":1,"38":1,"47":4,"49":1,"51":1,"70":2,"72":1,"75":1,"81":1,"86":1,"88":1,"91":1,"125":1,"135":1,"136":2,"154":3,"155":1}}],["$m",{"2":{"154":1}}],["$l",{"2":{"154":1}}],["$ylm",{"2":{"154":3}}],["$ygrid",{"2":{"154":2}}],["$idpng",{"2":{"153":1}}],["$idx",{"2":{"153":3}}],["$cmapidx",{"2":{"152":3}}],["$connectinglines",{"2":{"140":1}}],["$tempo",{"2":{"143":1}}],["$tail",{"2":{"143":4}}],["$time",{"2":{"139":2}}],["$time^2",{"2":{"139":1}}],["$pos2",{"2":{"140":1}}],["$pos1",{"2":{"140":3}}],["$velocity",{"2":{"139":1}}],["$sec",{"2":{"139":1}}],["$body",{"2":{"139":9}}],["$f",{"2":{"139":1}}],["$h",{"2":{"109":1}}],["$δy",{"2":{"33":1,"34":1,"35":1,"36":1}}],["$δx",{"2":{"33":1,"34":1,"35":1,"36":1}}],["$oy",{"2":{"33":1,"34":1,"35":1,"36":1}}],["$ox",{"2":{"33":1,"34":1,"35":1,"36":1}}],["$x",{"2":{"31":1}}],["$",{"2":{"5":4,"18":2,"19":2,"33":2,"34":2,"35":2,"36":2,"38":1,"43":1,"48":1,"53":1,"54":1,"72":1,"78":2,"102":1,"122":2,"135":2,"141":1,"143":1,"152":2,"153":3,"154":4,"191":1}}],["ipcc",{"2":{"155":1}}],["io",{"2":{"139":2,"141":2,"142":2,"143":2,"157":2}}],["isless",{"2":{"146":1}}],["isfahan2",{"2":{"130":1}}],["isoval",{"2":{"108":1}}],["isoval=100",{"2":{"108":1}}],["iso=isoval",{"2":{"108":1}}],["isosurface",{"2":{"108":3,"109":1,"110":1,"111":1,"112":5}}],["isosurfaces",{"0":{"108":1},"1":{"109":1,"110":1,"111":1,"112":1},"2":{"109":1,"112":1}}],["is",{"2":{"105":1,"106":2,"115":1,"137":3,"138":6,"139":1,"141":1,"142":2,"146":1,"151":1,"172":2,"177":1,"190":1}}],["issue",{"2":{"59":1,"61":1}}],["i^2",{"2":{"103":1,"152":1}}],["i^1",{"2":{"64":1,"192":1}}],["iz",{"2":{"89":2,"118":2,"121":2,"137":2,"138":4}}],["iris",{"0":{"72":1},"2":{"72":1}}],["irregular",{"0":{"30":1,"31":1}}],["i+1",{"2":{"46":1,"62":1,"116":1,"173":2}}],["icefire",{"2":{"105":1,"167":1}}],["ice",{"2":{"46":1,"47":1,"75":1}}],["imf",{"2":{"177":1}}],["im",{"2":{"166":2,"168":2}}],["imag",{"2":{"80":1}}],["imagemagick",{"2":{"195":1}}],["imageout",{"0":{"188":1},"2":{"187":1}}],["imagerecords",{"2":{"155":1,"180":1}}],["images",{"0":{"98":1,"99":1,"107":1},"2":{"44":5,"155":2,"171":1,"180":1,"195":1}}],["image",{"0":{"44":1,"105":1,"185":2},"2":{"44":3,"73":1,"105":1,"106":3,"155":1,"171":1,"189":2}}],["imgearth",{"2":{"155":5}}],["imgout",{"2":{"107":2}}],["imgcpunk",{"2":{"99":1,"102":1}}],["imgs",{"2":{"73":3,"99":1,"171":2}}],["img",{"2":{"44":5,"73":2,"97":2,"105":1,"106":5,"157":2,"166":2,"167":6,"168":2,"169":3,"170":3,"178":2,"184":1,"185":1,"189":3}}],["import",{"2":{"44":1,"113":1}}],["ifelse",{"2":{"155":2}}],["if",{"2":{"38":1,"48":1,"49":1,"62":2,"116":2,"125":1,"135":1,"154":1,"166":1,"168":1,"172":1}}],["iterations=250",{"2":{"187":1}}],["iterators",{"2":{"38":1}}],["itmap",{"2":{"166":2,"168":2}}],["it",{"2":{"142":1,"151":1,"190":1}}],["itr",{"2":{"38":2}}],["idnum",{"2":{"153":1}}],["idpng",{"2":{"153":1}}],["ids",{"2":{"153":6}}],["id",{"2":{"152":1}}],["idem",{"2":{"35":2}}],["idx+1",{"2":{"139":8}}],["idx",{"2":{"5":7,"8":3,"18":3,"64":2,"72":2,"139":5,"140":3,"153":2,"167":5,"170":4,"189":4,"192":2}}],["iy",{"2":{"33":7,"34":8,"35":7,"36":10,"89":2,"118":2,"121":2,"137":2,"138":4}}],["ix",{"2":{"33":9,"34":10,"35":9,"36":12,"89":2,"118":2,"121":2,"137":2,"138":4}}],["i",{"2":{"11":2,"14":4,"19":5,"24":2,"25":2,"29":3,"31":4,"33":4,"34":4,"35":4,"36":4,"38":4,"43":10,"44":2,"46":3,"48":5,"49":5,"62":6,"63":1,"64":2,"69":3,"73":7,"75":3,"77":1,"80":2,"83":10,"84":10,"87":3,"95":2,"99":5,"103":8,"106":1,"107":5,"113":6,"115":5,"116":7,"118":2,"121":2,"125":13,"134":2,"139":4,"140":1,"141":4,"142":2,"143":4,"147":4,"148":8,"151":2,"152":3,"153":2,"155":5,"156":5,"157":6,"166":2,"167":2,"168":2,"170":2,"171":21,"173":3,"176":7,"182":2,"184":1,"190":5,"192":2,"194":1}}],["info",{"2":{"195":1}}],["infer",{"2":{"103":2}}],["inferno",{"2":{"75":1,"167":1,"176":1,"194":1}}],["invasion",{"2":{"177":1}}],["inner=500",{"2":{"164":1,"165":1}}],["inner=31",{"2":{"95":2}}],["inner",{"2":{"153":3,"155":2}}],["initms",{"2":{"142":4}}],["initial",{"2":{"141":2,"142":1}}],["increasing",{"2":{"106":1}}],["inspired",{"2":{"171":1}}],["instead",{"2":{"137":3,"138":6}}],["install",{"2":{"52":1,"54":1}}],["inside",{"0":{"66":1,"76":1},"2":{"114":1}}],["inset",{"0":{"50":1,"51":1},"2":{"50":2,"51":2}}],["int64",{"2":{"143":1,"155":1}}],["inter",{"2":{"177":1}}],["interest",{"2":{"177":3}}],["interesting",{"2":{"176":1}}],["interp",{"2":{"175":2}}],["interpolations",{"2":{"172":1,"195":1}}],["interpolate=false",{"2":{"102":1,"105":2,"106":3,"107":1}}],["interval",{"2":{"137":3,"138":7}}],["intervalsbetween",{"2":{"59":1}}],["intervl",{"2":{"89":1}}],["into",{"0":{"99":1},"2":{"151":1,"187":1}}],["int",{"2":{"33":1,"34":1,"35":1,"36":1,"139":3}}],["index",{"2":{"140":1}}],["individual",{"0":{"106":1,"107":1}}],["indices",{"2":{"72":3}}],["indc",{"2":{"19":3}}],["indxcut",{"2":{"124":2}}],["indx+1",{"2":{"8":1}}],["indx",{"2":{"8":2,"10":4,"48":3,"49":3,"86":4,"155":2,"191":2}}],["in",{"0":{"21":1,"71":1,"89":1,"92":1,"95":1,"122":1,"139":1,"143":1},"2":{"0":4,"5":1,"8":3,"10":1,"11":1,"13":3,"14":5,"15":2,"16":4,"17":2,"18":1,"19":1,"24":2,"25":2,"29":2,"37":2,"38":3,"43":4,"46":1,"48":2,"49":2,"51":2,"52":1,"53":1,"54":2,"62":4,"63":1,"64":3,"69":1,"72":1,"73":4,"75":2,"77":1,"78":2,"80":3,"81":2,"83":4,"84":4,"86":1,"87":2,"89":3,"92":1,"95":1,"96":13,"99":3,"101":1,"103":7,"104":1,"105":1,"107":3,"108":3,"113":6,"115":2,"116":3,"117":2,"118":6,"119":1,"121":6,"122":1,"123":6,"124":2,"125":2,"126":6,"127":6,"128":6,"129":6,"130":6,"134":2,"135":9,"136":12,"137":6,"138":14,"139":10,"140":1,"141":1,"142":2,"143":2,"147":3,"148":5,"151":2,"152":3,"153":2,"154":8,"155":7,"156":1,"157":8,"166":3,"167":3,"168":3,"170":3,"171":14,"172":1,"176":3,"177":3,"178":6,"180":12,"181":6,"182":2,"184":2,"189":2,"190":2,"191":1,"192":3,"194":1}}],["√idx",{"2":{"64":1,"192":1}}],["√2",{"2":{"62":1,"64":2,"116":1,"135":2,"154":2,"192":2}}],["√",{"2":{"5":1}}],["σ2",{"2":{"35":4}}],["σ1",{"2":{"35":7,"36":4}}],["σ",{"2":{"5":2,"31":3,"33":10,"34":10,"35":4,"36":5}}],["σs",{"2":{"5":5}}],["μm",{"2":{"33":13,"34":13,"35":15,"36":14}}],["μσ",{"2":{"18":4}}],["μσpairs",{"2":{"18":2}}],["μ",{"2":{"5":7}}],["μs",{"2":{"5":2}}],["e6723b4c",{"2":{"195":1}}],["e69f00",{"2":{"5":1}}],["ee78f7c6",{"2":{"195":1}}],["eef9e4",{"2":{"102":1}}],["e9467ef8",{"2":{"195":1}}],["e30172f5",{"2":{"195":1}}],["epicycloid",{"2":{"191":1}}],["epicycloidlines",{"2":{"191":2}}],["ecycl",{"2":{"191":4}}],["echild",{"2":{"101":2}}],["emerging",{"2":{"177":3}}],["euro",{"2":{"177":3}}],["erin",{"2":{"171":1}}],["errorbars",{"0":{"6":1,"7":1,"9":1,"20":1,"21":1,"22":1},"2":{"6":1,"7":1,"9":1,"20":2,"21":2,"22":1}}],["error",{"0":{"2":1,"9":1},"2":{"31":2}}],["eigvecs",{"2":{"164":2}}],["equalization",{"0":{"175":1}}],["equations",{"2":{"139":1,"141":1}}],["equation",{"2":{"139":1}}],["eq",{"2":{"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":2,"175":7,"176":1}}],["eoimages",{"2":{"155":1,"180":1}}],["evolve",{"2":{"172":1}}],["evam",{"2":{"155":10}}],["eva",{"2":{"155":7}}],["everything",{"2":{"138":1,"151":1}}],["every",{"2":{"8":1,"96":1}}],["e76b56",{"2":{"153":1}}],["e76644",{"2":{"153":1}}],["estar",{"2":{"110":1,"112":1}}],["e4c92a",{"2":{"103":1}}],["edg",{"2":{"175":2}}],["edgerunners",{"2":{"101":1,"102":3}}],["edge",{"2":{"33":2,"34":2,"35":2,"36":2}}],["edges",{"2":{"33":3,"34":5,"35":5,"36":5,"175":1}}],["edd3aa",{"2":{"153":1}}],["edu",{"2":{"143":1}}],["ediv",{"2":{"101":3}}],["ey",{"2":{"84":5}}],["et",{"2":{"62":1,"116":1}}],["e^",{"2":{"52":1}}],["else",{"2":{"106":1,"125":1,"135":1,"154":1}}],["elseif",{"2":{"48":1,"49":1,"125":1,"135":1,"154":1}}],["element",{"2":{"137":3,"138":6}}],["ele",{"2":{"101":3}}],["elevation=0",{"2":{"181":1}}],["elevation",{"2":{"89":1,"92":1,"93":1,"119":1,"121":1,"122":1,"125":1,"131":1,"132":1,"133":1,"134":1,"137":1,"138":4,"152":1,"154":2,"180":1,"190":1}}],["electric",{"0":{"84":1}}],["eltype",{"2":{"31":2}}],["egypt",{"2":{"37":1,"89":1,"121":1,"137":1}}],["egg",{"0":{"15":1},"2":{"15":2}}],["each",{"2":{"106":2,"115":1,"139":1}}],["eachmatch",{"2":{"101":2}}],["eachindex",{"2":{"31":2,"62":1,"73":1,"84":2,"115":1,"116":1,"157":1,"171":3}}],["earthquake",{"2":{"157":1}}],["earthquakes2",{"2":{"157":2}}],["earthquakes1",{"2":{"157":2}}],["earthquakes",{"0":{"157":1},"2":{"157":11}}],["earth",{"0":{"97":1},"2":{"31":1,"33":1,"34":1,"35":1,"36":1,"97":3,"139":2,"143":1,"157":3,"178":2,"179":1,"180":4,"182":1,"189":3}}],["extrema",{"2":{"174":2}}],["extravehicular",{"2":{"155":3}}],["extra",{"2":{"151":1}}],["extent=72",{"2":{"157":1}}],["extent=",{"2":{"157":1}}],["exactly",{"2":{"137":3,"138":6}}],["examples",{"0":{"170":1},"2":{"117":1,"139":1,"167":1,"195":1}}],["example",{"2":{"31":1,"44":1,"190":1}}],["ex",{"2":{"84":5}}],["exposure",{"2":{"33":9,"34":9,"35":6,"36":10}}],["exp10",{"2":{"32":1}}],["exp",{"2":{"5":1,"33":1,"34":1,"35":1,"36":1,"50":1,"52":1,"57":1,"78":2,"90":3,"92":1,"95":3,"103":1,"131":1,"157":4,"190":2}}],["e",{"2":{"8":1,"11":1,"38":1,"84":2}}],["environmentlight",{"2":{"185":1}}],["env",{"2":{"142":1}}],["encountered",{"2":{"137":3,"138":6}}],["entire",{"2":{"139":1}}],["entzensberger",{"0":{"110":1}}],["entry",{"2":{"106":1}}],["en",{"2":{"102":1}}],["end+1",{"2":{"154":2}}],["end",{"2":{"5":1,"8":2,"10":1,"11":2,"17":1,"18":1,"19":1,"25":1,"29":1,"31":2,"33":4,"34":4,"35":6,"36":6,"38":3,"44":2,"48":2,"49":2,"53":1,"54":1,"62":10,"63":1,"64":3,"69":1,"71":1,"72":1,"73":5,"75":2,"77":1,"78":1,"84":5,"86":1,"87":1,"90":2,"91":1,"95":2,"97":2,"98":2,"100":1,"101":3,"102":1,"103":3,"106":1,"108":1,"109":1,"110":1,"111":1,"112":2,"113":1,"116":11,"117":1,"118":1,"119":1,"122":3,"125":2,"132":1,"133":1,"134":1,"135":3,"139":7,"140":1,"141":3,"142":3,"143":12,"144":1,"145":1,"146":1,"147":2,"148":4,"149":1,"150":1,"151":1,"152":1,"153":1,"154":5,"155":18,"156":2,"157":6,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":2,"165":2,"166":6,"167":1,"168":6,"170":1,"171":10,"173":2,"174":1,"175":3,"176":4,"177":4,"180":3,"182":2,"186":1,"189":4,"190":1,"191":1,"192":2,"193":1,"194":2}}],["enumerate",{"2":{"5":1,"8":2,"10":1,"18":1,"19":1,"44":1,"48":1,"49":1,"64":1,"69":1,"72":1,"86":1,"113":1,"125":2,"139":1,"148":2,"151":1,"155":1,"166":2,"168":2,"191":1,"192":1}}],["^m",{"2":{"135":2,"154":2}}],["^7",{"2":{"128":1}}],["^6",{"2":{"128":2}}],["^4",{"2":{"128":2}}],["^5",{"2":{"90":1,"95":1,"128":1}}],["^3",{"2":{"84":1,"90":1,"95":1,"110":1,"128":1,"171":1}}],["^",{"2":{"4":1,"5":1,"46":1,"47":1,"48":2,"49":2,"50":1,"51":4,"55":1,"60":1,"62":2,"71":3,"75":1,"78":2,"81":1,"103":5,"116":3,"119":1,"125":3,"126":3,"129":3,"130":3,"131":2,"155":4}}],["^2+z^2",{"2":{"109":1}}],["^2",{"2":{"0":2,"15":1,"33":2,"34":2,"35":2,"36":2,"81":2,"83":2,"84":2,"90":7,"95":7,"112":9,"119":1,"122":2,"128":3,"152":1,"168":1,"171":1}}],["ukraine",{"2":{"177":1}}],["uk",{"2":{"177":3}}],["u1",{"2":{"164":2}}],["upgradable",{"2":{"195":1}}],["upload",{"2":{"157":1,"178":1,"189":1}}],["update=false",{"2":{"157":2}}],["updates",{"2":{"141":1}}],["update",{"2":{"141":1}}],["updating",{"2":{"141":1,"142":1}}],["upper",{"2":{"2":2,"132":2,"133":2,"134":5}}],["u^2",{"2":{"129":2,"130":2}}],["u^2+v^2",{"2":{"81":1}}],["u^4",{"2":{"129":2}}],["uvs",{"2":{"100":2,"106":3}}],["uv",{"2":{"97":1,"100":1,"106":1,"186":1}}],["u2",{"2":{"81":2,"164":2}}],["uranus",{"2":{"139":2,"143":1}}],["uri",{"2":{"73":1}}],["urldata",{"2":{"157":3}}],["urlimg",{"2":{"157":2}}],["url",{"2":{"73":1,"155":2}}],["utriangle",{"2":{"72":1,"79":1,"193":1}}],["unitary",{"0":{"164":1}}],["unit",{"2":{"157":1}}],["unique",{"2":{"19":1,"72":1}}],["uno",{"2":{"76":1}}],["under",{"0":{"4":1,"5":1,"93":1},"2":{"35":2,"188":1}}],["u",{"2":{"13":2,"35":5,"80":2,"96":21,"123":9,"124":2,"126":10,"127":10,"128":30,"129":8,"130":8,"136":21,"164":6,"180":21}}],["usgs",{"2":{"157":2}}],["use",{"2":{"114":5,"137":3,"138":6,"155":1}}],["used",{"2":{"62":1}}],["using",{"2":{"8":1,"23":1,"24":1,"25":1,"62":1,"74":1,"85":2,"97":1,"103":1,"108":2,"113":2,"115":1,"116":1,"117":2,"120":1,"121":1,"135":1,"137":3,"138":7,"153":4,"154":1,"155":4,"157":3,"171":2,"172":1,"177":1,"178":1,"180":1,"181":1,"189":2,"190":1,"195":1}}],["us",{"2":{"0":3,"177":2}}],["gumbo",{"2":{"195":1}}],["gdal",{"2":{"195":1}}],["gdf",{"2":{"147":1}}],["gfs",{"2":{"171":2}}],["gf",{"2":{"171":5}}],["gfield",{"2":{"103":1}}],["gsfc",{"2":{"155":1,"180":1,"181":1}}],["glm",{"2":{"195":1}}],["glmakie",{"2":{"8":4,"23":1,"73":1,"76":1,"85":2,"89":3,"90":3,"91":3,"92":2,"94":3,"95":3,"96":3,"97":3,"103":3,"108":2,"113":2,"114":6,"115":3,"116":3,"117":3,"118":3,"119":3,"120":2,"121":3,"122":3,"123":3,"124":3,"125":3,"126":3,"127":3,"128":3,"129":3,"130":3,"131":3,"135":3,"136":3,"137":3,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"152":4,"153":5,"154":5,"157":2,"171":2,"172":2,"178":3,"179":2,"180":2,"181":2,"182":2,"187":1,"189":2,"190":2,"195":1}}],["glitch",{"2":{"157":1}}],["glowy",{"2":{"157":1}}],["global",{"2":{"155":2,"177":1}}],["gl",{"2":{"155":7}}],["gkr",{"2":{"154":1}}],["gov",{"2":{"143":1,"155":1,"157":1,"180":1,"181":1}}],["goldenrod1",{"2":{"177":1}}],["gold",{"2":{"111":1,"112":1,"132":1,"133":1,"134":3,"143":1}}],["goog",{"2":{"105":1}}],["gwb7z",{"2":{"85":1,"137":3,"138":6}}],["gyre",{"2":{"85":1,"177":1}}],["ga",{"2":{"182":3}}],["garrn",{"2":{"171":1}}],["gainsboro",{"2":{"139":1,"187":1}}],["gabriels",{"0":{"126":1}}],["gap",{"2":{"91":1,"96":1,"136":1}}],["gamma",{"2":{"78":2}}],["gallery",{"2":{"42":1,"140":1}}],["girlfriend",{"2":{"171":2}}],["gisele",{"2":{"171":1}}],["gist",{"2":{"31":1,"33":1,"34":1,"35":1,"36":1,"167":1}}],["githubusercontent",{"2":{"153":2,"157":1,"171":1}}],["github",{"2":{"73":2,"139":1,"171":1,"195":1}}],["gebco",{"2":{"180":1}}],["geo",{"0":{"182":1}}],["geomakie",{"2":{"179":2,"182":2,"189":6,"195":1}}],["geometrybasics",{"2":{"64":1,"97":1,"100":1,"106":1,"108":3,"113":5,"114":1,"115":1,"121":1,"138":1,"153":2,"192":1,"195":1}}],["geoaxis",{"2":{"179":2,"182":1}}],["gentoo",{"2":{"151":1}}],["generation",{"2":{"178":1,"189":1}}],["generate",{"2":{"108":1}}],["generator",{"2":{"38":1}}],["generic",{"2":{"33":1,"34":1,"35":1,"36":1,"101":1,"108":1,"166":1,"168":1,"173":1,"174":1,"175":1,"176":1}}],["getpicture",{"2":{"171":2}}],["getpoints",{"2":{"155":4}}],["getcounts",{"2":{"158":1,"159":1,"160":1,"161":1,"162":1,"163":1}}],["getstats",{"2":{"101":2,"102":1}}],["get",{"0":{"101":1},"2":{"91":1,"101":1,"136":1,"139":1,"157":1}}],["getavatars",{"2":{"73":2}}],["getgraphedges3d",{"2":{"116":2}}],["getgraphedges",{"2":{"62":2}}],["ggplot2",{"0":{"147":1,"193":1},"2":{"44":1,"144":1,"147":1,"149":1,"150":1,"151":1,"193":1}}],["g",{"0":{"44":1},"2":{"8":1,"16":3,"103":5,"119":2,"138":2,"141":2,"147":3,"148":4,"190":2}}],["groupby",{"2":{"147":1}}],["growth",{"0":{"142":1}}],["grav",{"2":{"139":2}}],["gravity",{"2":{"139":7}}],["gravities",{"2":{"139":3}}],["gravitation",{"0":{"103":1}}],["gray",{"2":{"126":1}}],["gray90",{"2":{"39":1}}],["graph",{"0":{"116":1}}],["grain",{"2":{"107":1}}],["gradient",{"0":{"93":1,"133":1},"2":{"105":1,"167":1}}],["greek",{"2":{"142":1}}],["greens",{"2":{"44":2}}],["green",{"2":{"2":1,"8":1,"41":1,"44":2,"66":1,"91":1,"136":1}}],["grey80",{"2":{"178":1}}],["grey70",{"2":{"139":1,"147":1}}],["grey9",{"2":{"139":1}}],["grey90",{"2":{"52":1,"95":2,"113":2,"122":1,"139":2,"177":2,"184":1}}],["grey25",{"2":{"120":1}}],["grey20",{"2":{"11":2,"18":1}}],["grey65",{"2":{"103":4}}],["grey30",{"2":{"78":1,"148":1}}],["grey45",{"2":{"74":1,"141":1}}],["grey10",{"2":{"40":1,"78":1,"87":1}}],["grey",{"2":{"8":2,"15":2,"53":1,"54":1,"125":3,"131":3,"171":7}}],["gridlines",{"2":{"155":8}}],["gridlayout",{"2":{"147":1,"148":1,"177":1}}],["grids",{"2":{"135":1,"154":1}}],["gridsize",{"2":{"80":2,"81":1,"82":1,"83":1,"190":2}}],["grid=false",{"2":{"14":1,"42":2,"102":1,"180":1}}],["grid",{"0":{"29":1,"118":1},"2":{"1":1,"18":1,"20":1,"40":1,"64":1,"77":1,"79":1,"83":1,"84":2,"87":1,"90":1,"95":1,"96":1,"119":1,"122":1,"135":1,"192":1,"193":1,"194":1}}],["gnuplot2",{"2":{"83":1}}],["gnuplot",{"2":{"0":1,"19":1,"32":1}}],["t^3",{"2":{"171":1}}],["t^2",{"2":{"141":1,"171":1}}],["t=1",{"2":{"112":1}}],["td",{"2":{"101":1}}],["txv",{"2":{"98":1}}],["txtcolor",{"2":{"38":2}}],["tstyle",{"2":{"91":5,"96":3,"136":5}}],["type=axis3",{"2":{"180":1}}],["type",{"2":{"74":1,"75":1,"85":1,"116":1,"119":1,"121":1,"137":1,"149":1,"151":1,"155":1}}],["tweaks",{"2":{"151":1}}],["tweaked",{"2":{"33":1,"34":1,"35":1,"36":3}}],["twimg",{"2":{"98":6}}],["twitter",{"0":{"98":1},"2":{"102":1,"139":1,"165":1}}],["twin",{"0":{"57":1}}],["two",{"0":{"58":1},"2":{"137":6,"138":12}}],["task",{"2":{"187":1}}],["tashapiro",{"2":{"171":2}}],["taper",{"2":{"177":1}}],["tanya",{"2":{"171":2}}],["tatsuya",{"2":{"155":1}}],["tail",{"2":{"143":4}}],["table",{"2":{"101":2}}],["ta",{"2":{"56":3}}],["toml`",{"2":{"195":1}}],["toni",{"2":{"171":1}}],["tocartesian",{"2":{"157":2}}],["tori2",{"2":{"136":2}}],["tori1",{"2":{"136":2}}],["torus",{"0":{"96":1,"109":1,"136":1,"180":1},"2":{"109":1,"112":1}}],["tol",{"2":{"117":1}}],["total",{"2":{"102":1,"139":1,"155":7}}],["together",{"0":{"102":1},"2":{"112":1}}],["to=",{"2":{"44":1}}],["to",{"0":{"133":1},"2":{"33":3,"34":3,"35":1,"36":1,"40":2,"52":1,"54":1,"106":1,"114":7,"137":3,"138":8,"139":4,"141":2,"142":1,"155":2,"157":2,"172":3}}],["topography",{"2":{"178":1,"189":1}}],["topoints3d",{"2":{"157":2}}],["top",{"0":{"28":1,"38":1,"133":1},"2":{"143":2,"147":1,"148":3,"157":2,"171":1,"177":1,"179":1}}],["topspinevisible",{"2":{"19":1}}],["tends",{"2":{"172":1}}],["tetra",{"2":{"111":1,"112":1}}],["tetrahedron",{"0":{"111":1}}],["tesseral",{"0":{"135":1,"154":1},"2":{"135":1,"154":1}}],["tesselation",{"0":{"186":1},"2":{"97":1,"186":1}}],["tess",{"2":{"97":1,"186":1}}],["tess=64",{"2":{"97":1,"186":1}}],["testfield",{"2":{"81":2}}],["testimage",{"2":{"44":1,"105":1,"106":1,"107":1}}],["testimages",{"2":{"44":2,"195":1}}],["tex",{"2":{"85":1,"177":1}}],["texture",{"0":{"181":1}}],["textures",{"0":{"180":1},"2":{"97":1,"180":1}}],["texttheta",{"2":{"155":4}}],["textcolor",{"2":{"91":2,"96":1,"136":2}}],["text=",{"2":{"85":1,"102":1}}],["text",{"0":{"38":1,"85":2},"2":{"33":2,"34":2,"35":2,"36":3,"38":1,"77":1,"78":2,"85":1,"101":3,"102":2,"122":1,"139":11,"143":2,"148":2,"155":9,"171":3,"177":2,"194":1}}],["tellwidth=false",{"2":{"102":2,"153":1,"171":1}}],["tellwidth",{"2":{"19":1,"51":1,"139":1,"152":1,"155":1,"177":2}}],["tellheight=false",{"2":{"171":1}}],["tellheight=true",{"2":{"153":1}}],["tellheight",{"2":{"19":1,"51":1,"151":1,"152":1,"154":1,"155":1}}],["tempo",{"2":{"143":2,"156":3}}],["temp",{"2":{"10":1,"86":1}}],["tuple",{"2":{"18":1,"34":1,"36":1,"56":1,"74":1,"79":1,"122":5,"137":3,"138":6,"143":1,"155":1,"157":1,"193":1}}],["tα",{"2":{"17":2}}],["tierra",{"2":{"155":4}}],["tight",{"2":{"154":1}}],["timgs",{"2":{"107":1}}],["timestamp",{"2":{"56":1,"144":1,"145":1,"146":1,"156":1}}],["timeseries",{"2":{"56":1,"156":1,"195":1}}],["timearray",{"2":{"56":1}}],["time",{"0":{"56":1},"2":{"139":5,"140":2,"141":1}}],["title=sproj",{"2":{"182":1}}],["title=",{"2":{"179":1}}],["titlelayout",{"2":{"177":5}}],["titles",{"0":{"177":1},"2":{"83":2}}],["titlesize",{"2":{"33":1,"34":1,"35":1,"36":2,"143":1}}],["titlesize=",{"2":{"18":1}}],["title",{"2":{"33":2,"34":2,"35":3,"36":2,"50":1,"51":1,"83":1,"141":1,"143":1,"155":1,"176":1,"191":1}}],["titleposition",{"2":{"19":1}}],["tilesize",{"2":{"8":1}}],["ticklabel",{"2":{"154":1}}],["ticklabelsize",{"2":{"24":1,"25":1,"32":1,"51":1,"70":2,"81":1,"91":1,"136":2,"155":1}}],["tickcolor",{"2":{"47":1}}],["tickwidth",{"2":{"24":1,"25":1,"29":1,"75":1,"135":1,"154":1}}],["tickalign=0",{"2":{"91":1}}],["tickalign=1",{"2":{"0":1,"14":1,"30":1}}],["tickalign",{"2":{"23":1,"26":1,"27":1,"28":1,"32":1,"33":2,"34":2,"35":2,"36":1,"37":1,"47":2,"49":1,"75":1,"135":1,"136":2,"154":1,"155":1}}],["ticksize",{"2":{"23":1,"26":1,"27":1,"28":1,"32":1,"33":2,"34":2,"35":2,"36":1,"37":1,"38":1,"47":4,"49":1,"75":1,"135":1,"136":2,"155":1}}],["ticksize=20",{"2":{"14":1}}],["ticksize=15",{"2":{"0":1,"30":1}}],["ticks=false",{"2":{"14":1,"42":2}}],["ticks=",{"2":{"13":1}}],["ticks",{"0":{"56":1},"2":{"8":1,"24":2,"25":1,"29":1,"31":1,"32":5,"38":1,"59":1,"61":1,"80":1,"83":1,"91":2,"96":2,"136":2}}],["t",{"2":{"8":1,"31":6,"33":2,"34":2,"35":2,"36":2,"42":1,"57":1,"69":9,"79":9,"81":2,"82":2,"92":1,"94":5,"102":1,"112":1,"123":10,"127":9,"138":1,"139":4,"140":12,"141":16,"148":4,"171":11,"177":1,"193":9}}],["threshold",{"2":{"171":1}}],["things",{"2":{"138":1}}],["this",{"2":{"8":1,"52":1,"54":1,"114":5,"142":1,"146":1,"148":1,"157":1,"171":1,"177":1,"179":1,"188":1,"190":1}}],["that",{"2":{"105":1,"139":1,"142":1,"190":1}}],["them",{"2":{"91":1,"106":1,"136":1}}],["theme",{"0":{"147":1,"148":1,"190":1,"191":1,"192":1,"193":1,"194":1},"2":{"31":4,"33":5,"34":4,"35":4,"36":6,"44":2,"62":2,"64":2,"90":2,"91":2,"95":2,"97":2,"102":2,"103":2,"109":2,"110":2,"111":2,"112":4,"113":2,"116":2,"118":2,"119":2,"122":2,"132":2,"133":2,"134":2,"135":2,"139":2,"142":2,"143":2,"144":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"151":2,"152":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2,"163":2,"164":2,"165":2,"171":2,"176":2,"177":2,"180":2,"190":2,"191":2,"192":2,"193":2,"194":2}}],["thermal",{"2":{"46":1,"47":1,"48":1,"49":1,"70":1,"75":1}}],["then",{"2":{"8":2,"179":1}}],["the",{"0":{"5":1,"42":1,"99":1,"100":1,"139":1,"143":2,"187":1},"2":{"8":2,"31":1,"62":1,"89":1,"91":1,"96":3,"105":2,"106":4,"108":1,"114":2,"128":1,"136":1,"137":3,"138":9,"139":2,"141":3,"142":3,"143":2,"146":1,"152":1,"155":1,"167":1,"172":3,"177":3,"179":1,"187":1,"190":1,"195":1}}],["tronlegacy",{"2":{"191":2}}],["tree",{"2":{"171":1}}],["trunkwidth",{"2":{"143":1}}],["trunklinestyle",{"2":{"143":1}}],["trunkcolor",{"2":{"143":1}}],["true",{"2":{"1":1,"4":1,"5":1,"19":1,"36":2,"48":1,"49":1,"50":2,"51":2,"59":1,"67":1,"86":1,"87":2,"88":1,"89":1,"90":1,"95":5,"96":2,"103":8,"113":1,"115":1,"121":1,"123":1,"126":1,"127":1,"129":1,"130":2,"131":4,"136":3,"137":1,"138":1,"151":1,"152":2,"155":3,"157":1,"177":1,"190":3}}],["tran",{"2":{"183":1}}],["transpose",{"2":{"164":2}}],["transparency=false",{"2":{"134":2}}],["transparency=true",{"2":{"92":4,"93":2,"104":2,"108":1,"114":3,"118":1,"126":1,"132":3,"133":3,"134":8,"153":1,"189":6}}],["transparency",{"2":{"89":1,"90":1,"95":6,"96":1,"103":8,"113":1,"115":1,"121":1,"126":1,"129":1,"130":2,"131":3,"136":3,"137":1,"138":2,"152":1,"157":1,"190":3}}],["transparent",{"2":{"7":1,"9":1,"12":1,"40":1,"70":2,"71":2,"72":2,"75":2,"79":1,"85":2,"87":1,"90":1,"114":1,"193":1}}],["transform",{"2":{"155":8}}],["transformation",{"2":{"33":1,"34":1,"35":1,"36":1,"95":1,"131":1,"190":1}}],["translation",{"2":{"139":1}}],["translate",{"2":{"50":1,"147":1,"148":1}}],["travellingsolarsystem",{"2":{"143":2}}],["traj",{"2":{"141":5}}],["trajectory",{"0":{"173":1},"2":{"141":2,"173":2,"176":1}}],["trait",{"2":{"137":3,"138":6}}],["try",{"2":{"123":1,"127":1,"171":1}}],["tridiagonal",{"0":{"159":1,"162":1},"2":{"159":1,"162":1}}],["trigger",{"2":{"141":1}}],["triangles",{"2":{"114":1}}],["triangleface",{"2":{"108":1}}],["tritanopic",{"2":{"103":1,"113":1}}],["rcos",{"2":{"191":2}}],["rpr",{"2":{"187":1}}],["rprmakie",{"2":{"187":1}}],["rprscreen",{"2":{"187":1}}],["rpts",{"2":{"155":12}}],["russia",{"2":{"177":1}}],["run",{"2":{"157":1}}],["rgbacube",{"0":{"115":1}}],["rgba",{"2":{"113":1,"115":1}}],["rgbaf",{"2":{"103":5}}],["rgb2",{"2":{"103":5}}],["rgb1",{"2":{"103":8}}],["rgbf",{"2":{"72":1,"106":2,"185":1}}],["r=0",{"2":{"97":1}}],["r=1",{"2":{"97":1,"186":1}}],["ry",{"2":{"84":3}}],["rx",{"2":{"84":3}}],["rnd",{"2":{"62":3,"116":3}}],["rseed",{"2":{"62":1,"116":2,"152":2}}],["rseed=123",{"2":{"62":1}}],["rrgadjacencym3d",{"2":{"116":2}}],["rrgadjacencym",{"2":{"62":2}}],["rrgraph",{"0":{"62":1},"2":{"62":1}}],["rasters",{"2":{"195":1}}],["rasterdatasources",{"2":{"195":1}}],["rates",{"2":{"177":1}}],["rate",{"2":{"177":4}}],["ratio",{"2":{"106":1}}],["rating",{"2":{"101":3,"102":4}}],["rainbow2",{"2":{"155":1}}],["radius",{"2":{"62":1,"97":1,"116":2,"117":1,"118":1,"139":1}}],["radius=0",{"2":{"62":1}}],["raw",{"2":{"33":1,"34":1,"35":2,"36":1,"77":2,"153":2,"157":1,"171":1,"194":2}}],["range=1",{"2":{"153":1}}],["ranges",{"2":{"96":1}}],["range",{"2":{"17":1,"45":1,"46":1,"47":1,"59":1,"61":1,"69":1,"71":1,"91":1,"103":4,"119":1,"127":1,"138":1,"140":2,"152":1,"154":2,"156":1,"158":2,"159":2,"160":2,"161":2,"162":2,"163":2,"166":2,"168":2,"171":1,"174":2,"177":2}}],["randdata",{"2":{"177":5}}],["randn",{"2":{"6":1,"7":1,"9":2,"12":1,"20":3,"21":2,"22":2,"30":1,"39":1,"41":1,"42":3,"43":1,"50":1,"60":1,"62":2,"63":1,"70":3,"71":1,"88":1,"116":2,"164":4,"177":1}}],["rand",{"2":{"6":1,"7":1,"9":1,"11":5,"18":1,"21":1,"22":1,"24":1,"25":1,"26":1,"28":1,"29":2,"31":3,"32":1,"38":1,"40":5,"56":1,"62":1,"63":3,"72":1,"74":4,"75":3,"76":1,"77":5,"79":1,"87":5,"104":1,"106":2,"113":1,"116":1,"117":1,"120":2,"122":1,"142":3,"152":1,"162":2,"163":1,"165":2,"193":1,"194":5}}],["random",{"0":{"116":1,"158":1,"161":1,"163":1,"165":1},"2":{"1":1,"6":2,"7":2,"8":2,"9":2,"11":2,"12":2,"15":1,"18":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"50":2,"60":2,"62":2,"63":2,"70":2,"71":2,"72":2,"74":2,"75":2,"77":2,"79":2,"87":2,"88":2,"104":1,"113":2,"116":2,"117":1,"119":2,"120":2,"122":2,"142":2,"152":2,"156":1,"177":1,"193":2,"194":2,"195":1}}],["rohrbach",{"2":{"171":1}}],["rosybrown4",{"2":{"139":1}}],["root",{"2":{"101":1}}],["rotatingwithtime",{"2":{"140":2}}],["rotating",{"0":{"140":1}}],["rotation",{"2":{"36":1,"155":3}}],["rotate",{"2":{"114":1,"153":1,"157":2,"178":1,"189":1}}],["rotl90",{"2":{"99":1}}],["rotr90",{"2":{"44":1,"99":6,"155":1,"171":1}}],["rowgap",{"2":{"42":1,"47":1,"99":1,"107":1,"139":1,"151":1,"167":1,"170":1,"171":1,"176":1,"177":1}}],["row",{"2":{"36":1}}],["rowsize",{"2":{"26":1,"28":1,"42":1,"139":2,"151":1,"171":1}}],["round",{"2":{"33":1,"34":1,"35":1,"36":1,"38":1,"40":1,"102":1,"139":4,"143":2,"155":1}}],["roma",{"2":{"13":1,"80":1,"124":1}}],["rich",{"0":{"85":1},"2":{"85":2,"139":2,"143":2,"157":3}}],["rightspinecolor",{"2":{"57":1}}],["rightspinevisible",{"2":{"19":1,"57":1}}],["right",{"0":{"99":1},"2":{"36":2,"38":1,"51":1,"56":1,"57":1,"87":2,"102":1,"155":2}}],["ribbon",{"0":{"3":1}}],["rb",{"2":{"12":1,"54":1}}],["r",{"0":{"44":1},"2":{"10":1,"12":3,"33":2,"34":2,"35":2,"36":2,"64":3,"86":1,"89":6,"91":4,"97":1,"101":2,"102":1,"103":7,"152":2,"157":10,"177":1,"186":1,"191":9,"192":3}}],["rdatasets",{"2":{"10":1,"19":1,"72":1,"86":1,"195":1}}],["repl",{"2":{"187":1}}],["replace",{"2":{"187":1}}],["repeat",{"2":{"95":2,"155":2,"164":1,"165":1,"189":1}}],["refaeli",{"2":{"171":1}}],["reference",{"2":{"143":1,"157":1}}],["references",{"2":{"139":1}}],["re",{"2":{"166":2,"168":2}}],["read",{"2":{"157":2}}],["real",{"2":{"31":3,"80":1,"139":2}}],["recordframe",{"2":{"139":1,"141":1,"142":1,"143":1,"157":1}}],["record",{"2":{"139":2,"140":2,"141":2,"142":2,"143":1,"157":2}}],["rectangular",{"0":{"116":1}}],["rectthin",{"2":{"113":5}}],["rectmesh",{"2":{"113":7,"153":2}}],["rect3f",{"2":{"100":1,"104":1,"106":1,"115":2,"121":2,"138":2,"140":1,"186":1}}],["rect3",{"2":{"97":3,"113":2,"119":1,"153":1}}],["rect",{"2":{"70":1,"75":1,"79":2,"193":2}}],["reshape",{"2":{"175":1}}],["resulting",{"2":{"172":1}}],["result",{"2":{"139":1}}],["resample",{"2":{"11":1,"40":1,"64":1,"77":1,"79":3,"87":1,"103":1,"113":1,"119":1,"138":1,"157":1,"171":1,"193":3}}],["remember",{"2":{"106":1}}],["rev",{"2":{"180":1}}],["revolution",{"0":{"126":1,"129":1,"130":1}}],["reverse",{"2":{"81":2,"82":1,"83":1,"122":1,"125":1,"171":1}}],["rev=true",{"2":{"73":1}}],["return",{"2":{"31":2,"62":2,"73":1,"84":1,"90":1,"95":1,"97":1,"101":1,"103":4,"108":1,"116":2,"135":3,"154":3,"157":2,"164":1,"165":1,"166":2,"168":2,"171":2,"174":1,"175":1,"186":1}}],["relative",{"2":{"25":1,"26":1,"28":1,"29":1,"33":2,"34":2,"35":2,"36":1,"42":2,"47":3,"51":1,"75":1,"90":1,"91":1,"116":1,"121":1,"124":1,"125":1,"129":1,"130":1,"131":1,"135":1,"136":2,"151":2,"155":1,"157":1}}],["regular=",{"2":{"6":1,"9":1,"21":1,"22":1,"39":1,"48":1,"49":1,"52":1,"53":1,"54":1,"58":1,"71":1,"81":1,"191":1}}],["regular",{"2":{"5":1,"43":1,"55":1,"56":1,"85":1}}],["reds",{"2":{"44":2}}],["red",{"2":{"1":4,"3":1,"5":1,"11":1,"12":3,"16":1,"36":2,"44":2,"47":1,"50":2,"51":1,"58":1,"65":2,"66":3,"67":3,"80":1,"84":4,"91":1,"114":1,"136":1,"189":1}}],["rtriangle",{"2":{"75":1}}],["rt",{"2":{"1":1,"12":1,"39":3,"41":1,"43":1,"52":1,"78":1,"88":1}}],["b964fa9f",{"2":{"195":1}}],["bc5e4493",{"2":{"195":1}}],["bmy",{"2":{"167":1}}],["bs",{"2":{"167":1}}],["b=bs",{"2":{"167":1}}],["b=9rand",{"2":{"161":1}}],["b=1000",{"2":{"170":1}}],["b=1024",{"2":{"166":1,"168":1}}],["b=10rand",{"2":{"158":1}}],["b=1",{"2":{"112":1}}],["bwy",{"2":{"154":1}}],["bjr",{"2":{"154":1}}],["bxs",{"2":{"147":3,"148":3}}],["bzpt",{"2":{"132":1,"133":1,"134":2}}],["brain",{"2":{"153":3}}],["branching",{"0":{"123":1}}],["bradley",{"2":{"108":1}}],["brick",{"2":{"107":1}}],["break",{"2":{"38":1}}],["b2",{"2":{"103":2}}],["b1",{"2":{"103":2}}],["bg",{"2":{"103":2}}],["bit",{"2":{"155":1}}],["bill",{"2":{"150":2,"151":4}}],["bias",{"2":{"97":1,"117":1,"118":1}}],["binomial",{"2":{"63":1,"74":1}}],["bins=60",{"2":{"44":1}}],["bins",{"0":{"39":1},"2":{"39":4,"150":1}}],["bundchen",{"2":{"171":1}}],["but",{"2":{"151":1}}],["burlywood",{"2":{"139":1,"143":1}}],["build",{"2":{"125":1}}],["bug",{"2":{"90":1}}],["bubble",{"0":{"70":1,"71":1}}],["bkr",{"2":{"90":1,"154":1}}],["bbox",{"2":{"50":2,"51":2}}],["bezierpath",{"2":{"171":2}}],["begin",{"2":{"155":5,"171":1}}],["because",{"2":{"137":3,"138":6,"146":1}}],["be",{"2":{"90":1,"106":1,"139":1,"148":1,"167":1,"195":1}}],["beta+2",{"2":{"78":1}}],["beta+1",{"2":{"78":3}}],["beta",{"0":{"160":1},"2":{"78":5,"160":1}}],["bessely",{"0":{"54":1},"2":{"54":1}}],["besselj",{"0":{"53":1},"2":{"53":1,"122":2}}],["beautifulmakie",{"2":{"153":1,"157":1,"195":2}}],["beautiful",{"2":{"42":1}}],["beware",{"2":{"31":1}}],["bell",{"0":{"5":1}}],["bodies",{"0":{"139":1},"2":{"139":4}}],["body",{"2":{"101":1,"139":25}}],["box",{"2":{"97":1,"119":1,"147":1,"148":1}}],["boxplot",{"0":{"11":1},"2":{"10":1,"11":3,"12":2}}],["boxplots",{"0":{"10":1,"12":1}}],["bottle",{"0":{"128":1},"2":{"128":1}}],["bottom",{"0":{"26":1,"133":1},"2":{"33":2,"34":2,"35":2,"36":3,"102":1,"143":2,"155":1,"171":2}}],["both",{"2":{"87":1}}],["bold",{"2":{"85":2,"139":1,"177":1}}],["bone",{"2":{"77":1,"122":1,"126":1,"158":1,"159":1,"167":1,"169":1}}],["b",{"0":{"44":1},"2":{"11":1,"57":1,"63":2,"69":6,"74":2,"90":2,"95":2,"103":3,"112":1,"151":2,"158":1,"161":1,"164":2,"165":4,"166":4,"168":4,"173":1,"176":3,"177":1}}],["bycat",{"2":{"19":3,"72":3}}],["by",{"0":{"97":1},"2":{"8":1,"31":1,"33":3,"34":3,"35":3,"36":3,"44":1,"106":1,"108":1,"139":1,"141":1,"142":1,"143":1,"151":1,"155":1,"157":1,"171":1}}],["bath",{"2":{"180":1}}],["bathymetry",{"2":{"178":1,"189":1}}],["bathymetric",{"2":{"157":1}}],["bank",{"2":{"177":2}}],["band",{"0":{"1":1,"2":1,"3":1,"122":1,"189":1},"2":{"1":3,"2":1,"3":2,"4":1,"5":1,"92":1,"93":1,"122":3,"132":1,"133":1,"134":2,"189":1}}],["backlight=1",{"2":{"126":1,"181":1}}],["backlight=2",{"2":{"118":1}}],["backlight=4",{"2":{"118":1}}],["backlight",{"2":{"108":1,"119":1,"123":1,"124":1,"127":1,"129":1,"130":1,"178":1,"180":2}}],["backgroundcolor=",{"2":{"70":2,"71":2,"72":2,"75":2,"85":2,"181":1}}],["backgroundcolor",{"2":{"12":1,"52":1,"55":2,"66":1,"82":1,"83":1,"103":4,"178":1}}],["background",{"0":{"184":1},"2":{"8":1}}],["bacbcf",{"2":{"102":1}}],["base",{"2":{"31":4,"38":1,"153":1}}],["bark",{"2":{"107":2}}],["bar",{"2":{"8":2,"40":1,"171":1}}],["bars",{"0":{"8":1},"2":{"8":1}}],["barplots",{"2":{"8":1}}],["barplot",{"0":{"6":1,"7":1,"9":1},"2":{"6":1,"7":1,"8":2,"9":1,"102":1,"146":1,"156":1,"171":1}}],["blake",{"2":{"171":1}}],["black",{"0":{"191":1},"2":{"2":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":2,"14":1,"20":4,"38":1,"39":3,"40":3,"45":1,"55":1,"56":1,"57":2,"58":1,"59":1,"62":1,"64":1,"65":2,"66":1,"68":1,"74":1,"78":2,"79":1,"80":3,"82":1,"83":1,"84":4,"86":1,"87":1,"88":1,"91":1,"93":1,"96":1,"102":1,"104":1,"114":1,"122":1,"124":1,"131":3,"136":2,"147":1,"155":1,"157":1,"158":1,"159":1,"160":2,"164":1,"165":1,"171":1,"176":1,"190":1,"191":1,"193":1}}],["bloomberg",{"2":{"177":1}}],["blockscene",{"2":{"147":1,"148":1}}],["blob",{"2":{"139":1}}],["blur",{"2":{"97":1,"117":1,"118":1}}],["bluemarble",{"2":{"155":1}}],["blues",{"2":{"44":2}}],["blue",{"0":{"178":1},"2":{"1":2,"3":1,"8":1,"16":1,"44":2,"66":1,"67":1,"171":9,"178":1,"189":1}}],["db073c08",{"2":{"195":1}}],["driver",{"2":{"177":1}}],["draw",{"2":{"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":2}}],["dsaurus",{"2":{"147":1}}],["dset",{"2":{"72":4}}],["df",{"2":{"146":1}}],["duration",{"2":{"155":2}}],["during",{"2":{"139":1,"155":1}}],["dummy",{"2":{"56":1}}],["dd3365",{"2":{"103":1}}],["dtriangle",{"2":{"79":1,"193":1}}],["documentervitepress",{"2":{"195":1}}],["documenter",{"2":{"195":1}}],["documentation",{"2":{"117":1}}],["docs",{"2":{"195":1}}],["dollar",{"2":{"177":1}}],["dots",{"2":{"177":1}}],["dot",{"2":{"140":1,"171":1}}],["done",{"2":{"141":1,"142":1,"167":1}}],["don",{"2":{"138":1}}],["download",{"0":{"98":1},"2":{"73":1,"97":2,"98":6,"153":2,"155":2,"157":3,"171":1,"178":2,"180":4,"181":2,"189":2}}],["downloads",{"2":{"73":2,"97":2,"98":6,"153":2,"155":2,"157":4,"171":2,"178":1,"180":1,"181":1,"189":1}}],["downloading",{"2":{"44":1}}],["do",{"0":{"100":1},"2":{"62":1,"64":1,"90":1,"91":1,"95":1,"102":1,"109":1,"110":1,"111":1,"112":2,"113":1,"116":1,"119":1,"122":1,"132":1,"133":1,"134":1,"135":1,"139":2,"140":1,"141":1,"142":2,"143":2,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":2,"154":3,"155":1,"156":1,"157":2,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"171":1,"176":1,"177":1,"180":1,"192":1,"193":1,"194":1}}],["doi",{"2":{"62":1,"116":1}}],["dodgerblue4",{"2":{"177":1}}],["dodgerblue",{"2":{"1":2,"11":2,"12":1,"16":1,"42":1,"45":1,"57":4,"84":2,"87":2,"108":1,"113":1,"114":1,"125":2,"127":2,"135":1,"139":3,"143":2,"157":1}}],["d0dfe6ff",{"2":{"191":1}}],["d0dfe699",{"2":{"171":1}}],["d0dfe6",{"2":{"18":1,"78":1}}],["dest=sproj",{"2":{"182":1}}],["desire",{"2":{"172":1}}],["depict",{"2":{"177":1}}],["depth",{"2":{"151":4,"157":4}}],["depths",{"2":{"151":2}}],["deprecated",{"2":{"137":3,"138":6}}],["delete",{"2":{"147":1,"148":1}}],["deepskyblue",{"2":{"146":1,"177":1}}],["determine",{"2":{"139":1}}],["detail",{"0":{"35":1},"2":{"35":3}}],["deco",{"2":{"112":2}}],["decocube",{"0":{"112":1}}],["der",{"0":{"83":1}}],["deuteranopic",{"2":{"64":1,"154":1}}],["default",{"2":{"39":1}}],["definitions",{"0":{"166":1,"168":1}}],["defining",{"2":{"8":1}}],["define",{"2":{"33":1,"34":1,"35":1,"36":1,"96":1,"106":1,"141":2}}],["defined",{"2":{"8":2}}],["density",{"0":{"18":1,"19":1,"149":1},"2":{"18":1,"19":4,"41":2,"43":1,"151":2,"175":1}}],["david",{"2":{"98":5,"99":1}}],["dark",{"0":{"148":1,"190":1},"2":{"90":1,"95":1,"97":1,"103":1,"109":1,"110":1,"111":1,"112":2,"113":1,"116":1,"118":1,"119":1,"132":1,"133":1,"134":1,"135":1,"139":1,"142":1,"143":1,"146":1,"148":1,"152":1,"153":1,"154":1,"156":1,"161":1,"162":1,"163":1,"177":1,"180":1,"190":1}}],["daymap",{"2":{"97":1}}],["day",{"2":{"56":1}}],["date",{"2":{"56":3}}],["dates",{"2":{"56":4,"156":4}}],["datainterpolations",{"2":{"195":1}}],["database",{"2":{"155":1}}],["dataframesmeta",{"2":{"155":1,"195":1}}],["dataframes",{"2":{"155":1,"157":1,"195":1}}],["dataframe",{"2":{"146":1,"155":1,"157":2}}],["datam",{"2":{"10":3,"86":3}}],["datasets",{"2":{"10":1,"19":1,"72":1,"86":1}}],["dataset",{"0":{"72":1},"2":{"10":1,"19":1,"72":1,"86":1,"147":1}}],["data",{"0":{"10":1,"86":1},"2":{"12":3,"33":1,"34":1,"35":1,"38":4,"39":5,"41":3,"43":2,"56":1,"88":2,"95":1,"113":1,"119":1,"131":1,"135":1,"144":1,"145":1,"146":1,"150":1,"153":1,"154":2,"155":3,"157":2,"171":3,"177":7,"180":1,"181":1}}],["dataaspect",{"2":{"0":1,"44":1,"64":1,"69":1,"73":1,"84":2,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":2,"169":1,"170":1,"190":1,"192":1}}],["dashdotdot",{"2":{"143":1}}],["dashdot",{"2":{"20":1,"55":1,"58":1,"70":2}}],["dash",{"2":{"15":2,"16":1,"18":1,"19":2,"22":2,"52":2,"53":2,"54":2,"58":1,"59":2,"60":2,"61":2,"71":2,"79":1,"155":2,"156":2,"177":1,"193":1}}],["d",{"2":{"11":1,"73":2,"74":3,"84":3,"87":1,"173":1,"176":2}}],["dicaprio",{"2":{"171":4}}],["dict",{"2":{"139":1}}],["differences",{"2":{"177":1}}],["differential",{"2":{"177":1}}],["differentials",{"2":{"177":1}}],["different",{"0":{"134":1},"2":{"106":1}}],["diffusematerial",{"2":{"187":2}}],["diffuse",{"2":{"108":1}}],["directly",{"2":{"91":1,"136":1}}],["direction=",{"2":{"42":1,"44":1,"151":1}}],["direction",{"2":{"8":1,"18":1,"20":1,"21":1,"40":3,"96":1,"151":1}}],["directions",{"2":{"8":2}}],["diverging",{"2":{"90":1,"113":1,"154":5}}],["diameters",{"2":{"139":2,"143":3}}],["diamond",{"2":{"72":1,"75":1,"79":1,"193":1}}],["diag",{"2":{"62":1,"116":1}}],["diagvalues",{"2":{"62":2,"116":3}}],["diagonal",{"2":{"62":1,"116":1}}],["dindx",{"2":{"62":5,"116":5}}],["digits=1",{"2":{"40":1,"102":1}}],["digits",{"2":{"38":1,"139":4,"143":1,"155":1}}],["dimension",{"2":{"137":3,"138":6}}],["dimensions",{"2":{"33":1,"34":1,"35":1,"36":1}}],["dimx",{"2":{"33":2,"34":2,"35":2,"36":2}}],["dimy",{"2":{"33":3,"34":3,"35":3,"36":3}}],["dims=1",{"2":{"95":4}}],["dims",{"2":{"31":1}}],["display",{"2":{"139":1,"154":1,"187":1}}],["distances",{"2":{"143":7}}],["distance",{"2":{"62":2,"116":2}}],["distribution",{"0":{"160":1},"2":{"12":2,"88":1}}],["distributions",{"0":{"11":1,"87":1,"119":1},"2":{"11":1,"18":1,"40":1,"63":1,"74":1,"87":1,"195":1}}],["disc",{"0":{"140":1}}],["discrete",{"0":{"48":1,"49":1}}],["discourse",{"2":{"8":1,"42":1,"92":1}}],["5e47fb64",{"2":{"195":1}}],["5exp",{"2":{"79":1,"193":1}}],["5c1252a2",{"2":{"195":1}}],["5cos",{"2":{"1":1}}],["5ae59095",{"2":{"195":1}}],["52",{"2":{"143":1,"171":1}}],["51118",{"2":{"139":1,"143":1}}],["51",{"2":{"131":1}}],["512",{"2":{"35":2,"107":6}}],["5rand",{"2":{"113":1}}],["5randn",{"2":{"79":1,"193":1}}],["5f0",{"2":{"108":1,"113":2,"119":1,"132":1,"133":1,"134":1,"153":2,"178":1,"180":2,"181":1}}],["5y",{"2":{"70":1}}],["54eefc05",{"2":{"195":1}}],["545",{"2":{"143":1}}],["5479b8",{"2":{"102":1}}],["54f0",{"2":{"35":1}}],["54",{"2":{"35":1,"143":1,"176":1}}],["598",{"2":{"35":1}}],["594",{"2":{"35":1}}],["590",{"2":{"35":1}}],["58",{"2":{"36":2,"180":1}}],["586",{"2":{"35":1}}],["582",{"2":{"35":1}}],["571",{"2":{"170":1}}],["57",{"2":{"89":1,"121":1,"137":1,"138":4}}],["5789e2e9",{"2":{"195":1}}],["578",{"2":{"35":1}}],["574",{"2":{"35":1}}],["570",{"2":{"35":1}}],["56",{"2":{"178":1,"180":1,"189":1}}],["566",{"2":{"35":1}}],["562",{"2":{"35":1}}],["56b4e9",{"2":{"5":1,"58":1}}],["5δx",{"2":{"33":1,"34":1,"35":1,"36":1}}],["5j",{"2":{"25":2}}],["50d2b5c4",{"2":{"195":1}}],["501",{"2":{"125":2}}],["500",{"2":{"33":2,"34":2,"35":2,"36":3,"63":1,"116":1,"139":1,"146":1,"161":1}}],["50",{"2":{"20":1,"34":2,"36":5,"46":1,"47":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"75":1,"103":2,"126":2,"127":1,"129":2,"130":2,"140":2,"141":1,"162":1,"167":2,"171":1}}],["55",{"2":{"1":1,"90":1,"154":2,"157":1,"171":1}}],["5",{"2":{"1":3,"6":1,"7":1,"8":2,"9":1,"11":6,"12":4,"14":1,"15":2,"16":2,"17":1,"18":2,"19":2,"20":3,"21":1,"22":1,"24":1,"25":1,"26":2,"28":2,"29":3,"31":2,"33":27,"34":10,"35":27,"36":20,"37":3,"38":2,"40":2,"41":1,"42":4,"45":2,"46":1,"47":4,"50":1,"51":2,"52":1,"53":1,"54":1,"64":2,"66":1,"67":2,"69":1,"70":2,"71":1,"74":1,"75":1,"77":1,"79":3,"81":1,"84":2,"87":6,"88":2,"89":1,"90":3,"91":2,"92":2,"93":2,"95":1,"96":6,"97":1,"100":1,"103":9,"104":1,"106":1,"108":1,"109":2,"112":4,"113":8,"114":2,"115":6,"116":2,"117":3,"118":4,"119":11,"120":4,"121":3,"122":3,"123":1,"124":1,"125":7,"126":2,"128":4,"129":1,"130":2,"131":2,"132":2,"133":2,"134":2,"135":1,"136":9,"137":1,"138":4,"139":7,"140":3,"141":1,"142":1,"143":16,"147":1,"149":1,"151":1,"152":2,"153":3,"154":6,"155":8,"156":1,"157":2,"158":10,"161":2,"162":1,"167":1,"171":6,"176":3,"177":1,"178":1,"180":7,"181":1,"183":3,"185":1,"186":1,"189":3,"190":4,"191":3,"192":1,"193":3,"194":1,"195":2}}],["44cfe95a",{"2":{"195":1}}],["449",{"2":{"170":1}}],["44685757880859369792",{"2":{"167":1}}],["44539837880859369792",{"2":{"167":1}}],["4x4",{"0":{"158":1}}],["49283797442249278541",{"2":{"167":1}}],["49283797442018109421",{"2":{"167":1}}],["49528",{"2":{"139":1,"143":1}}],["49",{"2":{"90":1,"95":1}}],["4879",{"2":{"139":1,"143":1}}],["48",{"2":{"85":2,"128":2,"143":1}}],["4353",{"2":{"72":1}}],["434",{"2":{"35":1}}],["430",{"2":{"35":1}}],["418",{"2":{"35":1}}],["414",{"2":{"35":1}}],["410",{"2":{"35":1}}],["4710194d",{"2":{"195":1}}],["47",{"2":{"33":1,"155":1}}],["42310",{"2":{"101":1,"102":1}}],["426",{"2":{"35":1}}],["422",{"2":{"35":1}}],["420",{"2":{"35":1}}],["42",{"2":{"33":1,"122":2}}],["405",{"2":{"137":3,"138":6}}],["406",{"2":{"35":1}}],["402",{"2":{"35":1}}],["40",{"2":{"33":1,"34":1,"36":1,"80":4,"98":1,"109":2,"112":2,"122":2,"183":1,"190":4}}],["400",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"32":1,"35":3,"37":1,"40":1,"41":1,"42":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"74":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"92":1,"93":1,"99":1,"107":1,"141":1,"143":1,"144":1,"145":1,"149":1,"150":1,"151":1,"159":1,"160":1,"161":1,"174":2,"179":1,"189":2,"191":1,"192":1,"193":1,"194":1}}],["45z",{"2":{"70":1}}],["450",{"2":{"31":1,"177":1}}],["45",{"2":{"10":1,"12":2,"18":1,"40":1,"79":2,"86":1,"88":1,"155":1,"176":1,"193":2}}],["4",{"2":{"6":1,"7":1,"9":1,"14":1,"15":1,"17":1,"21":1,"22":1,"33":3,"34":4,"35":4,"36":5,"38":1,"39":3,"40":3,"42":4,"43":2,"46":5,"47":9,"51":1,"54":1,"56":1,"69":3,"81":1,"82":1,"83":8,"84":1,"87":2,"91":1,"94":3,"102":1,"103":6,"113":3,"114":3,"119":1,"123":1,"131":1,"132":1,"133":1,"134":5,"139":1,"143":1,"147":2,"148":3,"151":2,"153":4,"154":1,"155":1,"156":1,"157":1,"161":4,"166":1,"167":1,"168":1,"170":1,"171":2,"176":4,"177":2,"178":1,"180":1,"186":1,"195":5}}],["4π",{"2":{"1":1,"17":2,"52":1,"135":1,"154":1}}],["m12",{"2":{"165":2}}],["m12u",{"2":{"164":2}}],["m3",{"2":{"161":1}}],["mβ",{"2":{"160":1}}],["mthelm85",{"2":{"190":1}}],["mtrin",{"2":{"162":1}}],["mtri",{"2":{"159":1}}],["mtcars",{"0":{"19":1},"2":{"19":1}}],["mm",{"2":{"150":2,"151":2}}],["msp",{"2":{"143":3}}],["ms",{"2":{"143":1,"157":2}}],["msize",{"2":{"142":3}}],["mp4",{"2":{"139":2,"140":2,"141":2,"142":1,"143":2,"157":2}}],["mpg",{"2":{"19":4}}],["mc",{"2":{"108":2}}],["mrand",{"2":{"163":1}}],["mr",{"2":{"104":8,"105":2}}],["monetary",{"2":{"177":1}}],["morrone",{"2":{"171":1}}],["more",{"0":{"183":1},"2":{"96":1,"153":1,"167":1}}],["motion",{"0":{"141":1}}],["moon",{"0":{"180":1,"181":1},"2":{"139":2,"181":1}}],["mode",{"2":{"90":1,"175":1}}],["model",{"2":{"33":1,"34":1,"35":1,"36":1}}],["modified",{"2":{"31":1,"190":2}}],["mk",{"2":{"79":3,"193":3}}],["myanimelist",{"2":{"101":1,"102":1}}],["my",{"2":{"79":2,"193":2}}],["m",{"2":{"38":4,"64":3,"77":3,"91":2,"100":6,"102":1,"106":10,"107":1,"114":3,"121":2,"135":14,"139":2,"154":16,"158":1,"176":2,"192":3,"194":3}}],["me",{"2":{"157":1}}],["menu",{"0":{"154":1},"2":{"154":4}}],["mercury",{"2":{"139":2,"143":1}}],["merge",{"2":{"1":1,"4":1,"5":1,"67":1,"113":1,"153":1}}],["mean",{"2":{"147":1,"171":1}}],["meanalpha",{"2":{"103":4}}],["measurement",{"2":{"33":1,"34":1,"35":1,"36":1}}],["meters",{"2":{"139":1,"143":3}}],["meta",{"2":{"100":1,"106":1}}],["method",{"2":{"33":1,"34":1,"35":1,"36":1,"101":1,"108":1,"166":1,"168":1,"173":1,"174":1,"175":1,"176":1}}],["media",{"2":{"98":6}}],["medianlinewidth",{"2":{"87":1}}],["median",{"2":{"86":1,"87":2,"88":1,"155":2}}],["mediancolor",{"2":{"10":1,"11":2,"12":2,"86":1,"87":1,"88":1}}],["meshes",{"0":{"113":1}}],["meshed",{"0":{"100":1}}],["meshing",{"2":{"108":2,"195":1}}],["meshscatters",{"0":{"117":1,"118":1,"119":1,"121":1}}],["meshscatter",{"2":{"103":4,"113":1,"114":1,"115":1,"116":1,"117":1,"118":3,"119":2,"120":2,"121":1,"138":2,"140":2,"157":1}}],["meshcube",{"2":{"100":2,"106":2}}],["mesh",{"0":{"104":1,"106":1,"153":1},"2":{"97":5,"100":2,"102":1,"104":4,"105":3,"106":6,"107":1,"108":4,"113":9,"114":3,"153":8,"186":1,"187":2}}],["middle",{"2":{"138":1}}],["missions",{"2":{"155":2}}],["mission",{"2":{"155":8}}],["missing",{"2":{"10":1,"86":1}}],["misleading",{"2":{"115":1}}],["minimal",{"0":{"194":1},"2":{"194":1}}],["minimum",{"2":{"0":1,"62":1,"95":3,"116":1,"118":3,"121":1,"131":2,"137":1,"139":1,"157":2,"190":1}}],["minus",{"2":{"177":1}}],["minortickalign",{"2":{"32":1}}],["may",{"2":{"195":1}}],["magnitude",{"2":{"157":1}}],["mag",{"2":{"157":7}}],["magma",{"2":{"30":1}}],["main",{"2":{"142":1,"153":1,"157":1,"171":2}}],["make",{"2":{"142":1}}],["makieorg",{"2":{"153":1,"157":1}}],["makiereferenceimages",{"2":{"140":1}}],["makie",{"0":{"73":1,"151":1},"2":{"8":2,"42":1,"43":1,"73":1,"85":3,"97":1,"99":1,"103":2,"107":1,"113":3,"114":2,"117":2,"118":1,"137":6,"138":12,"151":2,"153":7,"155":1,"157":1,"171":1,"177":1,"195":1}}],["matsys",{"2":{"187":3}}],["matsys=screen",{"2":{"187":1}}],["matrices",{"0":{"164":1,"165":1}}],["matrixadj",{"2":{"62":4,"116":4}}],["matrixadjdiag",{"2":{"62":2,"116":2}}],["matrix",{"0":{"105":1},"2":{"33":3,"34":3,"35":3,"36":3,"175":4}}],["material=rpr",{"2":{"187":2}}],["material",{"2":{"153":1}}],["matball",{"2":{"153":9}}],["matcaps",{"2":{"153":1}}],["matcapids",{"2":{"153":1}}],["matcap",{"0":{"153":1},"2":{"153":9}}],["math",{"2":{"139":1}}],["master",{"2":{"139":1,"153":1}}],["mandelbrot",{"0":{"166":1,"167":1},"2":{"166":4,"167":2}}],["many",{"2":{"139":1}}],["mantle",{"2":{"113":1,"153":1}}],["manual",{"2":{"33":1,"34":1,"35":1,"36":1,"39":1}}],["marble",{"0":{"178":1},"2":{"178":1,"189":1}}],["margin",{"2":{"171":1}}],["marked",{"2":{"195":1}}],["markets",{"2":{"177":1}}],["marketdata",{"2":{"156":1,"195":1}}],["markerelement",{"2":{"171":1}}],["marker=box",{"2":{"119":1}}],["marker=rect3f",{"2":{"118":3,"120":1}}],["marker=rect3",{"2":{"117":1}}],["marker=markers",{"2":{"72":1}}],["markercolor",{"2":{"65":1,"66":1}}],["marker",{"2":{"65":2,"66":1,"67":1,"70":1,"73":1,"75":1,"79":2,"113":1,"114":3,"115":1,"121":1,"138":1,"143":1,"171":1,"193":2}}],["markers",{"0":{"65":1},"2":{"72":1,"75":2,"79":2,"113":2,"193":2}}],["markersize=0",{"2":{"118":3}}],["markersize=1",{"2":{"117":1}}],["markersize=15",{"2":{"72":1}}],["markersize=10",{"2":{"42":1}}],["markersize=",{"2":{"71":1}}],["markersize=3",{"2":{"62":1}}],["markersize",{"0":{"142":1},"2":{"11":2,"12":2,"20":1,"22":1,"36":2,"39":1,"65":2,"66":2,"67":2,"68":1,"70":2,"73":1,"74":1,"75":1,"79":2,"84":2,"103":4,"113":1,"114":1,"116":1,"119":2,"121":1,"139":2,"140":3,"141":1,"142":1,"143":4,"155":1,"157":1,"164":1,"165":1,"171":3,"193":2}}],["mariya",{"2":{"155":1}}],["mars",{"2":{"139":2,"143":1}}],["marching",{"2":{"108":1}}],["marchingcubes",{"2":{"108":1}}],["mapping",{"2":{"144":1,"145":1,"146":2,"150":1}}],["map",{"0":{"189":1},"2":{"100":1,"103":1,"106":1,"157":2}}],["maximum",{"2":{"0":1,"33":1,"34":1,"35":1,"36":1,"62":1,"95":2,"116":1,"118":3,"121":1,"131":1,"137":1,"143":1,"155":2,"157":1,"190":1}}],["multiple",{"0":{"16":1,"77":1,"177":1}}],["mu",{"2":{"5":2,"18":1}}],["2=65",{"2":{"183":2}}],["2=60",{"2":{"183":2}}],["2=55",{"2":{"183":2}}],["2=50",{"2":{"183":2}}],["2=",{"2":{"183":1}}],["2=75",{"2":{"183":1}}],["2=40",{"2":{"183":1}}],["2=42",{"2":{"183":1}}],["2n",{"2":{"180":1}}],["2k",{"2":{"180":1,"191":3}}],["2b",{"2":{"178":2,"189":2}}],["2bdb52",{"2":{"102":1}}],["2913bbd2",{"2":{"195":1}}],["29",{"2":{"171":4}}],["299792458",{"2":{"143":1}}],["2cmap",{"2":{"171":5}}],["2im",{"2":{"164":1,"165":2}}],["2pi",{"2":{"140":2}}],["2321",{"2":{"168":1}}],["235365463728927548486",{"2":{"167":1}}],["235365461981556923486",{"2":{"167":1}}],["23",{"2":{"139":1,"171":2}}],["2370",{"2":{"139":1}}],["2y",{"2":{"81":3,"82":2}}],["2y^2",{"2":{"14":1}}],["248",{"2":{"157":1}}],["24",{"2":{"34":1,"36":1,"83":1,"116":1,"139":1,"142":1,"147":1,"148":1,"156":1,"157":1,"171":2,"195":1}}],["285",{"2":{"170":1}}],["280",{"2":{"146":1}}],["28",{"2":{"34":1,"36":1,"102":1,"150":1}}],["2fsize",{"2":{"33":1,"34":1,"35":1,"36":1}}],["276daf66",{"2":{"195":1}}],["274",{"2":{"170":1}}],["270",{"2":{"141":2}}],["275π",{"2":{"132":1,"133":1,"134":1}}],["27",{"2":{"33":1}}],["260",{"2":{"51":4}}],["26",{"2":{"33":1,"195":2}}],["2119f1ac",{"2":{"195":1}}],["21",{"2":{"29":1,"171":1,"195":2}}],["2rand",{"2":{"8":1,"23":1,"27":1,"159":3,"160":1,"165":2}}],["225π",{"2":{"154":2}}],["22",{"2":{"5":2,"18":1,"33":2,"46":2,"47":1,"48":2,"49":2,"52":2,"53":2,"54":2,"55":2,"58":2,"81":1,"124":1,"125":1,"129":1,"130":1,"131":1,"135":1,"142":1,"171":1,"187":1}}],["2π",{"2":{"5":1,"45":1,"46":1,"47":1,"58":4,"64":3,"65":1,"66":1,"67":1,"68":1,"84":2,"103":1,"125":1,"126":1,"127":1,"128":1,"129":1,"135":1,"154":1,"155":2,"178":1,"191":1,"192":3}}],["2σ^2",{"2":{"5":1}}],["25740289814296891154",{"2":{"167":1}}],["25740289813988496306",{"2":{"167":1}}],["254828889245416226270",{"2":{"167":1}}],["254828857465066226270",{"2":{"167":1}}],["2525418433406673",{"2":{"167":1}}],["2525416487455764",{"2":{"167":1}}],["256",{"2":{"40":2,"157":1,"175":2}}],["2500",{"2":{"167":1}}],["250",{"2":{"36":3,"50":2,"163":1}}],["25",{"2":{"1":1,"4":1,"5":2,"18":1,"19":2,"20":1,"34":1,"36":1,"41":1,"52":1,"78":1,"79":1,"92":1,"103":4,"113":2,"119":2,"132":3,"133":3,"134":7,"135":2,"136":4,"139":2,"148":1,"167":2,"171":5,"193":1,"195":1}}],["2",{"0":{"25":1},"2":{"0":1,"1":4,"2":1,"3":2,"4":1,"5":3,"6":1,"7":1,"8":4,"9":1,"11":6,"12":5,"13":15,"14":3,"15":1,"17":6,"18":4,"19":2,"20":1,"21":1,"22":2,"23":1,"24":6,"25":4,"26":1,"27":2,"28":2,"29":3,"30":1,"31":1,"32":3,"33":10,"34":9,"35":13,"36":23,"37":1,"38":2,"39":6,"40":6,"42":5,"43":3,"44":1,"45":1,"46":4,"47":11,"48":2,"49":1,"50":3,"51":4,"52":2,"54":2,"55":2,"56":1,"58":1,"60":2,"62":6,"63":1,"64":7,"67":1,"69":3,"70":1,"71":4,"75":3,"77":2,"78":1,"79":1,"80":27,"81":5,"82":3,"83":2,"84":18,"87":4,"88":1,"89":1,"90":3,"91":3,"92":1,"93":1,"95":2,"97":6,"99":1,"100":15,"101":5,"102":4,"103":9,"104":2,"105":1,"106":19,"107":1,"111":3,"112":10,"113":6,"114":4,"116":5,"118":4,"119":3,"120":1,"121":2,"122":3,"124":5,"125":7,"126":4,"127":1,"128":2,"129":4,"130":7,"131":6,"134":5,"135":5,"136":2,"137":1,"138":19,"139":14,"140":1,"141":4,"142":2,"143":13,"148":3,"151":4,"152":1,"153":12,"154":7,"155":12,"157":3,"159":4,"160":4,"161":4,"162":8,"163":8,"167":3,"170":1,"171":17,"176":3,"177":4,"178":1,"181":2,"182":2,"185":2,"186":1,"189":3,"190":4,"191":2,"192":7,"193":1,"194":2,"195":5}}],["2048",{"2":{"178":1,"180":1,"181":1}}],["2031",{"2":{"177":1}}],["2035",{"2":{"177":2}}],["2023",{"2":{"171":1}}],["2022",{"2":{"157":2,"171":5,"177":1}}],["2021",{"2":{"157":4}}],["2017",{"2":{"171":1}}],["2016",{"2":{"171":3}}],["2015",{"2":{"171":1,"177":1}}],["2014",{"2":{"171":4}}],["2013",{"2":{"171":1,"177":1}}],["2012",{"2":{"171":1}}],["2011",{"2":{"171":1}}],["2010",{"2":{"171":1}}],["201",{"2":{"98":1}}],["2018",{"2":{"56":2}}],["20π",{"2":{"91":1}}],["20z",{"2":{"70":1}}],["2097",{"2":{"35":1}}],["2092",{"2":{"35":1}}],["2087",{"2":{"35":1}}],["2082",{"2":{"35":1}}],["2077",{"2":{"35":1}}],["2072",{"2":{"35":1}}],["2067",{"2":{"35":1}}],["2062",{"2":{"35":1}}],["2057",{"2":{"35":1}}],["2052",{"2":{"35":1}}],["2008",{"2":{"177":1}}],["2007",{"2":{"177":3}}],["2009",{"2":{"171":3}}],["2004",{"2":{"171":1}}],["2003",{"2":{"171":1}}],["2000",{"2":{"59":1,"61":1}}],["200",{"2":{"3":1,"5":1,"42":1,"50":2,"77":1,"135":2,"146":1,"154":2,"156":1,"194":1}}],["20",{"2":{"0":2,"6":1,"7":1,"8":2,"9":1,"14":3,"21":1,"22":1,"23":2,"26":2,"27":2,"28":2,"29":1,"34":2,"36":2,"38":1,"39":3,"43":1,"49":2,"58":1,"64":1,"75":2,"81":1,"95":2,"96":1,"103":1,"111":1,"125":1,"131":1,"136":5,"143":1,"152":1,"154":1,"155":4,"156":1,"157":2,"159":1,"171":4,"177":1,"189":2,"192":1}}],["0=60",{"2":{"183":1}}],["0=35",{"2":{"183":1}}],["0=",{"2":{"183":2}}],["03",{"2":{"176":1}}],["03b0f5",{"2":{"102":1}}],["06510",{"2":{"167":1}}],["06505",{"2":{"167":1}}],["06",{"2":{"143":1,"157":1}}],["0f0",{"2":{"113":1,"118":2,"123":1,"124":1,"126":1,"127":1,"129":1,"130":1,"153":3}}],["0846794087374285150830",{"2":{"167":1}}],["0846794087369283253550",{"2":{"167":1}}],["082",{"2":{"97":1,"187":1}}],["08",{"2":{"90":1,"114":4,"143":1,"180":1}}],["01π",{"2":{"181":1}}],["015",{"2":{"157":1}}],["01",{"2":{"48":1,"49":1,"59":1,"61":1,"110":1,"112":1,"124":1,"138":2,"143":1,"157":2,"160":2,"170":1}}],["027",{"2":{"122":1}}],["025",{"2":{"97":1,"112":2,"114":1,"117":1,"118":1}}],["02",{"2":{"15":3,"50":1,"62":4,"114":1,"157":1}}],["008",{"2":{"170":1}}],["0001",{"2":{"181":1}}],["000605538046687500235",{"2":{"167":1}}],["000605561881950000235",{"2":{"167":1}}],["000",{"2":{"157":4,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":7,"176":1}}],["001",{"2":{"60":1,"143":1,"157":1}}],["005",{"2":{"13":2,"80":1,"124":2,"190":1}}],["009e73",{"2":{"5":1}}],["05443371561887635",{"2":{"167":1}}],["05451000956418885",{"2":{"167":1}}],["05",{"2":{"1":1,"4":1,"18":1,"36":1,"50":5,"52":2,"60":1,"92":2,"111":1,"112":1,"114":2,"138":1,"140":1,"148":1,"152":1,"157":1,"177":1,"186":2,"190":1}}],["0",{"0":{"163":1},"2":{"0":2,"1":12,"2":4,"3":2,"4":4,"5":3,"6":2,"7":1,"8":6,"9":1,"10":2,"11":6,"12":7,"13":4,"14":2,"15":4,"16":3,"17":7,"18":6,"19":2,"20":3,"21":1,"22":1,"23":1,"24":4,"25":5,"26":2,"27":1,"28":2,"29":4,"30":1,"31":7,"32":1,"33":42,"34":61,"35":42,"36":83,"37":2,"38":1,"39":1,"40":8,"41":2,"42":2,"44":2,"45":1,"46":1,"47":2,"48":4,"49":4,"50":9,"51":3,"52":5,"53":4,"54":5,"55":2,"57":2,"58":2,"59":1,"60":2,"61":1,"62":7,"63":1,"64":4,"65":1,"66":2,"67":1,"68":1,"69":5,"70":2,"73":2,"74":2,"75":6,"77":2,"78":6,"79":6,"80":5,"81":2,"84":6,"85":3,"86":2,"87":4,"88":3,"89":2,"90":5,"91":4,"92":16,"93":10,"94":2,"95":2,"97":22,"99":2,"100":12,"103":44,"104":1,"106":12,"107":2,"108":2,"109":2,"110":1,"111":2,"112":9,"113":18,"114":31,"115":2,"116":8,"117":4,"118":6,"119":13,"120":6,"121":7,"122":12,"123":10,"124":4,"125":9,"126":9,"127":9,"128":3,"129":7,"130":7,"131":6,"132":3,"133":3,"134":3,"135":7,"136":9,"137":2,"138":33,"139":34,"140":4,"141":2,"142":5,"143":37,"147":4,"148":11,"149":1,"151":3,"152":4,"153":14,"154":12,"155":13,"156":1,"157":14,"158":7,"160":2,"161":1,"162":4,"163":3,"164":4,"166":2,"167":38,"168":4,"170":16,"171":26,"176":39,"177":6,"178":6,"180":2,"181":3,"183":1,"185":6,"186":2,"187":4,"189":2,"190":6,"191":3,"192":4,"193":6,"194":2,"195":16}}],["ly",{"2":{"155":1}}],["luda",{"2":{"98":5,"99":1}}],["lucydavid",{"2":{"98":3,"99":1}}],["lucy",{"2":{"98":4,"99":1}}],["lscene",{"0":{"120":1},"2":{"91":1,"94":1,"96":1,"97":1,"102":1,"103":1,"114":1,"117":1,"118":3,"120":1,"126":1,"128":1,"136":1,"140":1,"153":1,"157":1,"178":1,"189":2}}],["lst",{"2":{"36":2}}],["lg",{"2":{"76":1}}],["lb",{"2":{"58":1}}],["lvs",{"2":{"36":2}}],["lfn",{"2":{"36":2}}],["lnv",{"2":{"34":1,"36":1}}],["lnh",{"2":{"34":1,"36":1}}],["longpath",{"2":{"189":3}}],["longitude",{"2":{"157":1}}],["lons",{"2":{"157":3}}],["lon",{"2":{"157":3,"183":1}}],["lowv",{"2":{"156":2}}],["low",{"2":{"145":1,"156":1}}],["lowercase",{"2":{"171":1}}],["lower",{"2":{"2":2,"132":2,"133":3,"134":5}}],["local",{"2":{"142":1}}],["loc",{"2":{"141":5}}],["lot",{"2":{"96":1}}],["load",{"2":{"73":1,"97":1,"98":6,"153":5,"155":1,"157":1,"171":1,"178":1,"180":2,"181":1,"189":1}}],["log10",{"2":{"32":4,"59":1,"81":1,"103":2,"155":2,"169":1,"170":1}}],["log",{"0":{"32":1,"59":1,"60":1,"61":1,"71":1},"2":{"59":1,"61":1,"71":1,"81":1,"139":1}}],["leggirl",{"2":{"171":2}}],["legleo",{"2":{"171":2}}],["legend",{"0":{"48":1,"66":1,"67":1,"76":1},"2":{"19":2,"48":1,"55":1,"58":1,"67":1,"151":1,"171":1,"191":1}}],["leo",{"2":{"171":11}}],["leos",{"0":{"171":1}}],["leonardo",{"2":{"75":1,"171":2}}],["lentime÷20",{"2":{"156":1}}],["lentime",{"2":{"156":4}}],["length=30",{"2":{"171":1}}],["length=800",{"2":{"163":2}}],["length=1200÷2",{"2":{"159":2}}],["length=1200",{"2":{"158":2,"160":2,"161":2,"162":2}}],["length=100",{"2":{"17":1,"71":1}}],["length=npoints",{"2":{"166":2,"168":2}}],["length=n",{"2":{"119":1}}],["length=500",{"2":{"91":1}}],["lengthbase",{"2":{"62":2}}],["lengthbase=1",{"2":{"62":1}}],["length",{"2":{"4":1,"5":1,"10":3,"19":2,"29":1,"31":3,"34":2,"36":2,"38":1,"48":2,"49":2,"56":1,"60":1,"62":3,"71":1,"72":1,"79":2,"86":3,"103":3,"104":2,"113":1,"116":3,"122":2,"127":1,"138":1,"140":5,"143":3,"150":2,"152":1,"153":1,"155":4,"156":1,"171":1,"174":2,"177":2,"189":1,"193":2}}],["lengthscale",{"2":{"0":1}}],["leading",{"2":{"141":1}}],["lead",{"2":{"141":3}}],["let",{"2":{"96":1,"139":1,"141":1,"182":1}}],["left",{"0":{"27":1},"2":{"19":1,"33":2,"34":2,"35":2,"36":4,"87":1,"102":1,"139":11,"148":2,"155":1,"157":2,"171":1,"177":7}}],["levels=20",{"2":{"17":1}}],["levels=0",{"2":{"15":1}}],["levels=100",{"2":{"14":2}}],["levels=30",{"2":{"13":2}}],["levels",{"0":{"13":1,"15":1,"17":1},"2":{"16":2,"89":1,"90":3,"95":2,"131":1,"138":1,"190":1}}],["l",{"2":{"5":4,"18":1,"46":5,"47":6,"48":3,"49":3,"52":6,"53":2,"54":2,"55":3,"57":1,"58":4,"62":1,"78":2,"80":5,"81":3,"102":1,"116":1,"135":11,"154":13,"177":1,"189":4}}],["lt",{"2":{"4":1,"11":1,"55":1,"66":1}}],["last",{"2":{"177":1}}],["lazy",{"2":{"155":1,"195":1}}],["lazaro",{"2":{"139":1,"143":1,"155":1,"157":1}}],["latitude",{"2":{"157":1}}],["lats",{"2":{"157":2}}],["lat",{"2":{"157":4,"183":1}}],["latexstring",{"2":{"53":1,"54":1,"77":1,"122":2,"194":1}}],["latexstrings",{"2":{"53":1,"54":1,"77":1,"103":1,"122":1,"194":1,"195":1}}],["latex",{"0":{"52":1,"53":1,"54":1}}],["lattice",{"2":{"33":3,"34":3,"35":3,"36":3}}],["lajolla",{"2":{"26":1}}],["labelpadding",{"2":{"51":1,"70":2}}],["labels",{"2":{"40":1,"46":2,"47":5,"145":2}}],["labelsize",{"2":{"32":1,"46":1,"81":1,"136":2,"155":1}}],["labelsize=14",{"2":{"16":2}}],["labels=true",{"2":{"16":2}}],["labelcolor=",{"2":{"16":2}}],["label=",{"2":{"1":1,"17":1,"30":1,"62":1,"72":1}}],["label",{"2":{"1":5,"4":4,"5":2,"11":2,"12":2,"16":2,"18":1,"19":2,"23":1,"26":1,"27":1,"28":1,"32":1,"33":5,"34":4,"35":5,"36":4,"37":1,"38":1,"39":3,"40":3,"41":2,"43":1,"45":3,"46":1,"47":4,"48":1,"49":1,"50":1,"51":2,"52":3,"53":1,"54":1,"55":1,"58":2,"65":2,"66":3,"67":3,"68":1,"70":2,"76":1,"78":1,"81":1,"88":1,"91":1,"102":2,"116":1,"121":4,"122":1,"125":1,"135":2,"136":2,"139":2,"143":3,"151":1,"152":1,"153":1,"154":3,"155":1,"157":3,"171":5,"177":8,"191":1}}],["layout=wrap",{"2":{"148":1}}],["layout",{"2":{"0":1,"15":1,"17":1,"23":2,"26":1,"27":1,"28":1,"30":2,"32":2,"33":1,"34":1,"35":1,"36":1,"37":1,"42":4,"45":1,"46":1,"47":2,"48":1,"49":1,"62":1,"80":2,"81":1,"99":2,"102":1,"107":2,"116":1,"121":1,"124":1,"125":1,"126":1,"129":1,"130":1,"131":1,"136":1,"139":4,"143":2,"151":5,"167":2,"170":2,"171":2,"176":2,"191":1}}],["literate",{"2":{"195":1}}],["lively",{"2":{"171":1}}],["limit=limits",{"2":{"140":1}}],["limits=rect3f",{"2":{"120":1}}],["limits=",{"2":{"24":1,"25":1,"92":1,"93":1}}],["limits",{"0":{"120":1},"2":{"0":2,"12":2,"13":1,"14":1,"17":1,"36":3,"42":1,"49":1,"50":1,"51":1,"55":1,"58":1,"62":1,"73":1,"75":1,"80":2,"83":1,"84":1,"88":1,"90":1,"121":1,"138":1,"139":2,"140":1,"142":1,"148":1,"154":1,"155":1,"164":1,"165":1,"171":1}}],["lift",{"2":{"139":12,"140":5,"143":2,"152":2,"153":3,"154":8}}],["lightposition",{"2":{"123":1,"127":1}}],["lights=lights",{"2":{"187":1}}],["lightskyblue",{"2":{"139":1,"143":1}}],["lights",{"2":{"119":1,"185":1}}],["lighting",{"2":{"117":1}}],["lighthouse",{"2":{"44":1}}],["light",{"0":{"143":1,"192":1},"2":{"33":2,"34":2,"35":2,"36":2,"117":1,"143":1,"145":1,"192":1}}],["linux",{"2":{"188":1}}],["links",{"2":{"139":1}}],["link",{"2":{"97":2,"171":2,"180":4}}],["linepathh",{"2":{"189":5}}],["linepath",{"2":{"189":5}}],["linepattern",{"2":{"8":2}}],["lineas",{"2":{"46":2}}],["linearinterpolation",{"2":{"175":1}}],["linearalgebra",{"2":{"62":1,"84":1,"97":1,"113":1,"116":1,"117":1,"153":1,"172":1}}],["linear",{"2":{"40":1,"64":1,"79":2,"119":1,"132":1,"133":1,"134":1,"154":1,"162":1,"167":1,"175":2,"193":2}}],["line4",{"2":{"46":2,"47":2}}],["line3d",{"2":{"91":2}}],["line3",{"2":{"46":2,"47":2}}],["line2",{"2":{"46":2,"47":2}}],["line1",{"2":{"46":2,"47":2,"56":1}}],["line",{"0":{"45":1,"50":1,"55":1,"67":1,"91":1,"94":1,"141":1},"2":{"94":1}}],["linewidth",{"2":{"20":3,"22":1,"34":2,"36":2,"45":2,"46":4,"47":4,"54":1,"55":1,"58":1,"63":1,"77":1,"80":2,"84":2,"90":1,"94":1,"113":1,"114":1,"116":1,"122":2,"123":1,"126":1,"127":1,"130":1,"131":1,"136":1,"141":1,"143":1,"155":5,"177":2,"190":3,"191":1,"194":1}}],["linewidth=5",{"2":{"189":1}}],["linewidth=abs",{"2":{"62":1}}],["linewidth=1",{"2":{"17":1,"132":2,"133":2,"134":6}}],["linewidth=2",{"2":{"16":2,"189":2}}],["linewidth=0",{"2":{"13":1,"15":1,"56":1}}],["linesegs",{"2":{"156":6}}],["linesegments",{"0":{"63":1},"2":{"62":1,"63":1,"116":1,"140":1,"155":4,"156":1}}],["linestyle",{"2":{"18":1,"20":1,"55":1,"58":1,"78":1,"140":1,"155":2,"171":1,"177":1}}],["linestyle=",{"2":{"16":1}}],["lines",{"0":{"46":1,"47":1,"48":1,"49":1,"52":1,"53":1,"58":1,"77":1,"84":1,"95":1},"2":{"1":3,"2":1,"4":1,"5":1,"20":1,"34":3,"36":3,"45":3,"46":4,"47":4,"48":1,"49":1,"50":2,"51":1,"52":3,"53":1,"54":1,"55":1,"56":2,"57":2,"58":2,"59":1,"60":1,"61":1,"66":1,"67":1,"76":1,"78":2,"91":2,"92":3,"93":1,"94":1,"95":2,"122":2,"132":2,"133":2,"134":6,"141":1,"143":1,"144":1,"145":1,"155":3,"171":6,"177":2,"179":1,"182":1,"189":5,"191":1}}],["linecolor",{"2":{"0":1,"8":1}}],["linrange",{"2":{"0":2,"1":2,"3":1,"5":1,"64":1,"65":1,"66":1,"67":1,"68":1,"77":1,"78":1,"90":2,"95":2,"96":2,"125":2,"126":2,"128":2,"129":2,"130":2,"131":1,"135":2,"136":2,"143":1,"154":2,"155":2,"157":2,"178":2,"180":2,"181":2,"191":1,"192":1,"194":1}}],["1π",{"2":{"190":1}}],["1=60",{"2":{"183":2}}],["1=67",{"2":{"183":1}}],["1=45",{"2":{"183":2}}],["1=",{"2":{"183":1}}],["1=55",{"2":{"183":1}}],["1=30",{"2":{"183":4}}],["1=10",{"2":{"183":2}}],["1=29",{"2":{"183":1}}],["1au",{"2":{"143":1}}],["1f0",{"2":{"113":2}}],["1+80",{"2":{"98":1}}],["1+iy",{"2":{"35":1}}],["1+ix",{"2":{"35":1}}],["1e2",{"2":{"71":1}}],["1e",{"2":{"71":1}}],["1997",{"2":{"171":1}}],["1998",{"2":{"171":3}}],["19",{"2":{"89":1,"121":1,"137":1,"138":1,"143":1,"159":2,"195":1}}],["1942",{"2":{"35":1}}],["1937",{"2":{"35":1}}],["1932",{"2":{"35":1}}],["1927",{"2":{"35":1}}],["1922",{"2":{"35":1}}],["1917",{"2":{"35":1}}],["1912",{"2":{"35":1}}],["1907",{"2":{"35":1}}],["1902",{"2":{"35":1}}],["170",{"2":{"36":1}}],["17",{"2":{"33":1,"116":1}}],["1889",{"2":{"170":1}}],["180",{"2":{"141":2,"189":4}}],["1800",{"2":{"83":1,"118":1}}],["189",{"2":{"119":1}}],["1897",{"2":{"35":1}}],["18",{"2":{"32":2,"33":1,"102":1,"155":1,"171":1}}],["160",{"2":{"183":1}}],["1600",{"2":{"147":1,"148":1,"182":1}}],["1618",{"2":{"120":1}}],["16",{"2":{"31":1,"34":1,"36":2,"73":1,"96":1,"143":2,"155":2,"171":2,"195":1}}],["149597870700",{"2":{"143":2}}],["1444823816031510529",{"2":{"139":1}}],["140",{"2":{"50":2,"51":2}}],["147",{"2":{"33":1}}],["146",{"2":{"33":1}}],["142984",{"2":{"139":1,"143":1}}],["142",{"2":{"33":2}}],["14",{"2":{"24":1,"25":1,"33":2,"34":1,"35":1,"36":2,"70":2,"75":2,"81":2,"90":2,"91":1,"102":2,"143":1,"147":1,"148":1,"155":1,"177":1,"195":2}}],["145",{"2":{"6":1,"7":1,"9":1,"20":1,"21":1,"22":1}}],["1im",{"2":{"13":1,"80":3,"124":1,"164":1,"166":1,"168":2,"170":8}}],["13f3f980",{"2":{"195":1}}],["1313f7d8",{"2":{"195":1}}],["1313",{"2":{"117":1}}],["1353",{"2":{"85":1}}],["135",{"2":{"34":1,"36":1}}],["137",{"2":{"33":1,"36":2}}],["132",{"2":{"33":1}}],["1384",{"2":{"189":1}}],["138",{"2":{"33":1}}],["134",{"2":{"33":1}}],["130",{"2":{"33":1,"34":1,"36":1}}],["13",{"2":{"8":1,"11":1,"12":1,"31":1,"39":1,"41":1,"43":1,"88":1,"119":1,"122":1,"156":1}}],["12104",{"2":{"139":1,"143":1}}],["1250",{"2":{"134":1}}],["125",{"2":{"34":1,"35":3,"36":1}}],["120536",{"2":{"139":1,"143":1}}],["120",{"2":{"34":2,"36":2,"140":1,"155":2}}],["1200",{"2":{"14":1,"29":1,"38":1,"39":1,"43":1,"44":1,"73":1,"75":1,"90":1,"91":1,"95":1,"102":1,"103":2,"104":2,"105":1,"106":1,"113":1,"115":1,"116":1,"117":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"128":1,"129":1,"130":1,"131":1,"134":1,"135":1,"136":1,"137":1,"138":2,"142":1,"147":1,"148":1,"152":1,"154":1,"155":2,"156":1,"167":1,"170":1,"171":1,"176":1,"180":1,"190":1}}],["12756",{"2":{"139":1,"143":1}}],["127",{"2":{"33":1}}],["126",{"2":{"33":1}}],["122",{"2":{"33":2,"97":1}}],["1234",{"2":{"63":1,"74":1,"177":1}}],["123",{"2":{"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"37":1,"38":1,"42":1,"50":1,"60":1,"71":1,"75":1,"77":1,"116":1,"142":1,"152":1,"194":1}}],["1240",{"2":{"98":1}}],["124",{"2":{"18":1,"40":1,"70":1,"87":1}}],["12",{"2":{"6":1,"7":1,"9":1,"21":2,"22":1,"33":2,"34":3,"35":1,"36":5,"40":1,"50":2,"51":3,"52":1,"56":1,"74":1,"79":3,"91":1,"139":1,"155":3,"176":1,"193":3,"195":2}}],["115",{"2":{"34":1,"36":1}}],["110",{"2":{"34":1,"36":1,"157":1,"195":1}}],["116",{"2":{"34":1,"36":1}}],["117",{"2":{"33":1}}],["112",{"2":{"33":1,"34":1,"36":1}}],["11",{"2":{"2":1,"15":1,"23":1,"27":1,"51":2,"62":1,"63":1,"104":1,"113":1,"121":3,"128":1,"139":4,"154":2,"177":2,"195":3}}],["156",{"2":{"170":1}}],["1571205148914995200",{"2":{"165":1}}],["158",{"2":{"33":1}}],["154",{"2":{"33":1}}],["1500",{"2":{"157":4}}],["150",{"2":{"33":1,"35":1,"154":1}}],["15",{"2":{"0":1,"22":1,"23":2,"24":1,"26":2,"27":2,"28":2,"32":2,"33":2,"34":3,"35":2,"36":2,"37":2,"38":5,"50":1,"53":1,"54":1,"64":1,"73":1,"74":1,"75":1,"79":2,"94":1,"103":2,"117":1,"122":3,"123":1,"128":3,"136":1,"139":3,"141":1,"143":1,"147":1,"148":3,"155":2,"171":5,"190":3,"192":1,"193":2,"195":3}}],["10x",{"2":{"70":1}}],["1093",{"2":{"62":1,"116":1}}],["105",{"2":{"34":1,"36":1}}],["1080+80",{"2":{"98":1}}],["108",{"2":{"34":1,"36":1}}],["104",{"2":{"34":1,"36":1}}],["107",{"2":{"33":1}}],["1024",{"2":{"153":1,"178":1,"180":1,"181":1}}],["1021",{"2":{"152":1}}],["102",{"2":{"33":1}}],["10²",{"2":{"32":1}}],["100",{"2":{"32":5,"33":2,"34":2,"35":1,"36":2,"40":1,"45":1,"55":1,"64":1,"77":1,"79":2,"96":1,"102":1,"103":1,"110":1,"119":2,"125":1,"128":2,"132":1,"133":1,"134":1,"136":1,"142":1,"154":1,"155":6,"164":2,"165":1,"193":2,"194":1}}],["1000",{"2":{"18":1,"40":4,"87":6,"98":6,"139":2,"141":1,"143":1,"157":1,"167":1,"173":1,"177":7,"191":1}}],["101",{"2":{"14":2,"30":1,"103":2,"138":1}}],["10",{"2":{"0":1,"1":4,"2":2,"3":2,"5":2,"6":3,"7":2,"9":3,"20":4,"21":3,"22":3,"24":6,"25":4,"29":6,"30":3,"32":4,"33":4,"34":5,"36":5,"42":2,"47":7,"48":2,"49":4,"50":1,"51":11,"52":3,"53":3,"54":3,"55":2,"57":2,"60":1,"62":1,"63":1,"65":2,"66":1,"68":1,"70":2,"71":1,"76":2,"79":2,"81":2,"82":1,"83":1,"84":2,"89":3,"90":2,"91":1,"95":1,"96":1,"102":1,"103":6,"105":2,"111":4,"112":1,"113":1,"116":1,"118":1,"119":2,"120":2,"121":1,"122":1,"135":1,"136":2,"137":4,"139":1,"154":2,"155":3,"157":1,"167":7,"171":5,"177":2,"186":1,"193":2,"195":6}}],["1",{"0":{"24":1,"162":2,"163":4},"2":{"0":7,"1":8,"2":4,"3":4,"4":3,"5":6,"6":4,"7":4,"8":13,"9":5,"10":5,"11":11,"12":12,"13":5,"14":11,"15":9,"16":5,"17":7,"18":11,"19":6,"20":6,"21":3,"22":3,"23":8,"24":12,"25":9,"26":7,"27":7,"28":6,"29":10,"30":8,"31":7,"32":16,"33":19,"34":20,"35":24,"36":20,"37":8,"38":7,"39":9,"40":7,"41":3,"42":6,"43":4,"44":3,"45":4,"46":4,"47":4,"48":13,"49":13,"50":6,"51":5,"52":5,"53":5,"54":7,"55":1,"56":5,"57":4,"58":4,"59":2,"61":2,"62":10,"63":1,"64":5,"65":3,"66":3,"67":4,"68":2,"69":2,"70":6,"71":5,"72":2,"73":9,"75":14,"76":3,"77":15,"78":9,"79":7,"80":15,"81":6,"82":2,"83":12,"84":7,"85":2,"86":3,"87":6,"88":5,"89":7,"90":13,"91":5,"92":2,"93":2,"94":3,"95":10,"96":3,"97":19,"98":10,"99":3,"100":21,"101":10,"102":7,"103":35,"104":4,"105":1,"106":22,"107":3,"108":3,"109":2,"110":4,"111":2,"112":16,"113":12,"114":23,"115":4,"116":10,"117":3,"118":11,"119":4,"120":6,"121":12,"122":10,"123":5,"124":7,"125":12,"126":9,"127":4,"128":3,"129":6,"130":8,"131":7,"132":7,"133":7,"134":8,"135":10,"136":7,"137":7,"138":43,"139":42,"140":10,"141":3,"142":3,"143":25,"145":1,"147":6,"148":11,"149":3,"151":11,"152":13,"153":15,"154":18,"155":15,"156":5,"157":13,"158":10,"159":6,"160":3,"161":8,"162":8,"163":6,"164":4,"165":8,"166":2,"167":12,"168":2,"169":7,"170":10,"171":32,"173":4,"174":1,"175":2,"176":45,"177":13,"178":4,"179":2,"180":8,"181":2,"182":4,"184":4,"185":1,"186":1,"187":2,"189":13,"190":21,"191":12,"192":5,"193":7,"194":14,"195":12}}],["a3a2b9e3",{"2":{"195":1}}],["a15396b6",{"2":{"195":1}}],["a98d9a8b",{"2":{"195":1}}],["a93c6f00",{"2":{"195":1}}],["avoid",{"2":{"187":1}}],["available",{"2":{"96":1,"195":1}}],["avatar",{"2":{"73":1}}],["avatars",{"2":{"73":7}}],["aut",{"2":{"182":1,"183":1}}],["autogenerated",{"2":{"195":1}}],["autolimitaspect",{"2":{"155":1}}],["autolimits",{"2":{"141":1}}],["automatic",{"2":{"148":1}}],["auto",{"2":{"139":2,"143":1,"171":1}}],["a004675",{"2":{"181":1}}],["a004600",{"2":{"181":1}}],["a000000",{"2":{"181":1}}],["agghist",{"2":{"174":2,"176":1}}],["aggregation",{"0":{"174":1}}],["age",{"2":{"171":18}}],["agdal",{"2":{"171":1}}],["again",{"2":{"106":1}}],["awesome",{"2":{"167":1}}],["a=9rand",{"2":{"161":1}}],["a=10rand",{"2":{"158":1}}],["a=15",{"2":{"109":1}}],["afmhot",{"2":{"157":1}}],["aog",{"0":{"151":1},"2":{"148":1,"150":1,"151":1}}],["achieve",{"2":{"172":1}}],["acceleration",{"2":{"139":2}}],["activities",{"2":{"155":3}}],["active",{"2":{"139":1}}],["activate",{"2":{"8":1,"28":1,"74":1,"75":1,"85":2,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"97":1,"103":1,"108":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"139":1,"140":1,"141":1,"142":1,"143":1,"152":1,"153":1,"154":1,"155":1,"157":1,"171":1,"172":1,"178":1,"179":1,"180":1,"181":1,"182":1,"187":1,"189":1,"190":1}}],["actual",{"0":{"187":1},"2":{"31":1,"33":1,"34":1,"35":1,"36":1,"152":1}}],["ambient=vec3f",{"2":{"126":1}}],["ambient",{"2":{"119":1,"123":1,"127":1,"129":1,"130":1}}],["a^2",{"2":{"109":1}}],["ascend",{"2":{"155":3}}],["astronaut",{"2":{"155":1}}],["astronauts",{"0":{"155":1},"2":{"155":4}}],["astro",{"2":{"155":25}}],["assetpath",{"2":{"153":4}}],["assets",{"2":{"142":1}}],["assembled",{"0":{"121":1}}],["associatedlegendrepolynomials",{"2":{"135":1,"154":1,"195":1}}],["ashton",{"2":{"108":1}}],["as",{"0":{"105":1,"185":1},"2":{"177":1,"190":1}}],["aspect=",{"2":{"149":1,"151":1,"181":1}}],["aspect=dataaspect",{"2":{"15":1,"62":1}}],["aspect=1",{"2":{"13":1,"14":1,"17":1,"99":1,"107":1,"176":1}}],["aspect",{"2":{"0":2,"15":1,"17":1,"23":1,"24":1,"25":1,"26":2,"27":1,"28":2,"29":1,"30":2,"32":1,"33":2,"34":2,"35":3,"36":4,"37":2,"44":1,"48":2,"49":1,"62":1,"64":1,"69":1,"73":1,"75":1,"80":3,"83":1,"84":2,"89":1,"90":2,"95":1,"113":1,"116":2,"119":1,"121":2,"122":1,"124":1,"125":2,"126":1,"129":1,"130":1,"131":2,"132":1,"133":1,"134":1,"135":1,"137":1,"138":4,"152":1,"154":2,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"167":2,"169":1,"170":1,"171":1,"180":1,"190":2,"191":2,"192":1}}],["azimuth=0",{"2":{"181":1}}],["azimuthal",{"2":{"135":1,"154":1}}],["azimuth",{"2":{"89":1,"92":1,"93":1,"119":1,"121":1,"122":1,"125":1,"132":1,"133":1,"134":1,"137":1,"138":4,"154":2,"180":1,"190":1}}],["adelie",{"2":{"151":1}}],["adaptation",{"2":{"116":1}}],["adjmax",{"2":{"62":3,"116":3}}],["adjmatrix3d",{"2":{"116":4}}],["adjmatrix",{"2":{"62":4}}],["adjmin",{"2":{"62":3,"116":3}}],["adjacencym3d",{"2":{"116":7}}],["adjacencym",{"2":{"62":7}}],["add2ef01",{"2":{"195":1}}],["add",{"2":{"33":1,"34":1,"35":1,"36":1,"139":1,"141":1}}],["adding",{"2":{"33":2,"34":2,"104":1,"147":1}}],["added",{"0":{"33":1}}],["a5b4b5",{"2":{"55":1}}],["algebraofgraphics",{"2":{"195":1}}],["algo",{"2":{"108":2}}],["always",{"2":{"137":3,"138":6}}],["all",{"0":{"102":1},"2":{"106":1,"112":1,"141":1,"152":1,"155":1}}],["allowed",{"2":{"31":1}}],["al",{"2":{"62":1,"116":1}}],["alonso",{"2":{"62":1,"116":1,"139":1,"143":1,"155":1,"157":1}}],["also",{"0":{"185":1},"2":{"42":1,"148":1}}],["alpha=alphas",{"2":{"103":1}}],["alpha=0",{"2":{"71":1}}],["alphas",{"2":{"103":1,"119":2,"138":2}}],["alphacolor",{"2":{"103":2}}],["alpha",{"2":{"40":1,"103":4,"119":4,"138":5}}],["alphabet",{"2":{"38":3}}],["alignmode",{"2":{"177":1}}],["align",{"2":{"38":1,"85":1,"102":1,"139":10,"143":1,"148":2,"155":7,"171":2,"177":1}}],["alternative",{"2":{"33":1,"34":1,"35":1,"36":1}}],["a",{"0":{"22":1,"105":1,"120":1,"181":1,"185":1},"2":{"10":2,"11":1,"12":3,"34":2,"38":1,"69":4,"77":4,"78":6,"86":2,"87":1,"88":2,"90":2,"91":2,"92":1,"94":1,"95":2,"96":1,"105":1,"106":1,"137":3,"138":6,"139":2,"141":3,"142":1,"151":1,"152":2,"157":2,"158":1,"161":1,"164":2,"165":4,"167":1,"172":4,"173":1,"176":3,"177":1,"179":1,"182":1,"194":4}}],["airquality",{"0":{"10":1,"86":1},"2":{"10":3,"86":3}}],["attractor",{"2":{"172":3}}],["attractors",{"0":{"172":1}}],["attrv",{"2":{"36":2}}],["attrh",{"2":{"36":2}}],["attr3",{"2":{"35":2}}],["attrc",{"2":{"34":2,"35":2,"36":2}}],["attr4",{"2":{"33":2}}],["attr",{"2":{"33":3,"34":3,"35":4,"36":4}}],["attributes",{"2":{"33":1,"34":1,"35":1,"36":1,"91":1,"136":1}}],["attr2",{"2":{"31":2,"33":2,"34":2,"35":2}}],["attr1",{"2":{"31":2,"33":2,"34":2,"35":2,"36":2}}],["at",{"0":{"13":1,"77":1},"2":{"8":1,"50":1,"51":1,"104":1,"139":1}}],["above",{"2":{"8":1,"190":1}}],["abs",{"2":{"6":1,"7":1,"9":2,"13":1,"14":1,"16":2,"20":2,"21":2,"22":2,"30":1,"48":1,"49":1,"60":1,"62":1,"63":1,"71":1,"74":1,"80":1,"116":2,"124":1,"135":4,"154":4}}],["append",{"2":{"8":1,"31":2}}],["archgdal",{"2":{"195":1}}],["archimedean",{"0":{"91":1}}],["array",{"0":{"185":1},"2":{"159":1,"162":1}}],["arrow",{"2":{"80":2,"81":1,"82":1,"83":1,"84":2,"190":2}}],["arrowcolor",{"2":{"0":1,"114":2}}],["arrowsize",{"2":{"0":1,"114":2}}],["arrows",{"0":{"0":1},"2":{"0":1,"114":2}}],["arguments`",{"2":{"137":3,"138":6}}],["around",{"0":{"47":1,"106":1},"2":{"105":1,"106":2}}],["artifact",{"2":{"44":1}}],["are",{"2":{"8":1,"96":1,"106":1,"114":1,"177":1}}],["analytics",{"2":{"177":1}}],["animscatters",{"2":{"142":1}}],["animation",{"2":{"141":1,"142":1,"157":1}}],["animate",{"0":{"141":1,"142":1}}],["anime",{"2":{"101":1,"102":1}}],["ansonbiggs",{"2":{"139":1}}],["an",{"0":{"185":1,"186":1},"2":{"106":2,"137":9,"138":18,"172":2}}],["angles",{"2":{"135":1,"154":1}}],["angle",{"2":{"13":1,"80":1,"124":1}}],["any",{"2":{"8":1,"89":1,"90":1,"91":1,"94":1,"95":1,"96":1,"97":1,"103":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"152":1,"153":1,"154":1}}],["and",{"0":{"6":1,"7":1,"9":1,"12":1,"21":1,"41":1,"47":1,"60":1,"71":1,"76":1,"83":1,"90":1,"95":1,"103":1,"117":1,"119":1,"134":1,"138":1,"141":1,"151":1,"180":1},"2":{"8":2,"33":1,"34":1,"35":2,"36":4,"91":1,"94":1,"96":2,"105":1,"106":1,"135":1,"136":1,"137":3,"138":6,"139":1,"141":1,"151":1,"154":1,"155":2,"177":1,"188":1,"195":1}}],["ax=lscene",{"2":{"187":1}}],["aximgs",{"2":{"171":7}}],["axisnames",{"2":{"91":1,"136":1}}],["axis3",{"2":{"89":1,"90":1,"92":1,"93":1,"95":1,"113":1,"116":1,"119":1,"121":1,"122":1,"125":1,"131":1,"132":1,"133":1,"134":1,"135":1,"137":1,"138":4,"149":1,"151":1,"152":1,"154":2,"181":1,"190":1}}],["axisaspect",{"2":{"75":1}}],["axis=false",{"2":{"97":1,"102":1,"114":1,"117":1,"118":3,"126":1,"153":1,"187":1,"189":1}}],["axis=",{"2":{"60":1,"61":1,"62":1,"71":1,"180":1}}],["axislegend",{"0":{"76":1},"2":{"1":1,"4":1,"5":1,"11":1,"12":2,"16":1,"18":1,"39":3,"41":1,"43":1,"45":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"58":1,"65":1,"66":1,"68":1,"72":1,"76":1,"78":1,"88":1,"177":1}}],["axis",{"0":{"56":1,"57":1},"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"9":1,"10":1,"11":1,"12":2,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":2,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":2,"32":1,"33":2,"34":2,"35":3,"36":3,"37":1,"38":1,"39":4,"40":1,"41":1,"42":3,"43":1,"44":2,"45":1,"46":1,"47":1,"48":1,"49":1,"50":2,"51":2,"52":1,"53":1,"54":1,"55":1,"56":1,"57":2,"58":1,"59":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":2,"85":1,"86":1,"87":1,"88":1,"90":1,"91":5,"96":6,"99":1,"102":1,"103":1,"107":1,"108":2,"116":1,"119":1,"121":1,"128":1,"136":6,"137":1,"139":1,"141":1,"142":1,"143":2,"148":1,"149":1,"151":2,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"167":2,"169":1,"170":1,"171":2,"176":1,"177":1,"178":1,"190":1,"191":1,"192":1,"194":1}}],["axd",{"2":{"151":3}}],["axp",{"2":{"143":10}}],["axv",{"2":{"36":3}}],["axh",{"2":{"36":3}}],["ax3",{"2":{"35":3,"39":3,"42":4,"138":2}}],["axc",{"2":{"34":2,"35":2,"36":2}}],["axt",{"2":{"33":2,"34":2,"35":2}}],["axn",{"2":{"33":2,"34":2,"35":2}}],["ax4",{"2":{"33":2,"39":3,"138":3}}],["axes",{"2":{"33":1,"34":1,"35":1,"36":1}}],["axstats",{"2":{"148":4}}],["axs",{"2":{"13":5,"14":7,"24":3,"43":3,"80":6,"83":4,"90":6,"95":8,"99":4,"103":16,"107":4,"113":10,"134":13,"135":4,"139":19,"143":6,"153":17,"167":4,"170":4,"176":5}}],["ax2",{"2":{"12":4,"19":3,"31":2,"33":3,"34":5,"35":3,"39":3,"42":3,"44":2,"50":6,"51":6,"57":4,"84":5,"90":2,"102":7,"138":2,"154":3,"190":2}}],["ax13",{"2":{"118":4}}],["ax12",{"2":{"118":4}}],["ax11",{"2":{"118":5}}],["ax1",{"2":{"12":4,"19":3,"31":2,"33":2,"34":2,"35":2,"36":4,"39":2,"41":4,"42":4,"44":4,"50":2,"51":2,"57":2,"84":4,"90":2,"102":2,"138":2,"154":2,"190":5}}],["ax",{"2":{"0":3,"1":3,"2":1,"3":1,"4":1,"5":1,"6":3,"7":3,"8":3,"9":3,"10":2,"11":5,"15":1,"16":3,"17":2,"18":2,"20":2,"21":3,"22":3,"23":1,"25":2,"26":1,"27":1,"28":1,"29":2,"30":1,"32":3,"37":1,"38":5,"40":2,"45":2,"46":1,"47":2,"48":2,"49":1,"52":1,"53":2,"54":2,"56":4,"62":3,"64":3,"65":1,"66":1,"67":2,"68":1,"69":1,"70":3,"71":2,"72":1,"73":5,"75":6,"76":3,"77":2,"78":1,"79":2,"81":3,"82":2,"85":4,"86":2,"87":3,"88":4,"89":2,"91":2,"92":1,"93":1,"94":2,"96":4,"97":6,"104":3,"105":1,"106":1,"114":9,"115":1,"116":2,"117":5,"119":4,"120":3,"121":2,"122":9,"124":1,"125":4,"126":5,"128":2,"129":1,"130":1,"131":5,"132":5,"133":5,"136":6,"137":1,"140":4,"141":5,"142":2,"152":2,"155":5,"156":8,"157":7,"158":4,"159":4,"160":4,"161":4,"162":4,"163":4,"164":4,"165":4,"167":4,"169":4,"171":18,"177":8,"178":5,"179":2,"180":3,"181":5,"187":6,"189":14,"191":2,"192":3,"193":2,"194":2}}],["f6369f11",{"2":{"195":1}}],["f64325",{"2":{"156":1}}],["fn",{"2":{"173":2}}],["fps",{"2":{"171":4,"183":1}}],["f=1000",{"2":{"163":1}}],["fb7e05",{"2":{"153":1}}],["fbde7d",{"2":{"153":1}}],["fbedbf",{"2":{"153":1}}],["fbe993",{"2":{"153":1}}],["fb552e",{"2":{"153":1}}],["fbb82d",{"2":{"153":1}}],["fbb43f",{"2":{"153":1}}],["fbbzqwtxkaa8kto",{"2":{"98":1}}],["f1d4b4",{"2":{"153":1}}],["f1f016",{"2":{"102":1}}],["f9e6c7",{"2":{"153":1}}],["fcdd65",{"2":{"153":1}}],["fcf7df",{"2":{"153":1}}],["fccbd4",{"2":{"153":1}}],["fcs",{"2":{"98":1,"108":2}}],["few",{"2":{"139":1,"167":1,"182":1}}],["funding",{"2":{"177":1}}],["functions",{"2":{"83":2,"171":1,"172":1}}],["function",{"0":{"124":1},"2":{"17":1,"31":2,"33":1,"34":1,"35":1,"36":1,"44":1,"62":3,"63":1,"64":1,"73":2,"75":1,"77":1,"84":3,"90":1,"95":1,"97":2,"101":1,"103":2,"108":2,"116":3,"117":1,"118":1,"125":1,"135":1,"141":1,"152":1,"153":1,"154":1,"155":2,"157":2,"166":2,"168":2,"171":5,"173":1,"174":1,"175":1,"176":1,"177":1,"182":1,"186":1,"190":2,"191":1,"192":1,"194":1}}],["fully",{"2":{"114":2}}],["ffdd33",{"2":{"155":4}}],["ffreyer",{"2":{"106":1}}],["ff410dff",{"2":{"191":1}}],["ff410d",{"2":{"18":1,"78":1}}],["fzfjxdawiae",{"2":{"98":1}}],["fd094767",{"2":{"195":1}}],["fdas55qxoaayg9l",{"2":{"98":1}}],["fdq1ev",{"2":{"98":1}}],["fdgmkklxeaakdg1",{"2":{"98":1}}],["fs",{"2":{"81":2}}],["fxy",{"2":{"51":2}}],["float32",{"2":{"62":1,"101":5,"116":1}}],["float",{"2":{"44":3}}],["float64",{"2":{"34":1,"36":1,"56":1,"103":2,"113":2}}],["flipaxis",{"2":{"24":1,"26":1,"27":1,"47":2,"136":1,"155":1}}],["front",{"2":{"155":1}}],["from",{"0":{"48":1,"49":1,"98":1},"2":{"33":1,"34":1,"35":1,"36":3,"62":1,"92":1,"116":1,"117":1,"139":1,"148":1,"152":1,"153":1,"157":1,"177":1,"179":2,"182":1,"190":1}}],["fractal",{"2":{"172":1}}],["frac",{"2":{"52":1}}],["frame",{"2":{"139":3,"141":3,"142":2,"143":5,"157":1}}],["frames",{"2":{"139":4}}],["framerate",{"2":{"139":7,"142":1,"143":1,"157":1}}],["framevisible",{"2":{"19":1,"177":1}}],["framecolor",{"2":{"5":1,"12":1,"53":1,"54":1,"66":1,"171":1}}],["fresy",{"2":{"36":3}}],["fresx",{"2":{"36":1}}],["fres",{"2":{"33":1}}],["f79686",{"2":{"153":1}}],["f79d1eff",{"2":{"171":2,"191":1}}],["f79d1e",{"2":{"18":1,"78":1}}],["f7c530ff",{"2":{"191":1}}],["f7c530",{"2":{"18":1,"78":1}}],["fα",{"2":{"17":3}}],["fvalues",{"2":{"13":1,"80":1,"124":4}}],["fvals",{"2":{"13":3,"80":3,"124":3}}],["f",{"0":{"163":2},"2":{"10":2,"11":1,"13":2,"14":2,"16":3,"17":2,"50":2,"51":1,"52":2,"58":1,"80":4,"86":2,"89":2,"108":2,"109":3,"110":3,"111":3,"112":10,"118":2,"121":3,"124":2,"137":2,"139":2,"140":3,"163":2,"171":2,"190":2}}],["faster",{"2":{"155":1}}],["fast",{"2":{"143":1}}],["fastshading",{"2":{"126":1,"129":1,"130":1,"132":1,"133":1,"134":4,"153":1,"157":2,"180":2,"181":1}}],["fall",{"2":{"139":1}}],["falling",{"0":{"139":1},"2":{"139":1}}],["false",{"2":{"1":1,"18":1,"19":4,"20":1,"24":3,"26":2,"27":1,"28":1,"40":1,"47":4,"51":2,"57":1,"64":1,"77":1,"79":1,"83":2,"84":2,"87":1,"90":1,"95":2,"103":1,"108":1,"119":1,"122":1,"123":1,"127":1,"128":1,"135":1,"136":2,"139":1,"147":1,"148":1,"152":2,"154":1,"155":3,"157":1,"177":6,"178":1,"192":1,"193":1,"194":1}}],["factor",{"2":{"115":1}}],["face",{"0":{"107":1},"2":{"106":1}}],["faces",{"2":{"100":1,"106":1,"114":4}}],["faf4fd",{"2":{"102":1}}],["faraday",{"2":{"98":5,"99":1}}],["fargs",{"2":{"13":4,"80":2,"124":2}}],["fake",{"0":{"103":1},"2":{"38":1}}],["fails",{"2":{"8":1}}],["folder",{"2":{"142":1}}],["following",{"2":{"106":1,"114":1,"139":1,"167":1,"172":1}}],["found",{"2":{"106":1}}],["font=",{"2":{"85":1,"139":1,"177":1}}],["font",{"2":{"52":1,"54":1,"85":2,"91":1,"136":1,"156":1}}],["fontsize=16",{"2":{"139":1}}],["fontsize=",{"2":{"102":1}}],["fontsize=22",{"2":{"14":1,"189":2}}],["fontsize=20",{"2":{"13":1,"153":1}}],["fontsize",{"2":{"29":1,"31":1,"33":4,"34":4,"35":4,"36":5,"38":1,"39":1,"43":1,"47":1,"81":1,"83":1,"85":1,"91":2,"96":2,"102":3,"116":1,"124":1,"125":1,"129":1,"130":1,"131":1,"135":2,"136":2,"139":21,"142":1,"143":2,"147":1,"148":1,"152":1,"154":1,"155":9,"156":1,"157":1,"171":3,"177":3}}],["fonts",{"0":{"52":1,"53":1,"54":1},"2":{"6":1,"9":1,"21":1,"22":1,"39":1,"43":1,"48":1,"49":1,"52":1,"53":1,"54":1,"55":1,"58":1,"81":1,"191":1}}],["fonts=",{"2":{"5":1,"56":1,"71":1}}],["footnote",{"2":{"33":2,"34":2,"35":3,"36":2}}],["forwarddiff",{"2":{"190":3,"195":1}}],["forward",{"2":{"177":1}}],["foreign",{"2":{"177":1}}],["format=jpg",{"2":{"98":6}}],["formatter=x",{"2":{"40":1}}],["for",{"0":{"10":1},"2":{"0":2,"5":1,"8":3,"10":1,"11":1,"13":2,"14":4,"15":1,"16":2,"17":1,"18":1,"19":1,"24":2,"25":1,"29":1,"31":2,"33":2,"34":2,"35":4,"36":2,"37":1,"38":2,"43":4,"44":1,"46":1,"48":2,"49":2,"51":1,"53":1,"54":1,"62":2,"63":1,"64":3,"69":1,"72":1,"73":3,"75":1,"77":1,"78":1,"80":2,"81":1,"83":4,"84":4,"86":1,"87":1,"89":1,"95":1,"96":6,"99":3,"101":1,"103":4,"104":1,"106":1,"107":3,"108":1,"109":1,"113":5,"114":5,"115":2,"116":2,"117":2,"118":2,"119":1,"121":2,"122":1,"123":3,"124":1,"125":1,"126":3,"127":3,"128":3,"129":3,"130":3,"134":2,"135":5,"136":6,"137":4,"138":9,"139":8,"140":1,"141":2,"142":1,"143":2,"147":3,"148":5,"151":2,"152":1,"153":1,"154":4,"155":4,"156":1,"157":5,"166":3,"167":3,"168":3,"170":3,"171":13,"173":1,"176":3,"177":3,"178":3,"180":6,"181":3,"182":1,"184":1,"189":2,"190":1,"191":1,"192":3,"194":1}}],["fg",{"2":{"5":3}}],["fitzoom",{"2":{"181":1}}],["fit",{"2":{"174":1,"175":1}}],["firebrick3",{"2":{"146":1,"177":1}}],["first",{"2":{"141":1,"142":1,"177":1}}],["finance",{"2":{"177":1}}],["final",{"2":{"139":8}}],["finallimits",{"2":{"131":1}}],["findmax",{"2":{"189":1}}],["find",{"2":{"85":1}}],["findall",{"2":{"19":1,"62":1,"72":1,"116":1}}],["fielde",{"2":{"84":3}}],["field",{"0":{"80":1,"84":1,"103":1},"2":{"190":3}}],["file2",{"2":{"157":2}}],["file1",{"2":{"157":2}}],["fileio",{"2":{"73":1,"97":1,"103":1,"139":1,"153":1,"157":1,"171":1,"178":1,"180":1,"181":1,"189":1,"195":1}}],["file",{"2":{"33":1,"34":1,"35":1,"36":1,"155":1}}],["filter",{"2":{"10":1,"48":1,"49":1,"86":1,"151":1}}],["fillto=",{"2":{"146":1}}],["fillto",{"2":{"40":1,"156":1}}],["filled",{"0":{"4":1,"5":1,"92":1,"93":1}}],["fill",{"2":{"1":1,"4":1,"5":1,"10":1,"11":3,"12":1,"32":2,"34":2,"36":2,"86":1,"87":3,"88":1,"92":1,"95":2,"143":1,"171":1}}],["fig=figure",{"2":{"164":1,"165":1,"187":1}}],["figgridscatters",{"2":{"75":2}}],["figure=",{"2":{"60":1,"61":1,"62":1,"71":1}}],["figure",{"0":{"187":1},"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":2,"34":2,"35":2,"36":2,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":2,"61":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":2,"86":1,"87":1,"88":1,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":2,"97":1,"99":2,"102":1,"103":1,"104":2,"105":1,"106":1,"107":2,"109":1,"110":1,"111":1,"112":2,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"147":1,"148":1,"151":1,"152":2,"153":1,"154":1,"155":1,"156":1,"157":1,"158":2,"159":2,"160":2,"161":2,"162":2,"163":2,"167":3,"169":2,"170":1,"171":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"189":2,"190":1,"191":1,"192":1,"193":1,"194":1}}],["fig",{"2":{"0":5,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":2,"9":3,"10":3,"11":3,"12":4,"13":4,"14":4,"15":4,"16":3,"17":4,"18":3,"19":6,"20":2,"21":3,"22":3,"23":6,"24":4,"25":4,"26":5,"27":5,"28":5,"29":4,"30":6,"31":4,"32":6,"33":13,"34":12,"35":14,"36":18,"37":5,"38":4,"39":6,"40":3,"41":3,"42":9,"43":3,"44":5,"45":5,"46":5,"47":14,"48":5,"49":5,"50":3,"51":5,"52":2,"53":2,"54":3,"56":2,"57":3,"62":4,"64":2,"65":3,"66":2,"67":4,"68":3,"69":3,"70":5,"71":3,"72":3,"73":4,"75":6,"76":3,"77":3,"78":3,"79":2,"80":6,"81":5,"82":3,"83":3,"84":4,"85":3,"86":3,"87":3,"88":2,"89":3,"90":4,"91":4,"92":3,"93":2,"94":3,"95":3,"96":3,"97":4,"99":5,"102":7,"103":3,"104":5,"105":3,"106":3,"107":5,"113":3,"114":3,"115":2,"116":4,"117":4,"118":5,"119":2,"120":3,"121":4,"122":4,"123":2,"124":4,"125":5,"126":5,"127":2,"128":3,"129":4,"130":4,"131":5,"132":3,"133":3,"134":3,"135":6,"136":9,"137":2,"138":6,"139":10,"140":4,"141":4,"142":2,"143":10,"147":3,"148":3,"151":10,"152":7,"153":7,"154":13,"155":5,"156":4,"157":7,"158":3,"159":3,"160":3,"161":3,"162":3,"163":3,"164":2,"165":2,"167":8,"169":3,"170":5,"171":11,"176":5,"177":5,"178":2,"179":3,"180":2,"181":4,"182":4,"187":2,"189":6,"190":5,"191":6,"192":2,"193":2,"194":3}}],["c9ce4bd3",{"2":{"195":1}}],["cd3eb016",{"2":{"195":1}}],["cd38d1",{"2":{"102":1}}],["cdf",{"2":{"175":6}}],["cf",{"2":{"171":2}}],["c=cvalues",{"2":{"170":1}}],["c=",{"2":{"168":1}}],["c=2",{"2":{"112":1}}],["c=20",{"2":{"109":1}}],["c78",{"2":{"167":1}}],["c72",{"2":{"162":1}}],["cxyz",{"2":{"157":4}}],["cpdo",{"2":{"155":4}}],["cpunk",{"2":{"102":5}}],["c32",{"2":{"154":1}}],["c35",{"2":{"90":1,"154":1}}],["cwm",{"2":{"154":1}}],["cwr",{"2":{"113":1}}],["csv",{"2":{"155":2,"157":5,"195":1}}],["cs",{"2":{"152":4}}],["ce6b1742",{"2":{"195":1}}],["ceil",{"2":{"139":2}}],["center",{"2":{"38":3,"51":1,"56":1,"78":1,"85":2,"102":1,"103":1,"139":10,"143":1,"153":1,"155":1,"171":2,"189":1}}],["c53",{"2":{"119":1,"132":1,"133":1,"134":1,"154":1}}],["c55",{"2":{"79":1,"193":1}}],["c^2",{"2":{"112":3}}],["c22",{"2":{"154":1}}],["c20",{"2":{"103":1,"113":1}}],["c2",{"2":{"103":2}}],["c1",{"2":{"103":3}}],["cyan3",{"2":{"139":1,"143":1}}],["cyclic",{"2":{"103":1}}],["cyberpunk",{"2":{"101":1,"102":2}}],["cylinder",{"0":{"113":1},"2":{"113":2}}],["cyl",{"2":{"19":3,"113":6}}],["circle",{"2":{"72":1,"73":1,"75":1,"79":1,"113":1,"153":1,"171":1,"193":1}}],["cc",{"2":{"65":1}}],["c40",{"2":{"64":1,"154":1}}],["c42",{"2":{"40":1,"79":1,"193":1}}],["cnx053",{"2":{"62":1,"116":1}}],["cross",{"2":{"75":1,"79":1,"193":1}}],["crosshair",{"0":{"34":1},"2":{"34":2}}],["create",{"2":{"33":3,"34":3,"35":3,"36":3,"179":1}}],["chelsea",{"2":{"105":1,"106":1}}],["china",{"2":{"177":1}}],["chinstrap",{"2":{"151":1}}],["child",{"2":{"101":2}}],["children",{"2":{"101":6}}],["chip",{"2":{"33":6,"34":6,"35":3,"36":5}}],["charges",{"2":{"84":3}}],["change",{"2":{"8":1,"142":2}}],["cgrad",{"2":{"32":1,"48":1,"49":1,"71":1,"192":1}}],["cumsum",{"2":{"175":1,"177":1}}],["cubes",{"0":{"121":1},"2":{"108":1}}],["cubed",{"0":{"104":1}}],["cube",{"0":{"100":1,"113":1,"121":1}}],["custom",{"0":{"186":1},"2":{"31":1}}],["current",{"2":{"59":1,"61":1,"139":2}}],["currently",{"2":{"8":1,"151":1}}],["curves",{"2":{"77":2,"194":2}}],["curve",{"0":{"5":1,"92":1,"93":1},"2":{"92":1}}],["cbdf2221",{"2":{"195":1}}],["cbarpal",{"2":{"48":2,"49":2}}],["cbar4",{"2":{"47":2}}],["cbar3",{"2":{"47":2}}],["cbar2",{"2":{"47":2,"136":2}}],["cbar1",{"2":{"47":2,"136":2}}],["cbars",{"2":{"46":1}}],["cbar",{"2":{"32":2,"75":2,"154":2}}],["cb",{"2":{"18":1}}],["clifford",{"0":{"176":1},"2":{"176":3}}],["cloth",{"2":{"107":1}}],["close",{"0":{"144":1},"2":{"8":1,"89":1,"90":1,"91":1,"94":1,"95":1,"96":1,"97":1,"103":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"144":1,"145":1,"146":3,"152":1,"153":1,"154":1,"156":2}}],["closeall",{"2":{"8":1,"89":1,"90":1,"91":1,"94":1,"95":1,"96":1,"97":1,"103":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"152":1,"153":1,"154":1}}],["clamp",{"2":{"103":2}}],["cls",{"2":{"17":2}}],["cl",{"2":{"15":1,"144":1}}],["c",{"2":{"11":1,"19":4,"72":3,"75":5,"90":2,"95":2,"103":2,"109":1,"166":3,"168":4,"173":1,"176":2}}],["cascadia",{"2":{"195":1}}],["case",{"2":{"114":5}}],["cargs",{"2":{"176":3}}],["cars",{"2":{"19":4}}],["camila",{"2":{"171":1}}],["cameracontrols",{"2":{"103":1,"114":1,"117":1,"118":3,"126":1,"153":3,"157":1,"178":1,"187":1,"189":1}}],["camera",{"2":{"33":6,"34":6,"35":3,"36":5}}],["candlestick",{"0":{"156":1}}],["can",{"2":{"151":1,"167":1}}],["cannot",{"2":{"90":1}}],["calculations",{"2":{"177":1}}],["calculated",{"2":{"177":1}}],["calculate",{"2":{"96":1,"114":5,"139":4,"141":1}}],["called",{"2":{"172":1}}],["calling",{"2":{"8":1}}],["categ",{"2":{"19":4,"72":2}}],["categorical",{"2":{"10":1,"19":2,"48":1,"49":1,"86":1,"194":1}}],["categories",{"0":{"31":1},"2":{"10":5,"86":5}}],["cat",{"2":{"11":2,"31":2,"95":2}}],["cairomakie",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":2,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"74":2,"75":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":2,"86":1,"87":1,"88":1,"155":3,"156":1,"177":1,"191":1,"192":1,"193":1,"194":1,"195":1}}],["cmrmap",{"2":{"28":1,"161":1,"167":1}}],["cmu",{"2":{"5":1,"48":1,"49":1,"52":1,"53":1,"54":1,"55":1,"58":1,"71":1,"81":1}}],["cmapidx",{"2":{"152":2}}],["cmaps",{"2":{"25":3,"29":3,"75":2,"83":2,"167":1}}],["cmap",{"2":{"0":3,"11":1,"13":1,"32":2,"40":3,"48":2,"49":3,"62":1,"64":4,"71":1,"77":1,"79":3,"80":2,"87":1,"90":4,"102":3,"103":8,"113":3,"116":3,"119":4,"131":3,"135":3,"138":8,"152":2,"154":3,"155":5,"156":3,"157":1,"171":2,"190":4,"192":3,"193":3}}],["coastlines",{"0":{"179":1},"2":{"179":3,"182":2,"189":5}}],["co",{"2":{"171":2}}],["corlett",{"2":{"155":1}}],["cor",{"2":{"147":1}}],["corresponds",{"2":{"106":1}}],["cormullion",{"2":{"44":1}}],["copy",{"2":{"103":1,"125":3}}],["commons",{"2":{"157":1,"178":1,"189":1}}],["combine",{"2":{"147":1,"151":1}}],["com",{"2":{"97":1,"98":6,"102":1,"139":2,"153":2,"157":1,"165":1,"171":2,"180":1}}],["complex",{"0":{"80":1,"124":1,"165":1}}],["comnet",{"2":{"62":1,"116":1}}],["cool",{"2":{"75":1}}],["coordinate",{"2":{"33":2,"34":2,"35":2,"36":2}}],["coordinates",{"2":{"33":4,"34":4,"35":4,"36":4,"100":1,"104":3,"106":1,"141":1}}],["code",{"2":{"62":1}}],["counts",{"0":{"39":1},"2":{"33":2,"34":2,"35":2,"36":4,"39":3,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"176":1}}],["could",{"2":{"8":1,"85":1}}],["conradi",{"2":{"165":1}}],["conj",{"2":{"164":2}}],["connecting",{"2":{"171":1}}],["connectinglines",{"2":{"140":2}}],["connect",{"2":{"152":1,"153":1,"154":2}}],["constraints",{"0":{"125":1},"2":{"125":1}}],["conservation",{"2":{"35":2}}],["cone",{"0":{"113":1},"2":{"113":6,"153":4}}],["conversions",{"2":{"85":1,"137":3,"138":6}}],["context",{"2":{"187":1}}],["contents",{"2":{"33":1,"34":1,"35":1,"36":1}}],["control",{"2":{"96":1}}],["contributor",{"2":{"73":1}}],["contributors",{"0":{"73":1},"2":{"73":1}}],["contributions",{"2":{"73":4}}],["contri",{"2":{"73":4}}],["contour3d",{"0":{"90":1},"2":{"90":1,"95":1,"190":1}}],["contourf",{"0":{"90":1},"2":{"90":2}}],["contour",{"0":{"13":1,"14":1,"15":1,"16":1,"17":1,"89":1,"95":1,"131":1,"138":1},"2":{"13":2,"14":2,"15":1,"16":2,"17":1,"89":1,"95":1,"131":1,"138":1}}],["confidence",{"0":{"2":1}}],["cosd",{"2":{"157":3}}],["cos",{"2":{"1":1,"3":2,"14":1,"16":2,"17":4,"45":4,"46":2,"47":2,"52":4,"58":2,"61":1,"64":2,"65":2,"66":4,"67":4,"69":1,"77":2,"79":2,"84":1,"91":1,"94":1,"96":8,"103":1,"123":1,"126":1,"127":1,"128":22,"129":1,"130":1,"135":6,"136":8,"140":2,"141":1,"154":6,"155":9,"157":2,"176":2,"178":2,"180":8,"181":2,"191":4,"192":2,"193":2,"194":2}}],["cols=3",{"2":{"148":1}}],["colsize",{"2":{"0":1,"15":1,"17":1,"23":1,"27":1,"30":1,"32":1,"37":1,"42":1,"48":1,"49":1,"62":1,"80":2,"116":1,"121":1,"124":1,"125":1,"126":1,"129":1,"130":1,"131":1,"143":1,"151":1,"191":1}}],["colour",{"0":{"133":1}}],["colours",{"2":{"104":1,"106":1}}],["colorant",{"2":{"171":2,"184":1}}],["colorp",{"2":{"155":3}}],["colorlines",{"2":{"140":2}}],["colorbuffer",{"2":{"99":1,"103":4,"107":1,"187":1}}],["colorblind",{"2":{"87":1}}],["colorbars",{"0":{"25":1,"47":1}}],["colorbar",{"0":{"24":1,"26":1,"27":1,"28":1,"49":1},"2":{"0":1,"13":1,"14":1,"17":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"45":1,"46":1,"47":4,"49":1,"51":1,"62":1,"70":2,"71":1,"75":1,"80":1,"81":1,"91":1,"116":1,"121":1,"124":1,"125":1,"126":1,"129":1,"130":1,"131":1,"135":1,"136":2,"154":1,"155":1,"157":1}}],["colored",{"0":{"48":1,"49":1}}],["colorrange",{"2":{"24":1,"25":1,"29":1,"32":1,"80":1,"84":2,"103":4,"116":2,"119":2,"121":1,"124":1,"131":2,"137":1,"138":1,"152":1,"190":1}}],["colorrange=",{"2":{"13":1,"62":2,"118":3}}],["colors3",{"2":{"113":2}}],["colors2",{"2":{"19":3,"113":2}}],["colors1",{"2":{"19":3,"113":2}}],["colorschemes",{"0":{"152":1},"2":{"10":1,"19":1,"25":2,"29":2,"32":1,"45":1,"46":1,"47":1,"48":2,"49":2,"75":1,"86":1,"103":1,"121":1,"137":1,"138":1,"152":3,"154":1,"155":1,"157":1,"195":1}}],["colors",{"0":{"44":1,"48":1,"49":1,"105":1,"106":1},"2":{"5":3,"8":4,"10":5,"11":2,"18":2,"19":3,"32":1,"43":3,"71":1,"72":1,"78":2,"86":5,"87":2,"97":1,"103":1,"113":1,"115":1,"117":1,"133":1,"143":4,"153":1,"155":1,"156":4,"157":1,"164":1,"165":1,"171":1,"194":1,"195":1}}],["color=moon",{"2":{"181":1}}],["color=blue",{"2":{"171":2}}],["color=sqrt",{"2":{"126":1}}],["color=vec",{"2":{"118":3}}],["color=norm",{"2":{"117":1}}],["color=rgb",{"2":{"97":3,"187":1}}],["color=cmap",{"2":{"102":1}}],["color=circshift",{"2":{"97":1}}],["color=colors",{"2":{"164":1,"165":1}}],["color=color",{"2":{"42":1}}],["color=x",{"2":{"71":1}}],["color=diagvalues",{"2":{"62":1}}],["color=weights",{"2":{"62":1}}],["color=",{"2":{"1":1,"13":1,"14":2,"16":2,"42":2,"44":1,"56":1,"60":1,"61":1,"92":2,"93":1,"108":1,"122":1,"139":3,"143":1,"157":2,"187":1,"189":2}}],["color",{"0":{"127":1,"184":1,"185":1},"2":{"1":5,"2":2,"3":2,"4":2,"5":2,"6":1,"7":1,"8":3,"9":1,"10":1,"11":2,"12":2,"19":2,"20":3,"21":1,"22":2,"34":2,"36":4,"38":1,"39":3,"40":5,"41":2,"42":1,"43":1,"45":3,"46":4,"47":4,"48":1,"49":1,"50":2,"51":1,"55":1,"57":2,"58":2,"59":1,"63":1,"64":2,"65":2,"66":3,"67":3,"68":1,"70":2,"72":1,"74":1,"75":3,"77":1,"78":5,"79":3,"84":2,"85":1,"86":1,"87":2,"88":1,"91":2,"93":1,"94":1,"95":4,"102":4,"103":8,"104":5,"105":2,"106":4,"107":1,"108":1,"109":1,"111":1,"112":4,"113":7,"114":4,"115":1,"116":2,"119":2,"120":2,"121":1,"122":4,"124":1,"126":1,"128":1,"129":1,"130":1,"131":1,"132":3,"133":3,"134":8,"135":3,"138":2,"139":10,"140":4,"141":2,"142":1,"143":7,"145":1,"146":2,"147":2,"148":1,"150":1,"154":2,"155":12,"156":2,"157":2,"166":2,"168":2,"171":9,"177":3,"178":1,"180":3,"189":3,"190":2,"191":1,"192":2,"193":3,"194":1}}],["colormaps",{"0":{"46":1},"2":{"152":1}}],["colormap=reverse",{"2":{"117":1,"126":1}}],["colormap=",{"2":{"14":2,"15":1,"17":1,"40":1,"118":1,"132":1,"133":1,"134":1,"164":1,"165":1,"167":1,"169":1}}],["colormap=cmaps",{"2":{"167":1,"170":1}}],["colormap=cmap",{"2":{"13":2,"62":2,"71":1}}],["colormap",{"0":{"6":1,"22":1,"45":1,"47":1,"48":1,"49":1,"75":1},"2":{"0":2,"6":1,"20":2,"22":2,"23":1,"24":2,"25":2,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"45":1,"46":4,"47":4,"49":1,"51":1,"63":1,"64":2,"70":2,"75":1,"79":1,"80":3,"81":2,"82":1,"83":1,"84":2,"89":1,"90":4,"91":2,"93":1,"94":1,"103":4,"104":3,"105":1,"113":1,"116":2,"118":4,"119":2,"121":1,"122":2,"123":1,"124":1,"125":3,"127":1,"128":1,"129":1,"130":1,"131":2,"132":3,"133":3,"134":7,"135":2,"136":2,"137":1,"138":5,"142":1,"152":2,"154":5,"155":4,"156":2,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"171":2,"176":1,"190":3,"192":2,"193":1}}],["col",{"2":{"44":2}}],["column",{"2":{"36":1}}],["collect",{"2":{"25":1,"29":1,"32":2,"33":1,"34":2,"35":2,"36":2,"38":1,"48":1,"49":1,"103":1,"138":2,"152":1,"171":1}}],["collection",{"0":{"11":1}}],["colgap",{"2":{"23":1,"30":1,"32":1,"42":1,"45":1,"46":1,"47":1,"81":1,"99":1,"102":1,"107":1,"136":1,"139":1,"143":1,"151":1,"167":1,"170":1,"176":1}}],["sky",{"0":{"184":1}}],["s²",{"2":{"139":1}}],["slice",{"2":{"156":3}}],["slider",{"0":{"152":1,"153":1,"154":1},"2":{"152":1,"153":1,"154":2}}],["sl2",{"2":{"154":2}}],["sl",{"2":{"152":2,"153":2,"154":4}}],["slow",{"2":{"143":1}}],["slowest",{"2":{"139":3}}],["slategray1",{"2":{"1":4}}],["snow4",{"2":{"139":1,"143":1}}],["smooth",{"2":{"157":1}}],["sm",{"2":{"131":2}}],["smaller",{"0":{"121":1}}],["ssaomeshscatter",{"2":{"118":2}}],["ssaom",{"2":{"117":2}}],["ssao=ssao",{"2":{"97":1,"117":1,"118":3}}],["ssao=true",{"2":{"97":5,"117":2,"118":4}}],["ssao",{"0":{"117":1,"118":1},"2":{"97":3,"117":3,"118":3}}],["ssaoplanes",{"2":{"97":2}}],["src",{"2":{"85":1,"137":3,"138":6}}],["s^",{"2":{"78":3}}],["s^β",{"2":{"78":1}}],["same",{"2":{"190":1}}],["samples",{"2":{"39":1}}],["saturn",{"2":{"139":2,"143":1}}],["save",{"0":{"188":2},"2":{"103":1,"112":1,"157":1}}],["sans",{"2":{"6":1,"9":1,"21":1,"22":1,"39":1,"43":1,"56":1,"156":1,"191":1}}],["sort",{"2":{"147":1}}],["sortperm",{"2":{"73":1}}],["so",{"2":{"143":2,"190":1}}],["sources",{"2":{"177":1}}],["source",{"2":{"102":1}}],["something",{"2":{"106":1,"148":1}}],["somesegments",{"2":{"63":2}}],["some",{"2":{"38":1,"96":1,"104":1,"141":2,"147":1,"148":1,"151":1,"171":1,"176":1}}],["solution",{"0":{"82":1},"2":{"106":1}}],["solid",{"2":{"18":1,"78":1}}],["solarsystemscope",{"2":{"97":1,"180":1}}],["solar",{"0":{"139":1,"143":1},"2":{"10":1,"86":1,"139":1,"143":1}}],["svs",{"2":{"181":1}}],["svg",{"2":{"74":1,"75":1,"85":1}}],["sv",{"2":{"36":2}}],["syndrome",{"2":{"171":1}}],["sy",{"2":{"35":4}}],["system",{"0":{"139":1,"143":1},"2":{"33":2,"34":2,"35":2,"36":2,"52":1,"54":1,"139":1,"143":1,"172":1}}],["sx",{"2":{"35":4}}],["shuttle",{"2":{"155":3}}],["short",{"2":{"155":1}}],["should",{"2":{"148":1,"179":1}}],["show",{"2":{"33":1,"34":1,"35":1,"36":1,"86":1,"87":2,"88":1,"96":1,"97":1,"102":1,"103":1,"108":3,"109":1,"110":1,"111":1,"112":5,"114":1,"117":1,"118":3,"126":1,"128":1,"136":1,"153":1,"157":1,"178":1,"187":1,"189":2}}],["shininess",{"2":{"108":1}}],["shifted",{"2":{"33":2,"34":2,"35":2,"36":2}}],["sh",{"2":{"36":2}}],["shading",{"2":{"113":1,"121":1,"126":1,"129":1,"130":1,"132":1,"133":1,"134":4,"135":2,"136":2,"153":9,"154":2,"157":2,"178":1,"180":2,"181":1}}],["shared",{"0":{"24":1,"25":1}}],["shape",{"0":{"15":1}}],["sun",{"0":{"180":1},"2":{"167":1,"180":5}}],["sunset",{"2":{"104":2,"167":1}}],["subset",{"2":{"155":3}}],["submatrix",{"2":{"35":3}}],["supls",{"2":{"171":2}}],["supline",{"2":{"171":4}}],["suppress",{"2":{"155":2}}],["suppressor",{"2":{"155":1,"195":1}}],["supported",{"2":{"151":1}}],["supertitle",{"2":{"33":2,"34":2,"35":3,"36":2}}],["surfacec",{"0":{"180":1}}],["surfaces",{"0":{"125":1,"136":1}}],["surface",{"0":{"124":1,"126":1,"127":1,"129":1,"130":1,"131":1},"2":{"103":4,"123":1,"124":1,"125":3,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":4,"135":2,"136":2,"154":2,"157":1,"178":1,"180":2,"181":1,"190":1}}],["surrounded",{"0":{"97":1}}],["sum",{"2":{"31":3,"102":2,"103":1}}],["s",{"0":{"130":1},"2":{"31":5,"78":9,"96":1,"103":13,"108":2,"139":3,"140":4,"141":1,"154":3,"165":1,"171":6,"182":1,"183":2}}],["score",{"2":{"101":1,"102":1}}],["scv",{"2":{"36":1}}],["sch",{"2":{"36":1}}],["scenekw",{"2":{"120":1}}],["scenekw=",{"2":{"97":1,"117":1,"118":3,"140":1,"187":1}}],["scene",{"0":{"188":1},"2":{"33":2,"34":1,"35":1,"36":3,"50":1,"91":1,"96":2,"97":1,"103":11,"107":1,"114":3,"117":3,"118":7,"126":2,"136":1,"153":8,"157":4,"171":4,"178":3,"187":5,"189":4}}],["scale=",{"2":{"71":1}}],["scale",{"0":{"34":1,"35":1,"36":1,"59":1,"61":1,"71":1},"2":{"32":2,"33":3,"34":1,"35":3,"36":1,"40":2,"44":1,"138":1}}],["scaless",{"2":{"143":1}}],["scales",{"0":{"32":1,"33":1,"60":1},"2":{"146":1}}],["scatterandline",{"2":{"141":2}}],["scatters",{"0":{"67":1,"70":1,"71":1,"75":1,"76":1,"138":1}}],["scatterlines",{"0":{"66":1,"68":1,"69":1},"2":{"65":2,"66":1,"67":1,"68":1,"69":1}}],["scatter",{"0":{"65":1,"66":1,"72":1,"74":1},"2":{"20":1,"22":1,"36":2,"39":2,"42":1,"62":1,"66":1,"67":1,"70":2,"71":1,"72":1,"73":1,"74":1,"75":1,"84":2,"139":2,"141":1,"142":1,"143":3,"155":1,"164":1,"165":1,"171":2}}],["screen=rprmakie",{"2":{"187":1}}],["screen",{"0":{"188":1},"2":{"8":1,"89":1,"90":1,"91":1,"94":1,"95":1,"96":1,"97":1,"103":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"152":1,"153":1,"154":1,"187":2}}],["sproj",{"2":{"182":1}}],["spring",{"2":{"11":1,"75":1}}],["space",{"2":{"171":1}}],["spacing",{"2":{"154":1}}],["span",{"2":{"141":1}}],["speed",{"0":{"143":1},"2":{"143":3}}],["specular",{"2":{"108":1}}],["species",{"2":{"72":2,"150":2,"151":1}}],["specialfunctions",{"2":{"53":1,"54":1,"78":1,"122":1,"195":1}}],["specify",{"2":{"31":2,"33":1,"137":3,"138":6}}],["spectral",{"2":{"6":1,"15":1,"23":1,"27":1,"51":1,"62":1,"63":1,"93":1,"104":1,"113":1,"128":1,"154":1}}],["spherical",{"0":{"135":1,"154":1},"2":{"135":1,"154":1}}],["sphereplanesky",{"0":{"188":1}}],["spheres",{"0":{"103":1}}],["spheretess",{"2":{"97":2,"186":1,"187":1}}],["sphere",{"0":{"97":1,"181":1,"186":1},"2":{"97":1,"113":4,"114":1,"153":3,"157":2,"186":1}}],["splitted",{"2":{"106":1}}],["split",{"0":{"125":1},"2":{"101":2,"171":2}}],["spiral",{"0":{"69":1,"91":1},"2":{"77":2,"194":2}}],["spot",{"2":{"33":2,"34":2,"35":2,"36":2}}],["stuff",{"2":{"187":1}}],["stl",{"2":{"153":1}}],["std",{"2":{"147":1}}],["stockchart",{"0":{"146":1},"2":{"146":1}}],["stop`",{"2":{"137":3,"138":6}}],["stop",{"2":{"89":1,"103":2,"137":6,"138":12,"140":2}}],["stop=1",{"2":{"71":1}}],["stern",{"2":{"167":1}}],["stemlinestyle",{"2":{"79":1,"193":1}}],["stemwidth",{"2":{"79":1,"143":1,"193":1}}],["stemcolormap",{"2":{"79":1,"193":1}}],["stemcolor",{"2":{"79":2,"143":1,"193":2}}],["stem",{"0":{"79":1},"2":{"79":3,"143":1,"193":3}}],["stepedges",{"2":{"31":3}}],["stepcenters",{"2":{"31":3}}],["step",{"2":{"31":1,"78":5,"156":1}}],["steplength",{"2":{"31":2}}],["steps",{"0":{"30":1},"2":{"31":6}}],["staff",{"2":{"177":1}}],["stavnichuk",{"2":{"155":1}}],["stack",{"2":{"150":1}}],["statistics",{"2":{"155":1,"171":1}}],["static",{"2":{"139":1}}],["status",{"2":{"139":1,"165":1,"195":2}}],["statsbase",{"2":{"172":1,"195":1}}],["stats",{"0":{"101":1},"2":{"101":2,"102":2,"147":2,"148":3}}],["stable",{"2":{"83":3}}],["stablevanderpaul",{"2":{"83":2}}],["stairs",{"0":{"78":1},"2":{"78":1}}],["starrynight",{"2":{"118":1}}],["star",{"0":{"110":1}}],["star5",{"2":{"75":1}}],["star4",{"2":{"75":1}}],["starts",{"2":{"155":1}}],["startvalue=2",{"2":{"153":1}}],["startvalue",{"2":{"152":1,"154":1}}],["start",{"2":{"8":1,"33":1,"34":1,"35":1,"36":1,"89":1,"137":6,"138":12}}],["strong",{"2":{"177":1}}],["strokevisible",{"2":{"147":1,"148":1}}],["strokecolor=",{"2":{"147":1,"171":1}}],["strokecolor",{"2":{"6":1,"7":1,"9":1,"11":2,"12":2,"18":1,"19":2,"20":1,"39":2,"40":2,"65":1,"66":1,"67":1,"74":1,"79":2,"86":1,"87":2,"88":1,"139":1,"142":1,"156":1,"171":1,"193":2}}],["strokewidth=0",{"2":{"42":3,"147":1,"171":1}}],["strokewidth",{"2":{"6":1,"7":1,"8":2,"9":1,"11":2,"12":2,"18":1,"19":2,"20":1,"39":2,"40":2,"41":1,"65":1,"66":1,"67":1,"74":1,"75":1,"79":2,"87":2,"88":1,"114":1,"139":1,"142":1,"151":1,"155":1,"156":1,"171":1,"193":2}}],["strange",{"0":{"172":1},"2":{"172":1}}],["straw",{"2":{"107":1}}],["structure",{"2":{"172":1}}],["struct",{"2":{"139":1}}],["streamplot",{"0":{"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"80":2,"81":1,"82":1,"83":1,"84":2,"190":2}}],["strength",{"2":{"0":5}}],["string",{"2":{"31":4,"38":2,"87":1,"101":1,"102":1,"139":5,"148":1,"155":2,"156":1,"171":3,"176":1}}],["strip",{"2":{"101":1}}],["striped",{"2":{"8":1}}],["stripped",{"0":{"8":1}}],["second",{"2":{"143":1}}],["seconds",{"2":{"139":2}}],["sec",{"2":{"139":1}}],["section",{"2":{"36":4}}],["sections",{"0":{"36":1},"2":{"36":2}}],["selection",{"2":{"154":1}}],["selector",{"2":{"101":2}}],["selected",{"2":{"33":1,"34":1,"35":1,"36":1}}],["seaborn",{"2":{"87":1,"105":1,"167":1}}],["several",{"0":{"87":1}}],["semi",{"2":{"83":1}}],["semistable",{"2":{"83":2}}],["series",{"0":{"77":1},"2":{"77":1,"145":1,"194":1}}],["serif",{"2":{"5":1,"48":1,"49":1,"52":1,"53":1,"54":1,"55":1,"58":1,"71":1,"81":1}}],["sepalwidth",{"2":{"72":1}}],["sepallength",{"2":{"72":1}}],["sepal",{"2":{"72":2}}],["segm",{"2":{"62":2,"116":2}}],["segg",{"2":{"15":2}}],["seem",{"2":{"138":1}}],["see",{"2":{"42":1,"139":1}}],["seed",{"2":{"6":1,"7":1,"8":1,"9":1,"11":1,"12":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"50":1,"60":1,"62":1,"63":1,"70":1,"71":1,"72":1,"74":1,"75":1,"77":1,"79":1,"87":1,"88":1,"113":1,"116":1,"117":2,"119":1,"120":1,"122":1,"142":1,"152":1,"177":1,"193":1,"194":1}}],["sets",{"0":{"120":1}}],["set",{"0":{"99":1,"168":1,"169":1,"170":1},"2":{"31":1,"33":1,"34":1,"35":1,"36":1,"103":1,"139":2,"166":2,"167":2,"168":2,"169":1,"170":1,"172":1}}],["set1",{"2":{"10":1,"86":1}}],["silver",{"2":{"112":2}}],["side",{"2":{"87":1,"137":3,"138":6}}],["sides",{"0":{"42":1,"132":1,"133":1},"2":{"87":2,"137":3,"138":6}}],["simplex",{"0":{"114":1}}],["simple",{"0":{"55":1,"68":1,"104":1},"2":{"94":1,"105":1}}],["sigma",{"2":{"5":2,"18":1}}],["sinu",{"2":{"183":1}}],["sind",{"2":{"157":2}}],["single",{"0":{"88":1,"94":1}}],["sinc",{"2":{"51":2}}],["sinc2d",{"2":{"51":2}}],["sin",{"2":{"1":1,"2":1,"3":2,"14":1,"16":2,"20":1,"45":2,"46":2,"47":2,"51":2,"52":2,"58":2,"59":1,"64":2,"65":2,"66":2,"67":2,"68":2,"69":1,"77":2,"84":1,"91":1,"92":1,"94":1,"96":6,"103":1,"123":1,"126":1,"127":1,"128":12,"129":1,"130":1,"135":4,"136":6,"140":2,"141":1,"154":4,"155":9,"157":3,"176":2,"178":3,"180":6,"181":3,"191":2,"192":2,"194":2}}],["sizexyz",{"2":{"100":2,"106":2}}],["size=",{"2":{"13":1,"14":1,"15":1,"16":1,"17":1,"42":1,"56":1,"60":1,"61":1,"62":1,"71":1,"72":1,"92":1,"93":1,"102":1,"109":1,"110":1,"111":1,"112":2,"117":1,"118":1,"126":1,"139":1,"143":1,"153":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"167":2,"169":1,"170":1,"179":1,"181":1,"182":1,"187":1,"189":2}}],["size",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":6,"34":5,"35":7,"36":5,"37":1,"38":1,"39":1,"40":2,"41":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"57":1,"58":1,"59":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"73":1,"74":1,"75":1,"77":1,"78":1,"79":1,"80":3,"81":2,"82":2,"83":2,"84":3,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"95":1,"96":1,"99":1,"103":1,"104":2,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1,"116":1,"119":1,"121":1,"122":1,"123":1,"124":1,"125":1,"128":1,"129":1,"130":1,"131":1,"134":1,"135":1,"136":1,"137":1,"138":1,"140":1,"141":1,"142":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":2,"152":1,"154":1,"155":2,"156":1,"157":1,"171":1,"175":1,"176":1,"177":1,"178":1,"180":1,"187":1,"190":3,"191":1,"192":1,"193":1,"194":1}}],["sqrt",{"2":{"0":1,"30":1,"46":2,"47":2,"51":2,"62":1,"81":1,"84":1,"103":1,"116":1,"128":1,"129":1,"130":1,"135":1,"139":2,"152":1,"154":1}}],["v5",{"2":{"195":1}}],["v6",{"2":{"195":1}}],["v3",{"2":{"195":1}}],["v1",{"2":{"195":13}}],["vgrid",{"2":{"154":1}}],["v₀",{"2":{"141":4}}],["v0",{"2":{"117":1,"195":27}}],["vts",{"2":{"108":2}}],["votes",{"2":{"101":3,"102":8}}],["vol2",{"2":{"138":2}}],["vol1",{"2":{"138":5}}],["volume",{"0":{"137":1,"138":1,"152":1},"2":{"137":1,"138":1,"152":1}}],["vol",{"2":{"89":2,"103":1,"137":4}}],["v2",{"2":{"81":2,"195":2}}],["vis",{"2":{"181":1}}],["visual",{"2":{"144":1,"145":1,"146":1,"147":1}}],["visualization",{"2":{"139":1,"143":1,"155":1,"157":1}}],["viz",{"2":{"171":2}}],["video",{"2":{"140":1}}],["viewmode=",{"2":{"181":1}}],["viewport",{"2":{"171":1}}],["views",{"0":{"134":1}}],["viewing",{"2":{"35":2}}],["violins",{"0":{"87":1}}],["violin",{"0":{"86":1,"88":1},"2":{"86":1,"87":3,"88":1}}],["viridis",{"2":{"22":2,"45":1,"46":1,"47":1,"70":1,"75":1,"83":1,"91":2,"125":1,"129":1,"131":1,"136":1,"167":1,"190":1}}],["vcat",{"2":{"32":1,"95":2,"103":3,"140":1,"157":1}}],["v",{"2":{"13":2,"35":5,"48":4,"49":3,"80":2,"96":19,"100":2,"104":2,"106":2,"113":4,"124":2,"126":9,"128":18,"129":9,"130":9,"136":19,"139":2,"140":5,"180":19}}],["versions",{"0":{"195":1},"2":{"195":1}}],["versus",{"2":{"177":1}}],["vertices",{"2":{"114":5}}],["vertical",{"0":{"12":1,"189":1},"2":{"11":1,"12":1,"24":1,"26":1,"28":1,"36":2,"47":2,"88":1,"155":1}}],["vehicles",{"2":{"155":6}}],["velocity",{"2":{"139":2}}],["venus",{"2":{"139":2,"143":1}}],["vec3f0",{"2":{"108":2}}],["vec3f",{"2":{"97":6,"100":2,"104":2,"106":2,"113":3,"114":2,"115":2,"117":1,"118":6,"119":2,"120":4,"121":2,"123":2,"127":2,"129":1,"130":1,"138":2,"140":2,"153":2,"178":1,"185":1,"186":2}}],["vector",{"2":{"31":3,"34":1,"36":1,"56":1}}],["vec2f",{"2":{"8":8,"100":1,"106":1}}],["vec",{"2":{"0":1,"44":3,"63":1,"115":1,"118":1,"119":2,"121":2,"138":4,"154":1,"175":2}}],["vat",{"2":{"98":1}}],["van",{"0":{"83":1}}],["varphi>0",{"2":{"77":1,"194":1}}],["varphi",{"2":{"77":4,"194":4}}],["variable",{"2":{"7":1,"12":2,"21":1,"22":1,"88":1,"142":1}}],["variables",{"2":{"6":1,"9":1}}],["valyear",{"2":{"155":6}}],["vals",{"2":{"118":10,"121":4}}],["valign",{"2":{"51":1,"155":1,"171":1}}],["valmax",{"2":{"36":4}}],["val",{"2":{"33":2,"34":1,"35":1,"36":3,"140":2}}],["valued",{"0":{"165":1}}],["value",{"2":{"33":1,"34":1,"35":1,"36":1,"39":4,"41":1,"43":1,"56":1,"70":2,"137":3,"138":6,"145":1,"152":1,"153":1,"154":4}}],["values",{"2":{"6":1,"7":1,"9":1,"12":2,"21":1,"22":1,"23":1,"26":1,"27":1,"28":1,"30":1,"32":1,"37":1,"38":1,"40":3,"56":1,"88":1,"121":1,"137":3,"138":6,"142":1,"148":1,"156":6,"172":1,"176":1}}],["vs",{"2":{"0":3}}],["yy",{"2":{"190":2}}],["ytrimspine",{"2":{"177":1}}],["ytickcolor",{"2":{"57":1}}],["ytickalign",{"2":{"52":1,"53":1,"54":1,"70":1}}],["yticklabelcolor",{"2":{"57":2}}],["yticklabelsize",{"2":{"50":1,"51":1,"75":1}}],["yticklabelrotation",{"2":{"11":1,"12":1}}],["yticksize",{"2":{"52":1,"53":1,"54":1}}],["yticks",{"2":{"11":1,"12":1,"24":1,"29":1,"31":2,"32":1,"33":2,"34":2,"35":3,"36":4,"37":1,"38":3,"50":1,"51":1,"75":1,"171":1}}],["y=",{"2":{"171":2}}],["y=8",{"2":{"171":1}}],["y=a",{"2":{"77":1,"194":1}}],["yd",{"2":{"171":2}}],["yg",{"2":{"155":3}}],["ygrid2",{"2":{"154":1}}],["ygrid",{"2":{"135":4,"154":3}}],["ygridcolor",{"2":{"125":1,"131":1,"156":1}}],["ygridcolor=",{"2":{"15":1}}],["ygridvisible",{"2":{"50":1,"51":1,"177":1}}],["ygridstyle",{"2":{"19":1,"22":1,"52":1,"53":1,"54":1,"59":1,"70":1}}],["ygridstyle=",{"2":{"15":1,"60":1,"61":1,"71":1,"156":1}}],["yne",{"2":{"155":2}}],["ynb",{"2":{"155":2}}],["yoff=120",{"2":{"171":1}}],["yoff=100",{"2":{"171":1}}],["yoff=250",{"2":{"171":3}}],["yoff",{"2":{"171":1}}],["yo",{"2":{"155":2}}],["your",{"0":{"99":1},"2":{"52":1,"54":1,"85":1,"114":5,"142":2}}],["you",{"2":{"52":1,"54":1,"114":5,"151":1}}],["yf",{"2":{"155":2,"166":2,"168":2}}],["yi",{"2":{"155":2,"166":2,"168":2}}],["yₗₘ",{"2":{"135":1,"154":1}}],["ypt",{"2":{"132":1,"133":1,"134":4}}],["ymnm",{"2":{"155":2}}],["ym",{"2":{"131":1,"155":3}}],["yminorticks=intervalsbetween",{"2":{"60":1,"61":1,"71":1}}],["yminorticksvisible=true",{"2":{"60":1,"61":1,"71":1}}],["yzpanelcolor",{"2":{"131":1}}],["y^4",{"2":{"111":1}}],["y^2",{"2":{"15":1,"37":1,"83":6,"89":1,"110":3,"111":3,"112":3,"118":1,"121":1,"125":2,"137":1,"190":2}}],["y3",{"2":{"103":2}}],["yaxisposition",{"2":{"36":2,"57":1}}],["yautolimitmargin",{"2":{"33":1,"34":1,"35":1,"36":2}}],["y0",{"2":{"33":2,"34":2,"35":2,"36":2,"173":2}}],["yedges",{"2":{"174":2,"176":1}}],["years",{"2":{"171":8}}],["year",{"2":{"155":4,"177":4}}],["yellow",{"2":{"8":1,"11":1,"164":1,"165":1}}],["yerr",{"2":{"6":2,"7":2,"9":2,"20":2,"21":2,"22":4}}],["ylow",{"2":{"171":6}}],["ylm",{"2":{"135":4,"154":1}}],["ylims",{"2":{"1":1,"42":1,"52":1,"54":1,"59":1,"71":1,"119":1,"139":2,"141":1,"143":1,"156":1,"171":1,"177":1}}],["yl",{"2":{"1":3}}],["ylabel=",{"2":{"15":1,"16":1,"17":1,"56":1,"60":1,"61":1,"71":1,"72":1}}],["ylabel=j",{"2":{"14":1}}],["ylabelsize",{"2":{"5":1,"33":1,"34":1,"35":1,"36":2,"48":1,"49":1,"52":1,"53":1,"54":1,"55":1,"58":1}}],["ylabel",{"2":{"0":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"9":1,"12":2,"19":2,"21":1,"22":1,"23":1,"26":1,"27":1,"28":1,"30":1,"32":1,"33":2,"34":2,"35":3,"36":2,"37":1,"39":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"58":1,"59":1,"63":1,"68":1,"69":1,"74":1,"81":1,"82":1,"83":1,"88":1,"121":1,"141":1,"142":1,"151":1,"171":1,"190":1,"191":1}}],["y2",{"2":{"1":4,"96":1,"103":12,"136":2,"180":2}}],["y1d",{"2":{"2":4,"51":2}}],["y1",{"2":{"1":4,"96":2,"126":4,"129":3,"130":4,"136":3,"180":2}}],["y",{"0":{"6":1,"7":1,"9":1,"21":1,"37":1,"60":1,"61":1,"71":1},"2":{"0":5,"2":2,"3":1,"4":4,"5":1,"6":3,"7":3,"9":3,"13":5,"14":11,"15":8,"16":16,"17":2,"18":1,"20":5,"21":3,"22":3,"23":1,"26":1,"27":1,"28":1,"30":3,"31":7,"32":3,"33":7,"34":9,"35":8,"36":16,"37":6,"40":1,"42":3,"47":1,"50":5,"51":9,"54":2,"59":3,"60":3,"61":3,"62":12,"63":1,"69":3,"70":2,"71":3,"74":1,"75":2,"77":2,"80":6,"81":12,"82":3,"83":10,"84":5,"89":5,"90":10,"91":4,"92":5,"93":3,"95":13,"103":2,"106":2,"108":2,"109":3,"110":1,"111":2,"112":3,"116":12,"117":2,"118":4,"119":4,"121":5,"122":7,"123":3,"124":3,"125":8,"127":3,"128":3,"131":5,"135":5,"136":1,"137":5,"138":7,"139":11,"141":3,"142":1,"147":3,"151":2,"152":2,"154":5,"155":3,"157":4,"166":2,"168":4,"171":8,"173":5,"174":3,"176":5,"177":3,"178":2,"181":2,"190":10,"191":3,"194":2}}],["yseps",{"2":{"116":2}}],["yscale=log10",{"2":{"60":1,"61":1,"71":1}}],["yscale",{"2":{"32":1}}],["ys",{"2":{"0":4,"48":4,"49":4,"152":2,"155":3,"164":2,"165":2,"171":2}}],["+datum=wgs84",{"2":{"183":1}}],["+q=4",{"2":{"183":1}}],["+alpha=2",{"2":{"183":1}}],["+m=1",{"2":{"183":1}}],["+m=2",{"2":{"183":1}}],["+o",{"2":{"183":3}}],["+path=1",{"2":{"183":1}}],["+path=2",{"2":{"183":1}}],["+proj=vitk1",{"2":{"183":1}}],["+proj=vandg4",{"2":{"183":1}}],["+proj=vandg3",{"2":{"183":1}}],["+proj=vandg2",{"2":{"183":1}}],["+proj=vandg",{"2":{"183":1}}],["+proj=urmfps",{"2":{"183":1}}],["+proj=urm5",{"2":{"183":1}}],["+proj=tpeqd",{"2":{"183":1}}],["+proj=tobmerc",{"2":{"183":1}}],["+proj=tmerc",{"2":{"183":1}}],["+proj=tissot",{"2":{"183":1}}],["+proj=times",{"2":{"183":1}}],["+proj=ortho",{"2":{"183":1}}],["+proj=ortel",{"2":{"183":1}}],["+proj=omerc",{"2":{"183":1}}],["+proj=oea",{"2":{"183":1}}],["+proj=ocea",{"2":{"183":1}}],["+proj=ob",{"2":{"183":1}}],["+proj=nicol",{"2":{"183":1}}],["+proj=nell",{"2":{"183":2}}],["+proj=natearth2",{"2":{"183":1}}],["+proj=natearth",{"2":{"183":1}}],["+proj=murd3",{"2":{"183":1}}],["+proj=murd1",{"2":{"183":1}}],["+proj=moll",{"2":{"183":1}}],["+proj=misrsom",{"2":{"183":1}}],["+proj=mill",{"2":{"183":1}}],["+proj=merc",{"2":{"183":1}}],["+proj=mbtfps",{"2":{"183":1}}],["+proj=mbtfpq",{"2":{"183":1}}],["+proj=mbtfpp",{"2":{"183":1}}],["+proj=mbt",{"2":{"183":2}}],["+proj=lsat",{"2":{"183":1}}],["+proj=loxim",{"2":{"183":1}}],["+proj=leac",{"2":{"183":1}}],["+proj=lcca",{"2":{"183":1}}],["+proj=lask",{"2":{"183":1}}],["+proj=larr",{"2":{"183":1}}],["+proj=lagrng",{"2":{"183":1}}],["+proj=laea",{"2":{"183":1}}],["+proj=kav7",{"2":{"183":1}}],["+proj=kav5",{"2":{"183":1}}],["+proj=isea",{"2":{"183":1}}],["+proj=imw",{"2":{"183":1}}],["+proj=igh",{"2":{"183":2}}],["+proj=hatano",{"2":{"183":1}}],["+proj=hammer",{"2":{"183":1}}],["+proj=guyou",{"2":{"183":1}}],["+proj=goode",{"2":{"183":1}}],["+proj=gn",{"2":{"183":1}}],["+proj=gins8",{"2":{"183":1}}],["+proj=geos",{"2":{"183":1}}],["+proj=gall",{"2":{"183":1}}],["+proj=fouc",{"2":{"183":2}}],["+proj=fahey",{"2":{"183":1}}],["+proj=euler",{"2":{"183":1}}],["+proj=eqearth",{"2":{"183":1}}],["+proj=eqdc",{"2":{"183":1}}],["+proj=eqc",{"2":{"183":1}}],["+proj=eck6",{"2":{"183":1}}],["+proj=eck5",{"2":{"183":1}}],["+proj=eck4",{"2":{"183":1}}],["+proj=eck3",{"2":{"183":1}}],["+proj=eck2",{"2":{"183":1}}],["+proj=eck1",{"2":{"183":1}}],["+proj=denoy",{"2":{"183":1}}],["+proj=comill",{"2":{"183":1}}],["+proj=collg",{"2":{"183":1}}],["+proj=chamb",{"2":{"183":1}}],["+proj=cea",{"2":{"183":1}}],["+proj=cass",{"2":{"183":1}}],["+proj=crast",{"2":{"182":1,"183":1}}],["+proj=bonne",{"2":{"183":1}}],["+proj=boggs",{"2":{"183":1}}],["+proj=bipc",{"2":{"183":1}}],["+proj=bertin1953",{"2":{"183":1}}],["+proj=bacon",{"2":{"183":1}}],["+proj=august",{"2":{"183":1}}],["+proj=apian",{"2":{"183":1}}],["+proj=aitoff",{"2":{"183":1}}],["+proj=airy",{"2":{"183":1}}],["+proj=aeqd",{"2":{"183":1}}],["+proj=aea",{"2":{"183":1}}],["+proj=adams",{"2":{"183":3}}],["+proj=sinu",{"2":{"182":1,"183":1}}],["+proj=rpoly",{"2":{"182":1,"183":1}}],["+proj=rouss",{"2":{"182":1,"183":1}}],["+proj=robin",{"2":{"182":1,"183":1}}],["+proj=qua",{"2":{"182":1,"183":1}}],["+proj=patterson",{"2":{"183":1}}],["+proj=putp6p",{"2":{"182":1,"183":1}}],["+proj=putp6",{"2":{"182":1,"183":1}}],["+proj=putp5p",{"2":{"182":1,"183":1}}],["+proj=putp5",{"2":{"182":1,"183":1}}],["+proj=putp4p",{"2":{"182":1,"183":1}}],["+proj=putp3p",{"2":{"182":1,"183":1}}],["+proj=putp3",{"2":{"182":1,"183":1}}],["+proj=putp2",{"2":{"182":1,"183":1}}],["+proj=putp1",{"2":{"182":1,"183":1}}],["+proj=poly",{"2":{"182":1,"183":1}}],["+proj=webmerc",{"2":{"183":1}}],["+proj=weren",{"2":{"182":1,"183":1}}],["+proj=wag7",{"2":{"183":1}}],["+proj=wag6",{"2":{"183":1}}],["+proj=wag5",{"2":{"183":1}}],["+proj=wag4",{"2":{"183":1}}],["+proj=wag3",{"2":{"183":1}}],["+proj=wag2",{"2":{"183":1}}],["+proj=wag1",{"2":{"183":1}}],["+proj=wintri",{"2":{"182":1,"183":1}}],["+proj=wink2",{"2":{"182":1,"183":1}}],["+proj=wink1",{"2":{"182":1,"183":1}}],["+ellps=grs80",{"2":{"183":1}}],["+n=0",{"2":{"183":2}}],["+n=2",{"2":{"183":1}}],["+n=3",{"2":{"183":1}}],["+ns",{"2":{"183":1}}],["+sweep=y",{"2":{"183":1}}],["+h=35785831",{"2":{"183":1}}],["+lsat=2",{"2":{"183":1}}],["+lon",{"2":{"183":5}}],["+lat",{"2":{"183":25}}],["+30",{"2":{"171":1}}],["+1",{"2":{"171":1}}],["+y",{"2":{"106":2}}],["+x",{"2":{"106":2}}],["+z",{"2":{"106":2}}],["+0",{"2":{"87":1,"171":2}}],["+=",{"2":{"73":1,"75":1,"84":2,"182":1}}],["+",{"0":{"66":1,"67":1,"131":2,"152":1,"154":1},"2":{"0":2,"1":3,"2":1,"3":2,"8":4,"11":1,"13":1,"14":2,"15":2,"17":2,"20":1,"31":1,"33":5,"34":5,"35":7,"36":9,"37":1,"50":1,"51":2,"52":2,"60":1,"62":3,"64":3,"69":2,"71":2,"75":1,"77":3,"78":5,"79":3,"80":3,"81":1,"83":13,"84":1,"89":2,"90":2,"91":1,"95":4,"96":5,"100":1,"103":16,"106":1,"108":1,"110":2,"111":7,"112":12,"116":4,"118":2,"119":2,"120":1,"121":2,"122":3,"124":2,"125":3,"126":2,"128":7,"129":2,"130":4,"135":1,"136":5,"137":2,"138":1,"139":3,"140":4,"143":2,"152":2,"154":1,"155":5,"157":7,"164":4,"165":2,"166":3,"168":4,"170":6,"171":7,"176":2,"177":1,"180":5,"190":1,"191":4,"192":3,"193":3,"194":3}}],["xedges",{"2":{"174":2,"176":1}}],["xerr",{"2":{"9":1,"20":2,"21":2,"22":1}}],["x=0",{"2":{"171":3}}],["x=a",{"2":{"77":1,"194":1}}],["xg",{"2":{"155":4}}],["xgridwidth",{"2":{"58":1}}],["xgridcolor",{"2":{"58":1,"125":1,"131":1,"156":1}}],["xgridcolor=",{"2":{"15":1}}],["xgridvisible",{"2":{"50":1,"51":1,"177":1}}],["xgridstyle",{"2":{"19":1,"22":1,"52":1,"53":1,"54":1,"58":1,"59":1,"70":1}}],["xgridstyle=",{"2":{"15":1,"60":1,"61":1,"71":1,"156":1}}],["xne",{"2":{"155":2}}],["xnb",{"2":{"155":2}}],["xo",{"2":{"155":3}}],["xf",{"2":{"155":2,"166":2,"168":2}}],["xi",{"2":{"155":2,"166":2,"168":2}}],["xpt",{"2":{"132":1,"133":1,"134":4}}],["xzpanelcolor",{"2":{"131":1}}],["xmnm",{"2":{"155":2}}],["xm",{"2":{"110":3,"111":3,"112":10,"131":1,"155":3}}],["xminorticks=intervalsbetween",{"2":{"60":1,"71":1}}],["xminorticks",{"2":{"59":1}}],["xminorticksvisible=true",{"2":{"60":1,"71":1}}],["xminorticksvisible",{"2":{"59":1}}],["x3",{"2":{"103":2}}],["x3c",{"2":{"31":4,"38":1,"48":1,"49":1,"62":1,"116":1,"125":2,"135":1,"139":7,"143":1,"146":1,"154":1,"155":4}}],["xx",{"2":{"103":10,"190":2}}],["x2",{"2":{"96":1,"103":12,"136":2,"180":2}}],["x26",{"2":{"41":1,"98":6,"103":4,"125":1,"157":1}}],["x1",{"2":{"96":2,"126":4,"129":3,"130":4,"136":3,"180":2}}],["x+y",{"2":{"92":1}}],["xcross",{"2":{"79":1,"193":1}}],["xyrange",{"2":{"167":1}}],["xybe",{"2":{"155":2}}],["xys",{"2":{"155":2}}],["xyzos",{"2":{"116":4}}],["xyos",{"2":{"62":4,"155":6}}],["xy",{"2":{"62":3,"95":1,"116":4,"125":1,"131":1,"164":1,"165":1,"190":1}}],["x^4",{"2":{"111":1}}],["x^",{"2":{"46":1,"47":1,"48":1,"49":1,"119":1}}],["x^2",{"2":{"15":1,"37":1,"55":2,"83":7,"89":1,"103":1,"110":3,"111":3,"112":3,"118":1,"121":1,"137":1,"138":1,"190":2}}],["xtickalign",{"2":{"52":1,"53":1,"54":1,"58":1,"70":1}}],["xticklabelsize",{"2":{"50":1,"51":1,"75":1}}],["xticklabelalign",{"2":{"38":1,"56":1}}],["xticklabelrotation",{"2":{"38":1,"56":1,"156":1}}],["xticksvisible",{"2":{"177":1}}],["xticksize",{"2":{"52":1,"53":1,"54":1,"58":1}}],["xticks",{"2":{"8":1,"10":1,"11":1,"12":1,"24":1,"29":1,"31":2,"32":1,"33":2,"34":2,"35":3,"36":4,"37":1,"38":7,"50":1,"51":1,"75":1,"86":1,"87":1,"88":1,"102":1,"156":1,"171":11,"177":1}}],["xreversed",{"2":{"36":2}}],["xautolimitmargin",{"2":{"33":1,"34":1,"35":1,"36":2}}],["x0am",{"2":{"98":1}}],["x0",{"2":{"33":2,"34":2,"35":2,"36":2,"173":2}}],["xlims",{"2":{"42":1,"52":1,"61":1,"119":1,"143":2,"156":1,"171":1,"177":1}}],["xl",{"2":{"1":3}}],["xlabelcolor",{"2":{"171":2}}],["xlabelpadding",{"2":{"52":1,"53":1,"54":1}}],["xlabel=",{"2":{"14":1,"15":1,"16":1,"17":1,"31":1,"56":1,"60":1,"61":1,"71":1,"72":1}}],["xlabelsize",{"2":{"5":1,"33":1,"34":1,"35":1,"36":2,"46":1,"48":1,"49":1,"52":1,"53":1,"54":1,"55":1,"58":1}}],["xlabel",{"2":{"0":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"9":1,"12":2,"19":2,"21":1,"22":1,"23":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":2,"34":2,"35":3,"36":4,"37":1,"39":4,"41":1,"43":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"58":1,"59":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"74":1,"81":1,"82":1,"83":1,"88":1,"102":1,"121":1,"141":1,"142":1,"171":2,"190":1,"191":1}}],["x",{"0":{"9":1,"21":1,"37":1,"56":1,"59":1,"60":1,"71":1},"2":{"0":5,"1":9,"2":6,"3":8,"4":6,"5":9,"6":4,"7":3,"8":3,"9":3,"10":2,"13":5,"14":12,"15":7,"16":16,"17":2,"18":1,"19":2,"20":7,"21":4,"22":3,"23":1,"26":1,"27":1,"28":1,"30":3,"31":18,"32":3,"33":7,"34":9,"35":8,"36":17,"37":6,"40":3,"42":4,"44":1,"45":12,"46":17,"47":17,"48":3,"49":3,"50":7,"51":15,"52":20,"53":6,"54":6,"55":4,"57":4,"58":7,"59":4,"60":5,"61":4,"62":14,"63":3,"65":8,"66":11,"67":11,"68":5,"69":3,"70":1,"71":6,"72":2,"74":1,"75":2,"77":2,"80":6,"81":15,"82":5,"83":9,"84":5,"86":2,"89":5,"90":12,"91":4,"92":6,"93":3,"95":15,"103":5,"106":2,"108":2,"109":3,"110":1,"111":2,"112":3,"116":14,"117":2,"118":4,"119":7,"121":5,"122":10,"123":3,"124":3,"125":11,"127":3,"128":3,"131":6,"135":3,"136":1,"137":5,"138":10,"141":3,"142":1,"147":3,"151":2,"152":2,"154":3,"155":3,"157":4,"166":2,"168":4,"171":4,"173":5,"174":3,"176":5,"177":2,"178":2,"181":2,"190":13,"191":3,"194":2}}],["xseps",{"2":{"116":2}}],["xscale=log10",{"2":{"60":1,"71":1}}],["xscale",{"2":{"32":1,"59":1}}],["xs",{"2":{"0":4,"48":5,"49":5,"152":2,"155":3,"164":2,"165":2}}],["3cb90ccd",{"2":{"195":1}}],["336ed68f",{"2":{"195":1}}],["3i",{"2":{"171":1}}],["3im",{"2":{"80":1}}],["3astro",{"2":{"155":1}}],["3kmlgn2",{"2":{"155":1}}],["39918",{"2":{"157":1}}],["39",{"2":{"143":1,"171":1,"185":1}}],["398",{"2":{"35":1}}],["3exp",{"2":{"122":2}}],["3maximum",{"2":{"102":1}}],["3π",{"2":{"79":1,"155":2,"193":1}}],["3d",{"0":{"89":1,"92":1,"93":1,"94":1,"95":1,"122":1,"149":1,"189":1},"2":{"51":1,"92":1,"94":1}}],["31c24e10",{"2":{"195":1}}],["31",{"2":{"42":1,"56":1,"176":1}}],["3600x1800",{"2":{"180":1}}],["3635691486652126556400",{"2":{"167":1}}],["3635691455538367401120",{"2":{"167":1}}],["361",{"2":{"97":1}}],["36",{"2":{"34":1,"36":1,"195":1}}],["3782b9",{"2":{"103":1}}],["37890",{"2":{"92":1}}],["37",{"2":{"33":1}}],["3265289052327473",{"2":{"167":1}}],["32642717997233067",{"2":{"167":1}}],["320",{"2":{"85":1}}],["32",{"2":{"33":1,"34":1,"36":1,"81":2,"82":2,"83":2,"157":1,"171":1,"176":2}}],["3476108223245338122665",{"2":{"167":1}}],["3476108223238668926295",{"2":{"167":1}}],["3475",{"2":{"139":1}}],["34",{"2":{"33":1,"176":1,"195":1}}],["30x30",{"0":{"162":1}}],["30f0",{"2":{"108":1}}],["30π",{"2":{"59":1,"61":1}}],["300",{"2":{"50":2,"156":1,"167":1,"170":1,"176":3}}],["3000",{"2":{"11":1,"12":1,"39":1,"41":1,"43":1,"88":1,"97":1,"141":1,"167":1}}],["30",{"2":{"33":2,"34":2,"36":2,"70":1,"78":1,"95":2,"128":1,"135":1,"139":2,"143":1,"154":2,"171":3,"177":1,"189":1}}],["38e38edf",{"2":{"195":1}}],["382",{"2":{"170":1}}],["3842",{"2":{"170":1}}],["380",{"2":{"35":1}}],["38",{"2":{"32":1,"33":1,"34":1,"36":1,"138":1}}],["35d6a980",{"2":{"195":1}}],["350",{"2":{"51":2,"74":1}}],["35",{"2":{"10":1,"11":1,"12":2,"34":1,"36":1,"86":1,"88":1,"103":1,"111":1,"112":1,"153":1,"155":1}}],["3x3",{"0":{"161":1}}],["3x",{"2":{"1":1,"52":2,"70":1}}],["3",{"2":{"0":8,"8":1,"11":3,"13":2,"14":5,"16":2,"18":2,"19":2,"25":1,"32":1,"33":4,"34":4,"35":1,"36":5,"38":1,"42":6,"47":5,"50":4,"53":1,"64":3,"70":1,"71":1,"78":1,"79":2,"80":1,"83":4,"84":6,"87":3,"90":10,"92":5,"93":3,"95":9,"97":1,"99":1,"100":5,"103":2,"104":1,"106":8,"107":1,"112":2,"113":9,"114":14,"116":2,"117":1,"118":2,"119":1,"122":8,"124":2,"128":4,"134":4,"135":1,"136":1,"138":2,"139":14,"140":3,"141":1,"143":1,"148":1,"151":1,"153":5,"154":1,"155":4,"157":3,"158":8,"159":4,"160":4,"167":1,"171":6,"176":4,"177":1,"178":1,"190":1,"192":2,"193":2,"195":5}}],["=false",{"2":{"171":1}}],["=30",{"2":{"162":1}}],["=dims",{"2":{"145":1}}],["=>renamer",{"2":{"145":1}}],["=>",{"2":{"139":10,"145":2,"146":3,"147":3,"150":1,"151":1,"177":8}}],["=1",{"2":{"125":2,"171":1}}],["=100",{"2":{"0":1}}],["=0$",{"2":{"109":1}}],["=rand",{"2":{"105":1}}],["=reverse",{"2":{"102":1}}],["==",{"2":{"10":1,"14":1,"19":1,"31":1,"38":1,"43":1,"72":1,"86":1,"103":2,"135":1,"151":1,"154":1}}],["=",{"2":{"0":20,"1":21,"2":12,"3":8,"4":13,"5":23,"6":12,"7":10,"8":16,"9":13,"10":14,"11":31,"12":37,"13":10,"14":7,"15":7,"16":12,"17":6,"18":13,"19":31,"20":24,"21":12,"22":17,"23":11,"24":16,"25":13,"26":15,"27":12,"28":14,"29":14,"30":11,"31":21,"32":31,"33":76,"34":81,"35":88,"36":117,"37":17,"38":27,"39":34,"40":31,"41":13,"42":6,"43":15,"44":11,"45":15,"46":27,"47":55,"48":24,"49":28,"50":21,"51":32,"52":21,"53":19,"54":21,"55":17,"56":8,"57":12,"58":21,"59":13,"60":2,"61":2,"62":22,"63":13,"64":14,"65":17,"66":20,"67":17,"68":9,"69":16,"70":26,"71":4,"72":8,"73":17,"74":13,"75":28,"76":4,"77":18,"78":21,"79":23,"80":24,"81":25,"82":12,"83":20,"84":29,"85":8,"86":14,"87":21,"88":17,"89":18,"90":26,"91":25,"92":8,"93":7,"94":6,"95":25,"96":19,"97":9,"98":17,"99":5,"100":7,"101":9,"102":16,"103":73,"104":15,"105":6,"106":17,"107":6,"108":10,"109":4,"110":4,"111":5,"112":14,"113":34,"114":20,"115":10,"116":45,"117":8,"118":15,"119":29,"120":5,"121":28,"122":21,"123":15,"124":18,"125":33,"126":12,"127":14,"128":11,"129":16,"130":18,"131":32,"132":11,"133":11,"134":20,"135":34,"136":51,"137":17,"138":45,"139":73,"140":19,"141":24,"142":18,"143":46,"144":2,"145":4,"146":9,"147":12,"148":14,"149":4,"150":7,"151":14,"152":30,"153":20,"154":53,"155":112,"156":27,"157":43,"158":6,"159":6,"160":7,"161":7,"162":7,"163":7,"164":10,"165":8,"166":4,"167":12,"168":4,"169":5,"170":6,"171":76,"173":6,"174":7,"175":10,"176":12,"177":43,"178":15,"179":2,"180":27,"181":12,"182":5,"183":1,"184":1,"185":1,"186":1,"187":2,"189":13,"190":39,"191":19,"192":14,"193":23,"194":18}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR54/assets/chunks/VPLocalSearchBox.tYq92Rk5.js b/previews/PR54/assets/chunks/VPLocalSearchBox.tYq92Rk5.js new file mode 100644 index 00000000..f13bc095 --- /dev/null +++ b/previews/PR54/assets/chunks/VPLocalSearchBox.tYq92Rk5.js @@ -0,0 +1,7 @@ +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{X as Rt,s as ne,h as ve,al as et,am as Ct,an as Mt,v as je,ao as At,d as Lt,G as ye,ap as tt,aq as Dt,ar as zt,x as Pt,as as Vt,y as Me,R as de,Q as we,at as jt,au as $t,Y as Bt,U as Wt,a1 as Kt,o as Q,b as Jt,j as x,a2 as Ut,k as D,av as qt,aw as Gt,ax as Qt,c as Z,n as st,e as _e,E as nt,F as it,a as he,t as fe,ay as Ht,p as Yt,l as Zt,az as rt,aA as Xt,aa as es,ag as ts,aB as ss,_ as ns}from"./framework.uXlnTO8a.js";import{u as is,c as rs}from"./theme.CfG94X52.js";const as={root:()=>Rt(()=>import("./@localSearchIndexroot.CPLF6U-Y.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=mt.join(","),gt=typeof Element>"u",re=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},ke=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},os=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&re.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),c=o.length?o:i.children,l=a(c,!0,s);s.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=re.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!ke(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&f){var b=a(v===!0?i.children:v.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||os(e))&&!wt(e)?0:e.tabIndex},cs=function(e,t){var s=ie(e);return s<0&&t&&!wt(e)?0:s},ls=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},us=function(e){return _t(e)&&e.type==="hidden"},ds=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},hs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var c=e.parentElement,l=Ne(e);if(c&&!c.shadowRoot&&n(c)===!0)return at(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=o}if(ms(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return at(e);return!1},bs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},ws=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,c=cs(o,i),l=i?a(n.candidates):o;c===0?i?t.push.apply(t,l):t.push(o):s.push({documentOrder:r,tabIndex:c,item:n,isScope:i,content:l})}),s.sort(ls).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},_s=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ys}):s=bt(e,t.includeContainer,$e.bind(null,t)),ws(s)},xs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Fe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ie)===!1?!1:$e(t,e)},Ss=mt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ss)===!1?!1:Fe(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function ot(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ct(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Ns=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},ks=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},me=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Fs=function(e){return me(e)&&!e.shiftKey},Os=function(e){return me(e)&&e.shiftKey},ut=function(e){return setTimeout(e,0)},dt=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},pe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?m-1:0),E=1;E=0)u=s.activeElement;else{var d=i.tabbableGroups[0],m=d&&d.firstTabbableNode;u=m||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=_s(u,r.tabbableOptions),m=xs(u,r.tabbableOptions),S=d.length>0?d[0]:void 0,E=d.length>0?d[d.length-1]:void 0,k=m.find(function(p){return ae(p)}),F=m.slice().reverse().find(function(p){return ae(p)}),M=!!d.find(function(p){return ie(p)>0});return{container:u,tabbableNodes:d,focusableNodes:m,posTabIndexesFound:M,firstTabbableNode:S,lastTabbableNode:E,firstDomTabbableNode:k,lastDomTabbableNode:F,nextTabbableNode:function(g){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,O=d.indexOf(g);return O<0?N?m.slice(m.indexOf(g)+1).find(function(P){return ae(P)}):m.slice(0,m.indexOf(g)).reverse().find(function(P){return ae(P)}):d[O+(N?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function T(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?T(d.shadowRoot):d},y=function T(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){T(v());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Ns(u)&&u.select()}},_=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},w=function(u){var d=u.target,m=u.event,S=u.isBackward,E=S===void 0?!1:S;d=d||xe(m),f();var k=null;if(i.tabbableGroups.length>0){var F=l(d,m),M=F>=0?i.containerGroups[F]:void 0;if(F<0)E?k=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:k=i.tabbableGroups[0].firstTabbableNode;else if(E){var p=dt(i.tabbableGroups,function(I){var L=I.firstTabbableNode;return d===L});if(p<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d,!1))&&(p=F),p>=0){var g=p===0?i.tabbableGroups.length-1:p-1,N=i.tabbableGroups[g];k=ie(d)>=0?N.lastTabbableNode:N.lastDomTabbableNode}else me(m)||(k=M.nextTabbableNode(d,!1))}else{var O=dt(i.tabbableGroups,function(I){var L=I.lastTabbableNode;return d===L});if(O<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d))&&(O=F),O>=0){var P=O===i.tabbableGroups.length-1?0:O+1,V=i.tabbableGroups[P];k=ie(d)>=0?V.firstTabbableNode:V.firstDomTabbableNode}else me(m)||(k=M.nextTabbableNode(d))}}else k=h("fallbackFocus");return k},R=function(u){var d=xe(u);if(!(l(d,u)>=0)){if(pe(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}pe(r.allowOutsideClick,u)||u.preventDefault()}},C=function(u){var d=xe(u),m=l(d,u)>=0;if(m||d instanceof Document)m&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var S,E=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var k=l(i.mostRecentlyFocusedNode),F=i.containerGroups[k].tabbableNodes;if(F.length>0){var M=F.findIndex(function(p){return p===i.mostRecentlyFocusedNode});M>=0&&(r.isKeyForward(i.recentNavEvent)?M+1=0&&(S=F[M-1],E=!1))}}else i.containerGroups.some(function(p){return p.tabbableNodes.some(function(g){return ie(g)>0})})||(E=!1);else E=!1;E&&(S=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(S||i.mostRecentlyFocusedNode||v())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var m=w({event:u,isBackward:d});m&&(me(u)&&u.preventDefault(),y(m))},H=function(u){if(ks(u)&&pe(r.escapeDeactivates,u)!==!1){u.preventDefault(),o.deactivate();return}(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){var d=xe(u);l(d,u)>=0||pe(r.clickOutsideDeactivates,u)||pe(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},j=function(){if(i.active)return lt.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?ut(function(){y(v())}):y(v()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",W,{capture:!0,passive:!1}),s.addEventListener("keydown",H,{capture:!0,passive:!1}),o},$=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",W,!0),s.removeEventListener("keydown",H,!0),o},Re=function(u){var d=u.some(function(m){var S=Array.from(m.removedNodes);return S.some(function(E){return E===i.mostRecentlyFocusedNode})});d&&y(v())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Re):void 0,U=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){A.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=c(u,"onActivate"),m=c(u,"onPostActivate"),S=c(u,"checkCanFocusTrap");S||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var E=function(){S&&f(),j(),U(),m==null||m()};return S?(S(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,$(),i.active=!1,i.paused=!1,U(),lt.deactivateTrap(n,o);var m=c(d,"onDeactivate"),S=c(d,"onPostDeactivate"),E=c(d,"checkCanReturnFocus"),k=c(d,"returnFocus","returnFocusOnDeactivate");m==null||m();var F=function(){ut(function(){k&&y(_(i.nodeFocusedBeforeActivation)),S==null||S()})};return k&&E?(E(_(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=c(u,"onPause"),m=c(u,"onPostPause");return i.paused=!0,d==null||d(),$(),U(),m==null||m(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=c(u,"onUnpause"),m=c(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),j(),U(),m==null||m(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(m){return typeof m=="string"?s.querySelector(m):m}),i.active&&f(),U(),this}},o.updateContainerElements(e),o};function Ms(a,e={}){let t;const{immediate:s,...n}=e,r=ne(!1),i=ne(!1),o=f=>t&&t.activate(f),c=f=>t&&t.deactivate(f),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},v=ve(()=>{const f=et(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=et(b);return typeof y=="string"?y:Ct(y)}).filter(Mt)});return je(v,f=>{f.length&&(t=Cs(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),At(()=>c()),{hasFocus:r,isPaused:i,activate:o,deactivate:c,pause:l,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const c=()=>{--i<=0&&n(o)};i||c(),r.forEach(l=>{ce.matches(l,this.exclude)?c():this.onIframeReady(l,h=>{t(l)&&(o++,s(h)),c()},c)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,c)=>{o.val===s&&(r=c,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],c=[],l,h,v=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;v();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(l,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>c.push(b),n)}),c.push(l);c.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const c=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,c):c()})}}let As=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),c=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&c!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(c)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(c)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,c=parseInt(e.start,10)-o;return c=c>i?i:c,n=c+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),c<0||n-c<0||c>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(c,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:c,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const c=e.nodes[o+1];if(typeof c>"u"||c.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(s>i.end?i.end:s)-i.start,v=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=v+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(c=>{c=c.node;let l;for(;(l=e.exec(c.textContent))!==null&&l[i]!=="";){if(!s(l[i],c))continue;let h=l.index;if(i!==0)for(let v=1;v{let c;for(;(c=e.exec(o.value))!==null&&c[i]!=="";){let l=c.index;if(i!==0)for(let v=1;vs(c[i],v),(v,f)=>{e.lastIndex=f,n(v)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,c)=>{let{start:l,end:h,valid:v}=this.checkWhitespaceRanges(o,i,r.value);v&&this.wrapRangeInMappedTextNode(r,l,h,f=>t(f,o,r.value.substring(l,h),c),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",c=l=>{let h=new RegExp(this.createRegExp(l),`gm${o}`),v=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,l,s,v),f=>{v++,s++,this.opt.each(f)},()=>{v===0&&this.opt.noMatch(l),r[i-1]===l?this.opt.done(s):c(r[r.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):c(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,c)=>this.opt.filter(r,i,o,c),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ls(a){const e=new As(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Te(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{l(s.next(h))}catch(v){i(v)}}function c(h){try{l(s.throw(h))}catch(v){i(v)}}function l(h){h.done?r(h.value):n(h.value).then(o,c)}l((s=s.apply(a,[])).next())})}const Ds="ENTRIES",xt="KEYS",St="VALUES",z="";class Le{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=oe(this._path);if(oe(t)===z)return{done:!1,value:this.result()};const s=e.get(oe(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=oe(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>oe(e)).filter(e=>e!==z).join("")}value(){return oe(this._path).node.get(z)}result(){switch(this._type){case St:return this.value();case xt:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const oe=a=>a[a.length-1],zs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const c=r*i;e:for(const l of a.keys())if(l===z){const h=n[c-1];h<=t&&s.set(o,[a.get(l),h])}else{let h=r;for(let v=0;vt)continue e}Et(a.get(l),e,t,s,n,h,i,o+l)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Oe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Je(s);for(const i of n.keys())if(i!==z&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ps(this._tree,e)}entries(){return new Le(this,Ds)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return zs(this._tree,e,t)}get(e){const t=Be(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Be(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Le(this,xt)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,De(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);return s.set(z,t(s.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);let n=s.get(z);return n===void 0&&s.set(z,n=t()),n}values(){return new Le(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Oe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==z&&e.startsWith(s))return t.push([a,s]),Oe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Oe(void 0,"",t)},Be=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Be(a.get(t),e.slice(t.length))},De=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Oe(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=Je(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==z&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=Je(a);s.set(n+e,t),s.delete(n)},Je=a=>a[a.length-1],Ue="or",Nt="and",Vs="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},Pe),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Ks),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ke,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const c=this.addDocumentId(o);this.saveStoredFields(c,e);for(const l of r){const h=t(e,l);if(h==null)continue;const v=s(h.toString(),l),f=this._fieldIds[l],b=new Set(v).size;this.addFieldLength(c,f,this._documentCount-1,b);for(const y of v){const _=n(y,l);if(Array.isArray(_))for(const w of _)this.addTerm(f,c,w);else _&&this.addTerm(f,c,_)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:c},l,h)=>(o.push(l),(h+1)%s===0?{chunk:[],promise:c.then(()=>new Promise(v=>setTimeout(v,0))).then(()=>this.addAll(o))}:{chunk:o,promise:c}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const c=this._idToShortId.get(o);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const l of r){const h=n(e,l);if(h==null)continue;const v=t(h.toString(),l),f=this._fieldIds[l],b=new Set(v).size;this.removeFieldLength(c,f,this._documentCount,b);for(const y of v){const _=s(y,l);if(Array.isArray(_))for(const w of _)this.removeTerm(f,c,w);else _&&this.removeTerm(f,c,_)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(o),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ke,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Te(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||We.batchSize,r=e.batchWait||We.batchWait;let i=1;for(const[o,c]of this._index){for(const[l,h]of c)for(const[v]of h)this._documentIds.has(v)||(h.size<=1?c.delete(l):h.delete(v));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(l=>setTimeout(l,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:c}]of s){const l=o.length||1,h={id:this._documentIds.get(r),score:i*l,terms:Object.keys(c),queryTerms:o,match:c};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(pt),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),c=s.get(o);c!=null?(c.score+=r,c.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:c}]of s)n.push({suggestion:r,terms:o,score:i/c});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Te(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(Pe.hasOwnProperty(e))return ze(Pe,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=Se(n),c._fieldLength=Se(r),c._storedFields=Se(i);for(const[l,h]of c._documentIds)c._idToShortId.set(h,l);for(const[l,h]of s){const v=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),v.set(parseInt(f,10),Se(b))}c._index.set(l,v)}return c}static loadJSAsync(e,t){return Te(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=yield Ee(n),c._fieldLength=yield Ee(r),c._storedFields=yield Ee(i);for(const[h,v]of c._documentIds)c._idToShortId.set(v,h);let l=0;for(const[h,v]of s){const f=new Map;for(const b of Object.keys(v)){let y=v[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ee(y))}++l%1e3===0&&(yield kt(0)),c._index.set(h,f)}return c})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:c}=e;if(c!==1&&c!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const l=new le(t);return l._documentCount=s,l._nextId=n,l._idToShortId=new Map,l._fieldIds=r,l._avgFieldLength=i,l._dirtCount=o||0,l._index=new X,l}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:c}=i,v=o(e).flatMap(f=>c(f)).filter(f=>!!f).map(Ws(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(v,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((_,w)=>Object.assign(Object.assign({},_),{[w]:ze(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:c}=s,{fuzzy:l,prefix:h}=Object.assign(Object.assign({},ht.weights),i),v=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,v,n,r,c);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const _=e.fuzzy===!0?.2:e.fuzzy,w=_<1?Math.min(o,Math.round(e.term.length*_)):_;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[_,w]of b){const R=_.length-e.term.length;if(!R)continue;y==null||y.delete(_);const C=h*_.length/(_.length+.3*R);this.termResults(e.term,_,C,e.termBoost,w,n,r,c,f)}if(y)for(const _ of y.keys()){const[w,R]=y.get(_);if(!R)continue;const C=l*_.length/(_.length+R);this.termResults(e.term,_,C,e.termBoost,w,n,r,c,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ue){if(e.length===0)return new Map;const s=t.toLowerCase(),n=js[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,c,l=new Map){if(r==null)return l;for(const h of Object.keys(i)){const v=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const _=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const C=b.get(w),J=this._fieldLength.get(w)[f],H=Bs(C,y,this._documentCount,J,_,c),W=s*n*v*R*H,j=l.get(w);if(j){j.score+=W,Js(j.terms,e);const $=ze(j.match,t);$?$.push(h):j.match[t]=[h]}else l.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return l}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,js={[Ue]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[Nt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Vs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},$s={k:1.2,b:.7,d:.5},Bs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:c}=r;return Math.log(1+(t-e+.5)/(e+.5))*(c+a*(i+1)/(a+i*(1-o+o*s/n)))},Ws=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},Pe={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Us),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ue,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:$s},Ks={combineWith:Nt,prefix:(a,e,t)=>e===t.length-1},We={batchSize:1e3,batchWait:10},Ke={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},We),Ke),Js=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Se=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ee=a=>Te(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield kt(0));return e}),kt=a=>new Promise(e=>setTimeout(e,a)),Us=/[\n\r\p{Z}\p{P}]+/u;class qs{constructor(e=10){Ce(this,"max");Ce(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const K=a=>(Yt("data-v-5b749456"),a=a(),Zt(),a),Gs=["aria-owns"],Qs={class:"shell"},Hs=["title"],Ys=K(()=>x("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Zs=[Ys],Xs={class:"search-actions before"},en=["title"],tn=K(()=>x("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),sn=[tn],nn=["placeholder"],rn={class:"search-actions"},an=["title"],on=K(()=>x("span",{class:"vpi-layout-list local-search-icon"},null,-1)),cn=[on],ln=["disabled","title"],un=K(()=>x("span",{class:"vpi-delete local-search-icon"},null,-1)),dn=[un],hn=["id","role","aria-labelledby"],fn=["aria-selected"],pn=["href","aria-label","onMouseenter","onFocusin"],vn={class:"titles"},mn=K(()=>x("span",{class:"title-icon"},"#",-1)),gn=["innerHTML"],bn=K(()=>x("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),yn={class:"title main"},wn=["innerHTML"],_n={key:0,class:"excerpt-wrapper"},xn={key:0,class:"excerpt",inert:""},Sn=["innerHTML"],En=K(()=>x("div",{class:"excerpt-gradient-bottom"},null,-1)),Tn=K(()=>x("div",{class:"excerpt-gradient-top"},null,-1)),In={key:0,class:"no-results"},Nn={class:"search-keyboard-shortcuts"},kn=["aria-label"],Fn=K(()=>x("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),On=[Fn],Rn=["aria-label"],Cn=K(()=>x("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Mn=[Cn],An=["aria-label"],Ln=K(()=>x("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),Dn=[Ln],zn=["aria-label"],Pn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var F,M;const t=e,s=ye(),n=ye(),r=ye(as),i=is(),{activate:o}=Ms(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:c,theme:l}=i,h=tt(async()=>{var p,g,N,O,P,V,I,L,q;return rt(le.loadJSON((N=await((g=(p=r.value)[c.value])==null?void 0:g.call(p)))==null?void 0:N.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((O=l.value.search)==null?void 0:O.provider)==="local"&&((V=(P=l.value.search.options)==null?void 0:P.miniSearch)==null?void 0:V.searchOptions)},...((I=l.value.search)==null?void 0:I.provider)==="local"&&((q=(L=l.value.search.options)==null?void 0:L.miniSearch)==null?void 0:q.options)}))}),f=ve(()=>{var p,g;return((p=l.value.search)==null?void 0:p.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableQueryPersistence)===!0}).value?ne(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((F=l.value.search)==null?void 0:F.provider)==="local"&&((M=l.value.search.options)==null?void 0:M.detailedView)===!0),y=ve(()=>{var p,g,N;return((p=l.value.search)==null?void 0:p.provider)==="local"&&(((g=l.value.search.options)==null?void 0:g.disableDetailedView)===!0||((N=l.value.search.options)==null?void 0:N.detailedView)===!1)}),_=ve(()=>{var g,N,O,P,V,I,L;const p=((g=l.value.search)==null?void 0:g.options)??l.value.algolia;return((V=(P=(O=(N=p==null?void 0:p.locales)==null?void 0:N[c.value])==null?void 0:O.translations)==null?void 0:P.button)==null?void 0:V.buttonText)||((L=(I=p==null?void 0:p.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=ye([]),R=ne(!1);je(f,()=>{R.value=!1});const C=tt(async()=>{if(n.value)return rt(new Ls(n.value))},null),J=new qs(16);Vt(()=>[h.value,f.value,b.value],async([p,g,N],O,P)=>{var ge,qe,Ge,Qe;(O==null?void 0:O[0])!==p&&J.clear();let V=!1;if(P(()=>{V=!0}),!p)return;w.value=p.search(g).slice(0,16),R.value=!0;const I=N?await Promise.all(w.value.map(B=>H(B.id))):[];if(V)return;for(const{id:B,mod:ee}of I){const te=B.slice(0,B.indexOf("#"));let Y=J.get(te);if(Y)continue;Y=new Map,J.set(te,Y);const G=ee.default??ee;if(G!=null&&G.render||G!=null&&G.setup){const se=Xt(G);se.config.warnHandler=()=>{},se.provide(es,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const He=document.createElement("div");se.mount(He),He.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ue=>{var Xe;const be=(Xe=ue.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(be==null?void 0:be.startsWith("#"))&&be.slice(1);if(!Ye)return;let Ze="";for(;(ue=ue.nextElementSibling)&&!/^h[1-6]$/i.test(ue.tagName);)Ze+=ue.outerHTML;Y.set(Ye,Ze)}),se.unmount()}if(V)return}const L=new Set;if(w.value=w.value.map(B=>{const[ee,te]=B.id.split("#"),Y=J.get(ee),G=(Y==null?void 0:Y.get(te))??"";for(const se in B.match)L.add(se);return{...B,text:G}}),await de(),V)return;await new Promise(B=>{var ee;(ee=C.value)==null||ee.unmark({done:()=>{var te;(te=C.value)==null||te.markRegExp(k(L),{done:B})}})});const q=((ge=s.value)==null?void 0:ge.querySelectorAll(".result .excerpt"))??[];for(const B of q)(qe=B.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(p){const g=ts(p.slice(0,p.indexOf("#")));try{if(!g)throw new Error(`Cannot find file for id: ${p}`);return{id:p,mod:await import(g)}}catch(N){return console.error(N),{id:p,mod:{}}}}const W=ne(),j=ve(()=>{var p;return((p=f.value)==null?void 0:p.length)<=0});function $(p=!0){var g,N;(g=W.value)==null||g.focus(),p&&((N=W.value)==null||N.select())}Me(()=>{$()});function Re(p){p.pointerType==="mouse"&&$()}const A=ne(-1),U=ne(!1);je(w,p=>{A.value=p.length?0:-1,T()});function T(){de(()=>{const p=document.querySelector(".result.selected");p==null||p.scrollIntoView({block:"nearest"})})}we("ArrowUp",p=>{p.preventDefault(),A.value--,A.value<0&&(A.value=w.value.length-1),U.value=!0,T()}),we("ArrowDown",p=>{p.preventDefault(),A.value++,A.value>=w.value.length&&(A.value=0),U.value=!0,T()});const u=jt();we("Enter",p=>{if(p.isComposing||p.target instanceof HTMLButtonElement&&p.target.type!=="submit")return;const g=w.value[A.value];if(p.target instanceof HTMLInputElement&&!g){p.preventDefault();return}g&&(u.go(g.id),t("close"))}),we("Escape",()=>{t("close")});const m=rs({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",p=>{p.preventDefault(),t("close")});const S=Bt(Wt?document.body:null);Me(()=>{de(()=>{S.value=!0,de().then(()=>o())})}),Kt(()=>{S.value=!1});function E(){f.value="",de().then(()=>$(!1))}function k(p){return new RegExp([...p].sort((g,N)=>N.length-g.length).map(g=>`(${ss(g)})`).join("|"),"gi")}return(p,g)=>{var N,O,P,V;return Q(),Jt(Ht,{to:"body"},[x("div",{ref_key:"el",ref:s,role:"button","aria-owns":(N=w.value)!=null&&N.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[x("div",{class:"backdrop",onClick:g[0]||(g[0]=I=>p.$emit("close"))}),x("div",Qs,[x("form",{class:"search-bar",onPointerup:g[4]||(g[4]=I=>Re(I)),onSubmit:g[5]||(g[5]=Ut(()=>{},["prevent"]))},[x("label",{title:_.value,id:"localsearch-label",for:"localsearch-input"},Zs,8,Hs),x("div",Xs,[x("button",{class:"back-button",title:D(m)("modal.backButtonTitle"),onClick:g[1]||(g[1]=I=>p.$emit("close"))},sn,8,en)]),qt(x("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":g[2]||(g[2]=I=>Qt(f)?f.value=I:null),placeholder:_.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,nn),[[Gt,D(f)]]),x("div",rn,[y.value?_e("",!0):(Q(),Z("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(m)("modal.displayDetails"),onClick:g[3]||(g[3]=I=>A.value>-1&&(b.value=!D(b)))},cn,10,an)),x("button",{class:"clear-button",type:"reset",disabled:j.value,title:D(m)("modal.resetButtonTitle"),onClick:E},dn,8,ln)])],32),x("ul",{ref_key:"resultsEl",ref:n,id:(O=w.value)!=null&&O.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(V=w.value)!=null&&V.length?"localsearch-label":void 0,class:"results",onMousemove:g[7]||(g[7]=I=>U.value=!1)},[(Q(!0),Z(it,null,nt(w.value,(I,L)=>(Q(),Z("li",{key:I.id,role:"option","aria-selected":A.value===L?"true":"false"},[x("a",{href:I.id,class:st(["result",{selected:A.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:q=>!U.value&&(A.value=L),onFocusin:q=>A.value=L,onClick:g[6]||(g[6]=q=>p.$emit("close"))},[x("div",null,[x("div",vn,[mn,(Q(!0),Z(it,null,nt(I.titles,(q,ge)=>(Q(),Z("span",{key:ge,class:"title"},[x("span",{class:"text",innerHTML:q},null,8,gn),bn]))),128)),x("span",yn,[x("span",{class:"text",innerHTML:I.title},null,8,wn)])]),D(b)?(Q(),Z("div",_n,[I.text?(Q(),Z("div",xn,[x("div",{class:"vp-doc",innerHTML:I.text},null,8,Sn)])):_e("",!0),En,Tn])):_e("",!0)])],42,pn)],8,fn))),128)),D(f)&&!w.value.length&&R.value?(Q(),Z("li",In,[he(fe(D(m)("modal.noResultsText"))+' "',1),x("strong",null,fe(D(f)),1),he('" ')])):_e("",!0)],40,hn),x("div",Nn,[x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.navigateUpKeyAriaLabel")},On,8,kn),x("kbd",{"aria-label":D(m)("modal.footer.navigateDownKeyAriaLabel")},Mn,8,Rn),he(" "+fe(D(m)("modal.footer.navigateText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.selectKeyAriaLabel")},Dn,8,An),he(" "+fe(D(m)("modal.footer.selectText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.closeKeyAriaLabel")},"esc",8,zn),he(" "+fe(D(m)("modal.footer.closeText")),1)])])])],8,Gs)])}}}),Kn=ns(Pn,[["__scopeId","data-v-5b749456"]]);export{Kn as default}; diff --git a/previews/PR54/assets/chunks/framework.uXlnTO8a.js b/previews/PR54/assets/chunks/framework.uXlnTO8a.js new file mode 100644 index 00000000..002f3ef7 --- /dev/null +++ b/previews/PR54/assets/chunks/framework.uXlnTO8a.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ne={},yt=[],Ae=()=>{},Mi=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),fe=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,z=(e,t)=>Ii.call(e,t),k=Array.isArray,_t=e=>Tn(e)==="[object Map]",Gs=e=>Tn(e)==="[object Set]",q=e=>typeof e=="function",ie=e=>typeof e=="string",Qe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Xs=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),Ys=Object.prototype.toString,Tn=e=>Ys.call(e),Pi=e=>Tn(e).slice(8,-1),zs=e=>Tn(e)==="[object Object]",Sr=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,vt=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),xn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ni=/-(\w)/g,Le=xn(e=>e.replace(Ni,(t,n)=>n?n.toUpperCase():"")),Fi=/\B([A-Z])/g,Ze=xn(e=>e.replace(Fi,"-$1").toLowerCase()),An=xn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fn=xn(e=>e?`on${An(e)}`:""),ze=(e,t)=>!Object.is(e,t),dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$i=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const Qs=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Tr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(ji);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function xr(e){let t="";if(ie(e))t=e;else if(k(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ki=e=>ie(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Ys||!q(e.toString))?eo(e)?ki(e.value):JSON.stringify(e,to,2):String(e),to=(e,t)=>eo(t)?to(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:Gs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:Qe(t)?kn(t):Z(t)&&!k(t)&&!zs(t)?String(t):t,kn=(e,t="")=>{var n;return Qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ee;class Ki{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){Ee=this}off(){Ee=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),tt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ct;try{return Xe=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Xe=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Gi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,at=Symbol(""),fr=Symbol("");function be(e,t,n){if(Xe&&ct){let r=yn.get(e);r||yn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=lo(()=>r.delete(n))),oo(ct,s)}}function Ve(e,t,n,r,s,o){const i=yn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((u,f)=>{(f==="length"||!Qe(f)&&f>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?Sr(n)&&l.push(i.get("length")):(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"delete":k(e)||(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"set":_t(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&io(c,4);Or()}function Xi(e,t){const n=yn.get(e);return n&&n.get(t)}const Yi=wr("__proto__,__v_isRef,__isVue"),co=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Qe)),es=zi();function zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){et(),Rr();const r=J(this)[t].apply(this,n);return Or(),tt(),r}}),e}function Ji(e){Qe(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class ao{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ul:po:o?ho:fo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Ji}const l=Reflect.get(t,n,r);return(Qe(n)?co.has(n):Yi(n))||(s||be(t,"get",n),o)?l:he(l)?i&&Sr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class uo extends ao{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=dt(o);if(!Tt(r)&&!dt(r)&&(o=J(o),r=J(r)),!k(t)&&he(o)&&!he(r))return c?!1:(o.value=r,!0)}const i=k(t)&&Sr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(ze(t,o)&&be(s,"get",t),be(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:jt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(ze(e,s)&&be(r,"has",e),be(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e,t=!1){!t&&!Tt(e)&&!dt(e)&&(e=J(e));const n=J(this);return Rn(n).has.call(n,e)||(n.add(e),Ve(n,"add",e,e)),this}function ns(e,t,n=!1){!n&&!Tt(t)&&!dt(t)&&(t=J(t));const r=J(this),{has:s,get:o}=Rn(r);let i=s.call(r,e);i||(e=J(e),i=s.call(r,e));const l=o.call(r,e);return r.set(e,t),i?ze(t,l)&&Ve(r,"set",e,t):Ve(r,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:jt;return!e&&be(l,"iterate",at),i.forEach((u,f)=>r.call(s,c(u),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=_t(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=s[e](...r),f=n?Lr:t?Pr:jt;return!t&&be(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=u.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ts,set:ns,delete:rs,clear:ss,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add(o){return ts.call(this,o,!0)},set(o,i){return ns.call(this,o,i,!0)},delete:rs,clear:ss,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[rl,sl,ol,il]=nl();function Mr(e,t){const n=t?e?il:ol:e?sl:rl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const ll={get:Mr(!1,!1)},cl={get:Mr(!1,!0)},al={get:Mr(!0,!1)};const fo=new WeakMap,ho=new WeakMap,po=new WeakMap,ul=new WeakMap;function fl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dl(e){return e.__v_skip||!Object.isExtensible(e)?0:fl(Pi(e))}function On(e){return dt(e)?e:Ir(e,!1,Zi,ll,fo)}function hl(e){return Ir(e,!1,tl,cl,ho)}function Ln(e){return Ir(e,!0,el,al,po)}function Ir(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=dl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function bt(e){return dt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function Tt(e){return!!(e&&e.__v_isShallow)}function go(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hn(e){return Object.isExtensible(e)&&Js(e,"__v_skip",!0),e}const jt=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class mo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>It(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&ze(t._value,t._value=t.effect.run())&&It(t,4),Nr(t),t.effect._dirtyLevel>=2&&It(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function pl(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=Ae):(r=e.get,s=e.set),new mo(r,s,o||!s,n)}function Nr(e){var t;Xe&&ct&&(e=J(e),oo(ct,(t=e.dep)!=null?t:e.dep=lo(()=>e.dep=void 0,e instanceof mo?e:void 0)))}function It(e,t=4,n,r){e=J(e);const s=e.dep;s&&io(s,t)}function he(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return yo(e,!1)}function Fr(e){return yo(e,!0)}function yo(e,t){return he(e)?e:new gl(e,t)}class gl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:jt(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||Tt(t)||dt(t);t=n?t:J(t),ze(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:jt(t),It(this,4))}}function _o(e){return he(e)?e.value:e}const ml={get:(e,t,n)=>_o(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return he(s)&&!he(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function vo(e){return bt(e)?e:new Proxy(e,ml)}class yl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>It(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _l(e){return new yl(e)}class vl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Xi(J(this._object),this._key)}}class bl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wl(e,t,n){return he(e)?e:q(e)?new bl(e):Z(e)&&arguments.length>1?El(e,t,n):oe(e)}function El(e,t,n){const r=e[t];return he(r)?r:new vl(e,t,n)}/** +* @vue/runtime-core v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Re(e,t,n,r){if(q(e)){const s=Ye(e,t,n,r);return s&&Xs(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=ge[r],o=Dt(s);oFe&&ge.splice(t,1)}function xl(e){k(e)?wt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),wo()}function os(e,t,n=Vt?Fe+1:0){for(;nDt(n)-Dt(r));if(wt.length=0,Ke){Ke.push(...t);return}for(Ke=t,it=0;ite.id==null?1/0:e.id,Al=(e,t)=>{const n=Dt(e)-Dt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Eo(e){dr=!1,Vt=!0,ge.sort(Al);try{for(Fe=0;Fe{r._d&&_s(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&_s(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function au(e,t){if(ue===null)return e;const n=Vn(ue),r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Ro(()=>{e.isUnmounting=!0}),e}const Se=[Function,Array],Co={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Se,onEnter:Se,onAfterEnter:Se,onEnterCancelled:Se,onBeforeLeave:Se,onLeave:Se,onAfterLeave:Se,onLeaveCancelled:Se,onBeforeAppear:Se,onAppear:Se,onAfterAppear:Se,onAppearCancelled:Se},So=e=>{const t=e.subTree;return t.component?So(t.component):t},Ll={name:"BaseTransition",props:Co,setup(e,{slots:t}){const n=jn(),r=Ol();return()=>{const s=t.default&&xo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==ye){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Kn(o);const c=is(o);if(!c)return Kn(o);let u=hr(c,i,r,n,m=>u=m);bn(c,u);const f=n.subTree,h=f&&is(f);if(h&&h.type!==ye&&!lt(c,h)&&So(n).type!==ye){const m=hr(h,i,r,n);if(bn(h,m),l==="out-in"&&c.type!==ye)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Kn(o);l==="in-out"&&c.type!==ye&&(m.delayLeave=(_,w,O)=>{const U=To(r,h);U[String(h.key)]=h,_[We]=()=>{w(),_[We]=void 0,delete u.delayedLeave},u.delayedLeave=O})}return o}}},Ml=Ll;function To(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:w,onLeaveCancelled:O,onBeforeAppear:U,onAppear:W,onAfterAppear:H,onAppearCancelled:p}=t,y=String(e.key),I=To(n,e),x=(M,v)=>{M&&Re(M,r,9,v)},F=(M,v)=>{const P=v[1];x(M,v),k(M)?M.every(T=>T.length<=1)&&P():M.length<=1&&P()},V={mode:i,persisted:l,beforeEnter(M){let v=c;if(!n.isMounted)if(o)v=U||c;else return;M[We]&&M[We](!0);const P=I[y];P&<(e,P)&&P.el[We]&&P.el[We](),x(v,[M])},enter(M){let v=u,P=f,T=h;if(!n.isMounted)if(o)v=W||u,P=H||f,T=p||h;else return;let K=!1;const ee=M[nn]=re=>{K||(K=!0,re?x(T,[M]):x(P,[M]),V.delayedLeave&&V.delayedLeave(),M[nn]=void 0)};v?F(v,[M,ee]):ee()},leave(M,v){const P=String(e.key);if(M[nn]&&M[nn](!0),n.isUnmounting)return v();x(m,[M]);let T=!1;const K=M[We]=ee=>{T||(T=!0,v(),ee?x(O,[M]):x(w,[M]),M[We]=void 0,I[P]===e&&delete I[P])};I[P]=e,_?F(_,[M,K]):K()},clone(M){const v=hr(M,t,n,r,s);return s&&s(v),v}};return V}function Kn(e){if(qt(e))return e=Je(e),e.children=null,e}function is(e){if(!qt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function bn(e,t){e.shapeFlag&6&&e.component?bn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function xo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function uu(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,u,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((O,U)=>{l(w,()=>O(h()),()=>U(w),f+1)});throw w}).then(w=>_!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),u=w,w)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return u},setup(){const _=ae;if(u)return()=>Wn(u,_);const w=H=>{c=null,Wt(H,_,13,!r)};if(i&&_.suspense||Xt)return m().then(H=>()=>Wn(H,_)).catch(H=>(w(H),()=>r?le(r,{error:H}):null));const O=oe(!1),U=oe(),W=oe(!!s);return s&&setTimeout(()=>{W.value=!1},s),o!=null&&setTimeout(()=>{if(!O.value&&!U.value){const H=new Error(`Async component timed out after ${o}ms.`);w(H),U.value=H}},o),m().then(()=>{O.value=!0,_.parent&&qt(_.parent.vnode)&&(_.parent.effect.dirty=!0,In(_.parent.update))}).catch(H=>{w(H),U.value=H}),()=>{if(O.value&&u)return Wn(u,_);if(U.value&&r)return le(r,{error:U.value});if(n&&!W.value)return le(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=le(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function Il(e,t){Ao(e,"a",t)}function Pl(e,t){Ao(e,"da",t)}function Ao(e,t,n=ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Nn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&Nl(r,t,n,s),s=s.parent}}function Nl(e,t,n,r){const s=Nn(t,e,r,!0);Fn(()=>{Cr(r[t],s)},n)}function Nn(e,t,n=ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{et();const l=Gt(n),c=Re(t,n,e,i);return l(),tt(),c});return r?s.unshift(o):s.push(o),o}}const De=e=>(t,n=ae)=>{(!Xt||e==="sp")&&Nn(e,(...r)=>t(...r),n)},Fl=De("bm"),At=De("m"),$l=De("bu"),Hl=De("u"),Ro=De("bum"),Fn=De("um"),jl=De("sp"),Vl=De("rtg"),Dl=De("rtc");function Ul(e,t=ae){Nn("ec",e,t)}const Oo="components";function fu(e,t){return Mo(Oo,e,!0,t)||e}const Lo=Symbol.for("v-ndc");function du(e){return ie(e)?Mo(Oo,e,!1)||e:e||Lo}function Mo(e,t,n=!0,r=!1){const s=ue||ae;if(s){const o=s.type;{const l=Pc(o,!1);if(l&&(l===t||l===Le(t)||l===An(Le(t))))return o}const i=ls(s[e]||o[e],t)||ls(s.appContext[e],t);return!i&&r?o:i}}function ls(e,t){return e&&(e[t]||e[Le(t)]||e[An(Le(t))])}function hu(e,t,n,r){let s;const o=n;if(k(e)||ie(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lCn(t)?!(t.type===ye||t.type===ve&&!Io(t.children)):!0)?e:null}function gu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:fn(r)]=e[r];return n}const pr=e=>e?oi(e)?Vn(e):pr(e.parent):null,Pt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pr(e.parent),$root:e=>pr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,In(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>gc.bind(e)}),qn=(e,t)=>e!==ne&&!e.__isScriptSetup&&z(e,t),Bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==ne&&z(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&z(u,t))return i[t]=3,o[t];if(n!==ne&&z(n,t))return i[t]=4,n[t];gr&&(i[t]=0)}}const f=Pt[t];let h,m;if(f)return t==="$attrs"&&be(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ne&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==ne&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ne&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(Pt,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function mu(){return kl().slots}function kl(){const e=jn();return e.setupContext||(e.setupContext=li(e))}function cs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gr=!0;function Kl(e){const t=jr(e),n=e.proxy,r=e.ctx;gr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:w,activated:O,deactivated:U,beforeDestroy:W,beforeUnmount:H,destroyed:p,unmounted:y,render:I,renderTracked:x,renderTriggered:F,errorCaptured:V,serverPrefetch:M,expose:v,inheritAttrs:P,components:T,directives:K,filters:ee}=t;if(u&&Wl(u,r,null),i)for(const Y in i){const B=i[Y];q(B)&&(r[Y]=B.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(gr=!0,o)for(const Y in o){const B=o[Y],de=q(B)?B.bind(n,n):q(B.get)?B.get.bind(n,n):Ae,Yt=!q(B)&&q(B.set)?B.set.bind(n):Ae,nt=se({get:de,set:Yt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Ie=>nt.value=Ie})}if(l)for(const Y in l)Po(l[Y],r,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(B=>{Jl(B,Y[B])})}f&&as(f,e,"c");function D(Y,B){k(B)?B.forEach(de=>Y(de.bind(n))):B&&Y(B.bind(n))}if(D(Fl,h),D(At,m),D($l,_),D(Hl,w),D(Il,O),D(Pl,U),D(Ul,V),D(Dl,x),D(Vl,F),D(Ro,H),D(Fn,y),D(jl,M),k(v))if(v.length){const Y=e.exposed||(e.exposed={});v.forEach(B=>{Object.defineProperty(Y,B,{get:()=>n[B],set:de=>n[B]=de})})}else e.exposed||(e.exposed={});I&&e.render===Ae&&(e.render=I),P!=null&&(e.inheritAttrs=P),T&&(e.components=T),K&&(e.directives=K)}function Wl(e,t,n=Ae){k(e)&&(e=mr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=St(s.from||r,s.default,!0):o=St(s.from||r):o=St(s),he(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Re(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Po(e,t,n,r){const s=r.includes(".")?zo(n,r):()=>n[r];if(ie(e)){const o=t[e];q(o)&&$e(s,o)}else if(q(e))$e(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Po(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&$e(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(u=>wn(c,u,i,!0)),wn(c,t,i)),Z(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ql={data:us,props:fs,emits:fs,methods:Mt,computed:Mt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Mt,directives:Mt,watch:Xl,provide:us,inject:Gl};function us(e,t){return t?e?function(){return fe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return Mt(mr(e),mr(t))}function mr(e){if(k(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const Fo={},$o=()=>Object.create(Fo),Ho=e=>Object.getPrototypeOf(e)===Fo;function Ql(e,t,n,r=!1){const s={},o=$o();e.propsDefaults=Object.create(null),jo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Zl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=Vo(h,t,!0);fe(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,yt),yt;if(k(o))for(let f=0;fe[0]==="_"||e==="$stable",Vr=e=>k(e)?e.map(xe):[xe(e)],tc=(e,t,n)=>{if(t._n)return t;const r=Rl((...s)=>Vr(t(...s)),n);return r._c=!1,r},Uo=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Do(s))continue;const o=e[s];if(q(o))t[s]=tc(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Bo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},ko=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},nc=(e,t,n)=>{const r=e.slots=$o();if(e.vnode.shapeFlag&32){const s=t._;s?(ko(r,t,n),n&&Js(r,"_",s,!0)):Uo(t,r)}else t&&Bo(e,t)},rc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ne;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:ko(s,t,n):(o=!t.$stable,Uo(t,s)),i=t}else t&&(Bo(e,t),i={default:1});if(o)for(const l in s)!Do(l)&&i[l]==null&&delete s[l]};function En(e,t,n,r,s=!1){if(k(e)){e.forEach((m,_)=>En(m,t&&(k(t)?t[_]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,u=t&&t.r,f=l.refs===ne?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(ie(u)?(f[u]=null,z(h,u)&&(h[u]=null)):he(u)&&(u.value=null)),q(c))Ye(c,l,12,[i,f]);else{const m=ie(c),_=he(c);if(m||_){const w=()=>{if(e.f){const O=m?z(h,c)?h[c]:f[c]:c.value;s?k(O)&&Cr(O,o):k(O)?O.includes(o)||O.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,_e(w,n)):w()}}}const Ko=Symbol("_vte"),sc=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),hs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ps=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},oc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,u){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:w,createText:O,createComment:U}}=u,W=Nt(t.props);let{shapeFlag:H,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=O(""),x=t.anchor=O("");_(I,n,r),_(x,n,r);const F=t.target=_r(t.props,w),V=qo(F,t,O,_);F&&(i==="svg"||hs(F)?i="svg":(i==="mathml"||ps(F))&&(i="mathml"));const M=(v,P)=>{H&16&&f(p,v,P,s,o,i,l,c)};W?M(n,x):F&&M(F,V)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,x=t.target=e.target,F=t.targetAnchor=e.targetAnchor,V=Nt(e.props),M=V?n:x,v=V?I:F;if(i==="svg"||hs(x)?i="svg":(i==="mathml"||ps(x))&&(i="mathml"),y?(m(e.dynamicChildren,y,M,s,o,i,l),Dr(e,t,!0)):c||h(e,t,M,v,s,o,i,l,!1),W)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):rn(t,n,I,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=_r(t.props,w);P&&rn(t,P,null,u,0)}else V&&rn(t,x,F,u,1)}Wo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:u,targetAnchor:f,target:h,props:m}=e;if(h&&(s(u),s(f)),o&&s(c),i&16){const _=o||!Nt(m);for(let w=0;w{gs||(console.error("Hydration completed but contains mismatches."),gs=!0)},lc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(lc(e))return"svg";if(cc(e))return"mathml"},on=e=>e.nodeType===8;function ac(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,I,x,F,V=!1)=>{V=V||!!y.dynamicChildren;const M=on(p)&&p.data==="[",v=()=>O(p,y,I,x,F,M),{type:P,ref:T,shapeFlag:K,patchFlag:ee}=y;let re=p.nodeType;y.el=p,ee===-2&&(V=!1,y.dynamicChildren=null);let D=null;switch(P){case ut:re!==3?y.children===""?(c(y.el=s(""),i(p),p),D=p):D=v():(p.data!==y.children&&(gt(),p.data=y.children),D=o(p));break;case ye:H(p)?(D=o(p),W(y.el=p.content.firstChild,p,I)):re!==8||M?D=v():D=o(p);break;case Ft:if(M&&(p=o(p),re=p.nodeType),re===1||re===3){D=p;const Y=!y.children.length;for(let B=0;B{V=V||!!y.dynamicChildren;const{type:M,props:v,patchFlag:P,shapeFlag:T,dirs:K,transition:ee}=y,re=M==="input"||M==="option";if(re||P!==-1){K&&Ne(y,null,I,"created");let D=!1;if(H(p)){D=Xo(x,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const B=p.content.firstChild;D&&ee.beforeEnter(B),W(B,p,I),y.el=p=B}if(T&16&&!(v&&(v.innerHTML||v.textContent))){let B=_(p.firstChild,y,p,I,x,F,V);for(;B;){gt();const de=B;B=B.nextSibling,l(de)}}else T&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(v){if(re||!V||P&48){const B=p.tagName.includes("-");for(const de in v)(re&&(de.endsWith("value")||de==="indeterminate")||Kt(de)&&!vt(de)||de[0]==="."||B)&&r(p,de,null,v[de],void 0,I)}else if(v.onClick)r(p,"onClick",null,v.onClick,void 0,I);else if(P&4&&bt(v.style))for(const B in v.style)v.style[B]}let Y;(Y=v&&v.onVnodeBeforeMount)&&Te(Y,I,y),K&&Ne(y,null,I,"beforeMount"),((Y=v&&v.onVnodeMounted)||K||D)&&Qo(()=>{Y&&Te(Y,I,y),D&&ee.enter(p),K&&Ne(y,null,I,"mounted")},x)}return p.nextSibling},_=(p,y,I,x,F,V,M)=>{M=M||!!y.dynamicChildren;const v=y.children,P=v.length;for(let T=0;T{const{slotScopeIds:M}=y;M&&(F=F?F.concat(M):M);const v=i(p),P=_(o(p),y,v,I,x,F,V);return P&&on(P)&&P.data==="]"?o(y.anchor=P):(gt(),c(y.anchor=u("]"),v,P),P)},O=(p,y,I,x,F,V)=>{if(gt(),y.el=null,V){const P=U(p);for(;;){const T=o(p);if(T&&T!==P)l(T);else break}}const M=o(p),v=i(p);return l(p),n(null,y,v,M,I,x,sn(v),F),M},U=(p,y="[",I="]")=>{let x=0;for(;p;)if(p=o(p),p&&on(p)&&(p.data===y&&x++,p.data===I)){if(x===0)return o(p);x--}return p},W=(p,y,I)=>{const x=y.parentNode;x&&x.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},H=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const _e=Qo;function uc(e){return Go(e)}function fc(e){return Go(e,ac)}function Go(e,t){const n=Qs();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=Ae,insertStaticContent:w}=e,O=(a,d,g,C=null,b=null,S=null,L=void 0,A=null,R=!!d.dynamicChildren)=>{if(a===d)return;a&&!lt(a,d)&&(C=zt(a),Ie(a,b,S,!0),a=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:N,shapeFlag:j}=d;switch(E){case ut:U(a,d,g,C);break;case ye:W(a,d,g,C);break;case Ft:a==null&&H(d,g,C,L);break;case ve:T(a,d,g,C,b,S,L,A,R);break;default:j&1?I(a,d,g,C,b,S,L,A,R):j&6?K(a,d,g,C,b,S,L,A,R):(j&64||j&128)&&E.process(a,d,g,C,b,S,L,A,R,ht)}N!=null&&b&&En(N,a&&a.ref,S,d||a,!d)},U=(a,d,g,C)=>{if(a==null)r(d.el=l(d.children),g,C);else{const b=d.el=a.el;d.children!==a.children&&u(b,d.children)}},W=(a,d,g,C)=>{a==null?r(d.el=c(d.children||""),g,C):d.el=a.el},H=(a,d,g,C)=>{[a.el,a.anchor]=w(a.children,d,g,C,a.el,a.anchor)},p=({el:a,anchor:d},g,C)=>{let b;for(;a&&a!==d;)b=m(a),r(a,g,C),a=b;r(d,g,C)},y=({el:a,anchor:d})=>{let g;for(;a&&a!==d;)g=m(a),s(a),a=g;s(d)},I=(a,d,g,C,b,S,L,A,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),a==null?x(d,g,C,b,S,L,A,R):M(a,d,b,S,L,A,R)},x=(a,d,g,C,b,S,L,A)=>{let R,E;const{props:N,shapeFlag:j,transition:$,dirs:G}=a;if(R=a.el=i(a.type,S,N&&N.is,N),j&8?f(R,a.children):j&16&&V(a.children,R,null,C,b,Gn(a,S),L,A),G&&Ne(a,null,C,"created"),F(R,a,a.scopeId,L,C),N){for(const te in N)te!=="value"&&!vt(te)&&o(R,te,null,N[te],S,C);"value"in N&&o(R,"value",null,N.value,S),(E=N.onVnodeBeforeMount)&&Te(E,C,a)}G&&Ne(a,null,C,"beforeMount");const X=Xo(b,$);X&&$.beforeEnter(R),r(R,d,g),((E=N&&N.onVnodeMounted)||X||G)&&_e(()=>{E&&Te(E,C,a),X&&$.enter(R),G&&Ne(a,null,C,"mounted")},b)},F=(a,d,g,C,b)=>{if(g&&_(a,g),C)for(let S=0;S{for(let E=R;E{const A=d.el=a.el;let{patchFlag:R,dynamicChildren:E,dirs:N}=d;R|=a.patchFlag&16;const j=a.props||ne,$=d.props||ne;let G;if(g&&rt(g,!1),(G=$.onVnodeBeforeUpdate)&&Te(G,g,d,a),N&&Ne(d,a,g,"beforeUpdate"),g&&rt(g,!0),(j.innerHTML&&$.innerHTML==null||j.textContent&&$.textContent==null)&&f(A,""),E?v(a.dynamicChildren,E,A,g,C,Gn(d,b),S):L||B(a,d,A,null,g,C,Gn(d,b),S,!1),R>0){if(R&16)P(A,j,$,g,b);else if(R&2&&j.class!==$.class&&o(A,"class",null,$.class,b),R&4&&o(A,"style",j.style,$.style,b),R&8){const X=d.dynamicProps;for(let te=0;te{G&&Te(G,g,d,a),N&&Ne(d,a,g,"updated")},C)},v=(a,d,g,C,b,S,L)=>{for(let A=0;A{if(d!==g){if(d!==ne)for(const S in d)!vt(S)&&!(S in g)&&o(a,S,d[S],null,b,C);for(const S in g){if(vt(S))continue;const L=g[S],A=d[S];L!==A&&S!=="value"&&o(a,S,A,L,b,C)}"value"in g&&o(a,"value",d.value,g.value,b)}},T=(a,d,g,C,b,S,L,A,R)=>{const E=d.el=a?a.el:l(""),N=d.anchor=a?a.anchor:l("");let{patchFlag:j,dynamicChildren:$,slotScopeIds:G}=d;G&&(A=A?A.concat(G):G),a==null?(r(E,g,C),r(N,g,C),V(d.children||[],g,N,b,S,L,A,R)):j>0&&j&64&&$&&a.dynamicChildren?(v(a.dynamicChildren,$,g,b,S,L,A),(d.key!=null||b&&d===b.subTree)&&Dr(a,d,!0)):B(a,d,g,N,b,S,L,A,R)},K=(a,d,g,C,b,S,L,A,R)=>{d.slotScopeIds=A,a==null?d.shapeFlag&512?b.ctx.activate(d,g,C,L,R):ee(d,g,C,b,S,L,R):re(a,d,R)},ee=(a,d,g,C,b,S,L)=>{const A=a.component=Oc(a,C,b);if(qt(a)&&(A.ctx.renderer=ht),Lc(A,!1,L),A.asyncDep){if(b&&b.registerDep(A,D,L),!a.el){const R=A.subTree=le(ye);W(null,R,d,g)}}else D(A,a,d,g,b,S,L)},re=(a,d,g)=>{const C=d.component=a.component;if(bc(a,d,g))if(C.asyncDep&&!C.asyncResolved){Y(C,d,g);return}else C.next=d,Tl(C.update),C.effect.dirty=!0,C.update();else d.el=a.el,C.vnode=d},D=(a,d,g,C,b,S,L)=>{const A=()=>{if(a.isMounted){let{next:N,bu:j,u:$,parent:G,vnode:X}=a;{const pt=Yo(a);if(pt){N&&(N.el=X.el,Y(a,N,L)),pt.asyncDep.then(()=>{a.isUnmounted||A()});return}}let te=N,Q;rt(a,!1),N?(N.el=X.el,Y(a,N,L)):N=X,j&&dn(j),(Q=N.props&&N.props.onVnodeBeforeUpdate)&&Te(Q,G,N,X),rt(a,!0);const ce=Xn(a),Oe=a.subTree;a.subTree=ce,O(Oe,ce,h(Oe.el),zt(Oe),a,b,S),N.el=ce.el,te===null&&wc(a,ce.el),$&&_e($,b),(Q=N.props&&N.props.onVnodeUpdated)&&_e(()=>Te(Q,G,N,X),b)}else{let N;const{el:j,props:$}=d,{bm:G,m:X,parent:te}=a,Q=Et(d);if(rt(a,!1),G&&dn(G),!Q&&(N=$&&$.onVnodeBeforeMount)&&Te(N,te,d),rt(a,!0),j&&Bn){const ce=()=>{a.subTree=Xn(a),Bn(j,a.subTree,a,b,null)};Q?d.type.__asyncLoader().then(()=>!a.isUnmounted&&ce()):ce()}else{const ce=a.subTree=Xn(a);O(null,ce,g,C,a,b,S),d.el=ce.el}if(X&&_e(X,b),!Q&&(N=$&&$.onVnodeMounted)){const ce=d;_e(()=>Te(N,te,ce),b)}(d.shapeFlag&256||te&&Et(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&_e(a.a,b),a.isMounted=!0,d=g=C=null}},R=a.effect=new Ar(A,Ae,()=>In(E),a.scope),E=a.update=()=>{R.dirty&&R.run()};E.i=a,E.id=a.uid,rt(a,!0),E()},Y=(a,d,g)=>{d.component=a;const C=a.vnode.props;a.vnode=d,a.next=null,Zl(a,d.props,C,g),rc(a,d.children,g),et(),os(a),tt()},B=(a,d,g,C,b,S,L,A,R=!1)=>{const E=a&&a.children,N=a?a.shapeFlag:0,j=d.children,{patchFlag:$,shapeFlag:G}=d;if($>0){if($&128){Yt(E,j,g,C,b,S,L,A,R);return}else if($&256){de(E,j,g,C,b,S,L,A,R);return}}G&8?(N&16&&Rt(E,b,S),j!==E&&f(g,j)):N&16?G&16?Yt(E,j,g,C,b,S,L,A,R):Rt(E,b,S,!0):(N&8&&f(g,""),G&16&&V(j,g,C,b,S,L,A,R))},de=(a,d,g,C,b,S,L,A,R)=>{a=a||yt,d=d||yt;const E=a.length,N=d.length,j=Math.min(E,N);let $;for($=0;$N?Rt(a,b,S,!0,!1,j):V(d,g,C,b,S,L,A,R,j)},Yt=(a,d,g,C,b,S,L,A,R)=>{let E=0;const N=d.length;let j=a.length-1,$=N-1;for(;E<=j&&E<=$;){const G=a[E],X=d[E]=R?qe(d[E]):xe(d[E]);if(lt(G,X))O(G,X,g,null,b,S,L,A,R);else break;E++}for(;E<=j&&E<=$;){const G=a[j],X=d[$]=R?qe(d[$]):xe(d[$]);if(lt(G,X))O(G,X,g,null,b,S,L,A,R);else break;j--,$--}if(E>j){if(E<=$){const G=$+1,X=G$)for(;E<=j;)Ie(a[E],b,S,!0),E++;else{const G=E,X=E,te=new Map;for(E=X;E<=$;E++){const we=d[E]=R?qe(d[E]):xe(d[E]);we.key!=null&&te.set(we.key,E)}let Q,ce=0;const Oe=$-X+1;let pt=!1,Xr=0;const Ot=new Array(Oe);for(E=0;E=Oe){Ie(we,b,S,!0);continue}let Pe;if(we.key!=null)Pe=te.get(we.key);else for(Q=X;Q<=$;Q++)if(Ot[Q-X]===0&<(we,d[Q])){Pe=Q;break}Pe===void 0?Ie(we,b,S,!0):(Ot[Pe-X]=E+1,Pe>=Xr?Xr=Pe:pt=!0,O(we,d[Pe],g,null,b,S,L,A,R),ce++)}const Yr=pt?dc(Ot):yt;for(Q=Yr.length-1,E=Oe-1;E>=0;E--){const we=X+E,Pe=d[we],zr=we+1{const{el:S,type:L,transition:A,children:R,shapeFlag:E}=a;if(E&6){nt(a.component.subTree,d,g,C);return}if(E&128){a.suspense.move(d,g,C);return}if(E&64){L.move(a,d,g,ht);return}if(L===ve){r(S,d,g);for(let j=0;jA.enter(S),b);else{const{leave:j,delayLeave:$,afterLeave:G}=A,X=()=>r(S,d,g),te=()=>{j(S,()=>{X(),G&&G()})};$?$(S,X,te):te()}else r(S,d,g)},Ie=(a,d,g,C=!1,b=!1)=>{const{type:S,props:L,ref:A,children:R,dynamicChildren:E,shapeFlag:N,patchFlag:j,dirs:$,cacheIndex:G}=a;if(j===-2&&(b=!1),A!=null&&En(A,null,g,a,!0),G!=null&&(d.renderCache[G]=void 0),N&256){d.ctx.deactivate(a);return}const X=N&1&&$,te=!Et(a);let Q;if(te&&(Q=L&&L.onVnodeBeforeUnmount)&&Te(Q,d,a),N&6)Li(a.component,g,C);else{if(N&128){a.suspense.unmount(g,C);return}X&&Ne(a,null,d,"beforeUnmount"),N&64?a.type.remove(a,d,g,ht,C):E&&!E.hasOnce&&(S!==ve||j>0&&j&64)?Rt(E,d,g,!1,!0):(S===ve&&j&384||!b&&N&16)&&Rt(R,d,g),C&&qr(a)}(te&&(Q=L&&L.onVnodeUnmounted)||X)&&_e(()=>{Q&&Te(Q,d,a),X&&Ne(a,null,d,"unmounted")},g)},qr=a=>{const{type:d,el:g,anchor:C,transition:b}=a;if(d===ve){Oi(g,C);return}if(d===Ft){y(a);return}const S=()=>{s(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:A}=b,R=()=>L(g,S);A?A(a.el,S,R):R()}else S()},Oi=(a,d)=>{let g;for(;a!==d;)g=m(a),s(a),a=g;s(d)},Li=(a,d,g)=>{const{bum:C,scope:b,update:S,subTree:L,um:A,m:R,a:E}=a;ms(R),ms(E),C&&dn(C),b.stop(),S&&(S.active=!1,Ie(L,a,d,g)),A&&_e(A,d),_e(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Rt=(a,d,g,C=!1,b=!1,S=0)=>{for(let L=S;L{if(a.shapeFlag&6)return zt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=m(a.anchor||a.el),g=d&&d[Ko];return g?m(g):d};let Dn=!1;const Gr=(a,d,g)=>{a==null?d._vnode&&Ie(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,g),d._vnode=a,Dn||(Dn=!0,os(),_n(),Dn=!1)},ht={p:O,um:Ie,m:nt,r:qr,mt:ee,mc:V,pc:B,pbc:v,n:zt,o:e};let Un,Bn;return t&&([Un,Bn]=t(ht)),{render:Gr,hydrate:Un,createApp:zl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Xo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Yo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yo(t)}function ms(e){if(e)for(let t=0;tSt(hc);function Ur(e,t){return $n(e,null,t)}function _u(e,t){return $n(e,null,{flush:"post"})}const ln={};function $e(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ne){if(t&&o){const x=t;t=(...F)=>{x(...F),I()}}const c=ae,u=x=>r===!0?x:Ge(x,r===!1?1:void 0);let f,h=!1,m=!1;if(he(e)?(f=()=>e.value,h=Tt(e)):bt(e)?(f=()=>u(e),h=!0):k(e)?(m=!0,h=e.some(x=>bt(x)||Tt(x)),f=()=>e.map(x=>{if(he(x))return x.value;if(bt(x))return u(x);if(q(x))return Ye(x,c,2)})):q(e)?t?f=()=>Ye(e,c,2):f=()=>(_&&_(),Re(e,c,3,[w])):f=Ae,t&&r){const x=f;f=()=>Ge(x())}let _,w=x=>{_=p.onStop=()=>{Ye(x,c,4),_=p.onStop=void 0}},O;if(Xt)if(w=Ae,t?n&&Re(t,c,3,[f(),m?[]:void 0,w]):f(),s==="sync"){const x=pc();O=x.__watcherHandles||(x.__watcherHandles=[])}else return Ae;let U=m?new Array(e.length).fill(ln):ln;const W=()=>{if(!(!p.active||!p.dirty))if(t){const x=p.run();(r||h||(m?x.some((F,V)=>ze(F,U[V])):ze(x,U)))&&(_&&_(),Re(t,c,3,[x,U===ln?void 0:m&&U[0]===ln?[]:U,w]),U=x)}else p.run()};W.allowRecurse=!!t;let H;s==="sync"?H=W:s==="post"?H=()=>_e(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),H=()=>In(W));const p=new Ar(f,Ae,H),y=no(),I=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?W():U=p.run():s==="post"?_e(p.run.bind(p),c&&c.suspense):p.run(),O&&O.push(I),I}function gc(e,t,n){const r=this.proxy,s=ie(e)?e.includes(".")?zo(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function zo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Ge(r,t,n)});else if(zs(e)){for(const r in e)Ge(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ge(e[r],t,n)}return e}const mc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Ze(t)}Modifiers`];function yc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ne;let s=n;const o=t.startsWith("update:"),i=o&&mc(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>ie(f)?f.trim():f)),i.number&&(s=n.map(cr)));let l,c=r[l=fn(t)]||r[l=fn(Le(t))];!c&&o&&(c=r[l=fn(Ze(t))]),c&&Re(c,e,6,s);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Re(u,e,6,s)}}function Jo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const c=u=>{const f=Jo(u,t,!0);f&&(l=!0,fe(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):fe(i,o),Z(e)&&r.set(e,i),i)}function Hn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Ze(t))||z(e,t))}function Xn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,props:h,data:m,setupState:_,ctx:w,inheritAttrs:O}=e,U=vn(e);let W,H;try{if(n.shapeFlag&4){const y=s||r,I=y;W=xe(u.call(I,y,f,h,_,m,w)),H=l}else{const y=t;W=xe(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),H=t.props?l:_c(l)}}catch(y){$t.length=0,Wt(y,e,1),W=le(ye)}let p=W;if(H&&O!==!1){const y=Object.keys(H),{shapeFlag:I}=p;y.length&&I&7&&(o&&y.some(Er)&&(H=vc(H,o)),p=Je(p,H,!1,!0))}return n.dirs&&(p=Je(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,vn(U),W}const _c=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},vc=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function bc(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ys(r,i,u):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Qo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):xl(e)}const ve=Symbol.for("v-fgt"),ut=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ft=Symbol.for("v-stc"),$t=[];let Ce=null;function Zo(e=!1){$t.push(Ce=e?null:[])}function Cc(){$t.pop(),Ce=$t[$t.length-1]||null}let Ut=1;function _s(e){Ut+=e,e<0&&Ce&&(Ce.hasOnce=!0)}function ei(e){return e.dynamicChildren=Ut>0?Ce||yt:null,Cc(),Ut>0&&Ce&&Ce.push(e),e}function vu(e,t,n,r,s,o){return ei(ri(e,t,n,r,s,o,!0))}function ti(e,t,n,r,s){return ei(le(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ni=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||he(e)||q(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function ri(e,t=null,n=null,r=0,s=null,o=e===ve?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ni(t),ref:t&&pn(t),scopeId:Pn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ue};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Ut>0&&!i&&Ce&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ce.push(c),c}const le=Sc;function Sc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Lo)&&(e=ye),Cn(e)){const l=Je(e,t,!0);return n&&Br(l,n),Ut>0&&!o&&Ce&&(l.shapeFlag&6?Ce[Ce.indexOf(e)]=l:Ce.push(l)),l.patchFlag=-2,l}if(Nc(e)&&(e=e.__vccOpts),t){t=Tc(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=xr(l)),Z(c)&&(go(c)&&!k(c)&&(c=fe({},c)),t.style=Tr(c))}const i=ie(e)?1:Ec(e)?128:sc(e)?64:Z(e)?4:q(e)?2:0;return ri(e,t,n,r,s,i,o,!0)}function Tc(e){return e?go(e)||Ho(e)?fe({},e):e:null}function Je(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?xc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ni(u),ref:t&&t.ref?n&&o?k(o)?o.concat(pn(t)):[o,pn(t)]:pn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Je(e.ssContent),ssFallback:e.ssFallback&&Je(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&bn(f,c.clone(f)),f}function si(e=" ",t=0){return le(ut,null,e,t)}function bu(e,t){const n=le(Ft,null,e);return n.staticCount=t,n}function wu(e="",t=!1){return t?(Zo(),ti(ye,null,e)):le(ye,null,e)}function xe(e){return e==null||typeof e=="boolean"?le(ye):k(e)?le(ve,null,e.slice()):typeof e=="object"?qe(e):le(ut,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Je(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ho(t)?t._ctx=ue:s===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),r&64?(n=16,t=[si(t)]):n=8);e.children=t,e.shapeFlag|=n}function xc(...e){const t={};for(let n=0;nae||ue;let Sn,vr;{const e=Qs(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),vr=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const Gt=e=>{const t=ae;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},vs=()=>{ae&&ae.scope.off(),Sn(null)};function oi(e){return e.vnode.shapeFlag&4}let Xt=!1;function Lc(e,t=!1,n=!1){t&&vr(t);const{props:r,children:s}=e.vnode,o=oi(e);Ql(e,r,o,t),nc(e,s,n);const i=o?Mc(e,t):void 0;return t&&vr(!1),i}function Mc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?li(e):null,o=Gt(e);et();const i=Ye(r,e,0,[e.props,s]);if(tt(),o(),Xs(i)){if(i.then(vs,vs),t)return i.then(l=>{bs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else bs(e,i,t)}else ii(e,t)}function bs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=vo(t)),ii(e,n)}let ws;function ii(e,t,n){const r=e.type;if(!e.render){if(!t&&ws&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,u=fe(fe({isCustomElement:o,delimiters:l},i),c);r.render=ws(s,u)}}e.render=r.render||Ae}{const s=Gt(e);et();try{Kl(e)}finally{tt(),s()}}}const Ic={get(e,t){return be(e,"get",""),e[t]}};function li(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ic),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(vo(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Pt)return Pt[n](e)},has(t,n){return n in t||n in Pt}})):e.proxy}function Pc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Nc(e){return q(e)&&"__vccOpts"in e}const se=(e,t)=>pl(e,t,Xt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Cn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),le(e,t,n))}const Fc="3.4.38";/** +* @vue/runtime-dom v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const $c="http://www.w3.org/2000/svg",Hc="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,Es=je&&je.createElement("template"),jc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?je.createElementNS($c,e):t==="mathml"?je.createElementNS(Hc,e):n?je.createElement(e,{is:n}):je.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Es.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Es.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Lt="animation",Bt=Symbol("_vtc"),ci=(e,{slots:t})=>br(Ml,Vc(e),t);ci.displayName="Transition";const ai={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ci.props=fe({},Co,ai);const st=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Cs=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Vc(e){const t={};for(const T in e)T in ai||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,w=Dc(s),O=w&&w[0],U=w&&w[1],{onBeforeEnter:W,onEnter:H,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:x=W,onAppear:F=H,onAppearCancelled:V=p}=t,M=(T,K,ee)=>{ot(T,K?f:l),ot(T,K?u:i),ee&&ee()},v=(T,K)=>{T._isLeaving=!1,ot(T,h),ot(T,_),ot(T,m),K&&K()},P=T=>(K,ee)=>{const re=T?F:H,D=()=>M(K,T,ee);st(re,[K,D]),Ss(()=>{ot(K,T?c:o),ke(K,T?f:l),Cs(re)||Ts(K,r,O,D)})};return fe(t,{onBeforeEnter(T){st(W,[T]),ke(T,o),ke(T,i)},onBeforeAppear(T){st(x,[T]),ke(T,c),ke(T,u)},onEnter:P(!1),onAppear:P(!0),onLeave(T,K){T._isLeaving=!0;const ee=()=>v(T,K);ke(T,h),ke(T,m),kc(),Ss(()=>{T._isLeaving&&(ot(T,h),ke(T,_),Cs(y)||Ts(T,r,U,ee))}),st(y,[T,ee])},onEnterCancelled(T){M(T,!1),st(p,[T])},onAppearCancelled(T){M(T,!0),st(V,[T])},onLeaveCancelled(T){v(T),st(I,[T])}})}function Dc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return $i(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Bt]||(e[Bt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Bt];n&&(n.delete(t),n.size||(e[Bt]=void 0))}function Ss(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Uc=0;function Ts(e,t,n,r){const s=e._endId=++Uc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Bc(e,t);if(!i)return r();const u=i+"end";let f=0;const h=()=>{e.removeEventListener(u,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Be}Delay`),o=r(`${Be}Duration`),i=xs(s,o),l=r(`${Lt}Delay`),c=r(`${Lt}Duration`),u=xs(l,c);let f=null,h=0,m=0;t===Be?i>0&&(f=Be,h=i,m=o.length):t===Lt?u>0&&(f=Lt,h=u,m=c.length):(h=Math.max(i,u),f=h>0?i>u?Be:Lt:null,m=f?f===Be?o.length:c.length:0);const _=f===Be&&/\b(transform|all)(,|$)/.test(r(`${Be}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function xs(e,t){for(;e.lengthAs(n)+As(e[r])))}function As(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function kc(){return document.body.offsetHeight}function Kc(e,t,n){const r=e[Bt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Rs=Symbol("_vod"),Wc=Symbol("_vsh"),qc=Symbol(""),Gc=/(^|;)\s*display\s*:/;function Xc(e,t,n){const r=e.style,s=ie(n);let o=!1;if(n&&!s){if(t)if(ie(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&gn(r,l,"")}else for(const i in t)n[i]==null&&gn(r,i,"");for(const i in n)i==="display"&&(o=!0),gn(r,i,n[i])}else if(s){if(t!==n){const i=r[qc];i&&(n+=";"+i),r.cssText=n,o=Gc.test(n)}}else t&&e.removeAttribute("style");Rs in e&&(e[Rs]=o?r.display:"",e[Wc]&&(r.display="none"))}const Os=/\s*!important$/;function gn(e,t,n){if(k(n))n.forEach(r=>gn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Yc(e,t);Os.test(n)?e.setProperty(Ze(r),n.replace(Os,""),"important"):e[r]=n}}const Ls=["Webkit","Moz","ms"],zn={};function Yc(e,t){const n=zn[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(ea.then(()=>Jn=0),Jn=Date.now());function na(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Re(ra(r,n.value),t,5,[r])};return n.value=e,n.attached=ta(),n}function ra(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sa=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?Kc(e,r,i):t==="style"?Xc(e,n,r):Kt(t)?Er(t)||Qc(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oa(e,t,r,i))?(zc(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Is(e,t,r,i,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Is(e,t,r,i))};function oa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Fs(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Fs(t)&&ie(n)?!1:t in e}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>dn(t,n):t};function ia(e){e.target.composing=!0}function Hs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),Eu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=$s(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",ia),mt(e,"compositionend",Hs),mt(e,"change",Hs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=$s(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},la=["ctrl","shift","alt","meta"],ca={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>la.some(n=>e[`${n}Key`]&&!t.includes(n))},Cu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=Ze(s.key);if(t.some(i=>i===o||aa[i]===o))return e(s)})},ui=fe({patchProp:sa},jc);let Ht,js=!1;function ua(){return Ht||(Ht=uc(ui))}function fa(){return Ht=js?Ht:fc(ui),js=!0,Ht}const Tu=(...e)=>{const t=ua().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,fi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},xu=(...e)=>{const t=fa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(s)return n(s,!0,fi(s))},t};function fi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function di(e){return ie(e)?document.querySelector(e):e}const Au=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},da=window.__VP_SITE_DATA__;function kr(e){return no()?(qi(e),!0):!1}function He(e){return typeof e=="function"?e():_o(e)}const hi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ru=e=>e!=null,ha=Object.prototype.toString,pa=e=>ha.call(e)==="[object Object]",kt=()=>{},Vs=ga();function ga(){var e,t;return hi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ma(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const pi=e=>e();function ya(e,t={}){let n,r,s=kt;const o=l=>{clearTimeout(l),s(),s=kt};return l=>{const c=He(e),u=He(t.maxWait);return n&&o(n),c<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},u)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function _a(e=pi){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function va(e){return jn()}function gi(...e){if(e.length!==1)return wl(...e);const t=e[0];return typeof t=="function"?Ln(_l(()=>({get:t,set:kt}))):oe(t)}function mi(e,t,n={}){const{eventFilter:r=pi,...s}=n;return $e(e,ma(r,t),s)}function ba(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=_a(r);return{stop:mi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){va()?At(e,n):t?e():Mn(e)}function Ou(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return mi(e,t,{...o,eventFilter:ya(r,{maxWait:s})})}function Lu(e,t,n){let r;he(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=kt}=r,c=oe(!s),u=i?Fr(t):oe(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(O=>{h(()=>{o&&(o.value=!1),_||O()})});m===f&&(u.value=w)}catch(w){l(w)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?se(()=>(c.value=!0,u.value)):u}function yi(e){var t;const n=He(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Me=hi?window:void 0;function xt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Me):[t,n,r,s]=e,!t)return kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=$e(()=>[yi(t),He(s)],([f,h])=>{if(i(),!f)return;const m=pa(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(w=>l(f,_,w,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return kr(u),u}function wa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Mu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Me,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=wa(t);return xt(s,o,f=>{f.repeat&&He(l)||c(f)&&n(f)},i)}function Ea(){const e=oe(!1),t=jn();return t&&At(()=>{e.value=!0},t),e}function Ca(e){const t=Ea();return se(()=>(t.value,!!e()))}function _i(e,t={}){const{window:n=Me}=t,r=Ca(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=oe(!1),i=u=>{o.value=u.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(He(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",Sa=Ta();function Ta(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function vi(e,t){return Sa[e]||t}function xa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Aa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ds="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=Me,eventFilter:m,onError:_=v=>{console.error(v)},initOnMounted:w}=r,O=(f?Fr:oe)(typeof t=="function"?t():t);if(!n)try{n=vi("getDefaultStorage",()=>{var v;return(v=Me)==null?void 0:v.localStorage})()}catch(v){_(v)}if(!n)return O;const U=He(t),W=xa(U),H=(s=r.serializer)!=null?s:Aa[W],{pause:p,resume:y}=ba(O,()=>x(O.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{n instanceof Storage?xt(h,"storage",V):xt(h,Ds,M),w&&V()}),w||V();function I(v,P){h&&!(n instanceof Storage)&&h.dispatchEvent(new CustomEvent(Ds,{detail:{key:e,oldValue:v,newValue:P,storageArea:n}}))}function x(v){try{const P=n.getItem(e);if(v==null)I(P,null),n.removeItem(e);else{const T=H.write(v);P!==T&&(n.setItem(e,T),I(P,T))}}catch(P){_(P)}}function F(v){const P=v?v.newValue:n.getItem(e);if(P==null)return c&&U!=null&&n.setItem(e,H.write(U)),U;if(!v&&u){const T=H.read(P);return typeof u=="function"?u(T,U):W==="object"&&!Array.isArray(T)?{...U,...T}:T}else return typeof P!="string"?P:H.read(P)}function V(v){if(!(v&&v.storageArea!==n)){if(v&&v.key==null){O.value=U;return}if(!(v&&v.key!==e)){p();try{(v==null?void 0:v.newValue)!==H.write(O.value)&&(O.value=F(v))}catch(P){_(P)}finally{v?Mn(y):y()}}}}function M(v){V(v.detail)}return O}function bi(e){return _i("(prefers-color-scheme: dark)",e)}const Ra="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Oa(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Me,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=bi({window:s}),_=se(()=>m.value?"dark":"light"),w=c||(i==null?gi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),O=se(()=>w.value==="auto"?_.value:w.value),U=vi("updateHTMLAttrs",(y,I,x)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):yi(y);if(!F)return;const V=new Set,M=new Set;let v=null;if(I==="class"){const T=x.split(/\s/g);Object.values(h).flatMap(K=>(K||"").split(/\s/g)).filter(Boolean).forEach(K=>{T.includes(K)?V.add(K):M.add(K)})}else v={key:I,value:x};if(V.size===0&&M.size===0&&v===null)return;let P;f&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode(Ra)),s.document.head.appendChild(P));for(const T of V)F.classList.add(T);for(const T of M)F.classList.remove(T);v&&F.setAttribute(v.key,v.value),f&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function W(y){var I;U(t,n,(I=h[y])!=null?I:y)}function H(y){e.onChanged?e.onChanged(y,W):W(y)}$e(O,H,{flush:"post",immediate:!0}),Kr(()=>H(O.value));const p=se({get(){return u?w.value:O.value},set(y){w.value=y}});try{return Object.assign(p,{store:w,system:_,state:O})}catch{return p}}function La(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Me}=e,s=Oa({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=se(()=>s.system?s.system.value:bi({window:r}).value?"dark":"light");return se({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Iu(e,t,n={}){const{window:r=Me}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function wi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Pu(e,t=!1){const n=oe(t);let r=null,s="";$e(gi(e),l=>{const c=Zn(He(l));if(c){const u=c;if(er.get(u)||er.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(s=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn(He(e));!l||n.value||(Vs&&(r=xt(l,"touchmove",c=>{Ma(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn(He(e));!l||!n.value||(Vs&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),se({get(){return n.value},set(l){l?o():i()}})}function Nu(e,t,n={}){const{window:r=Me}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Fu(e={}){const{window:t=Me,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),o=se({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=se({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function $u(e={}){const{window:t=Me,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0,type:i="inner"}=e,l=oe(n),c=oe(r),u=()=>{t&&(i==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):o?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(u(),Kr(u),xt("resize",u,{passive:!0}),s){const f=_i("(orientation: portrait)");$e(f,()=>u())}return{width:l,height:c}}const tr={BASE_URL:"/previews/PR54/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var nr={};const Ei=/^(?:[a-z]+:|\/\/)/i,Ia="vitepress-theme-appearance",Pa=/#.*$/,Na=/[?#].*$/,Fa=/(?:(^|\/)index)?\.(?:md|html)$/,pe=typeof document<"u",Ci={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function $a(e,t,n=!1){if(t===void 0)return!1;if(e=Us(`/${e}`),n)return new RegExp(t).test(e);if(Us(t)!==e)return!1;const r=t.match(Pa);return r?(pe?location.hash:"")===r[0]:!0}function Us(e){return decodeURI(e).replace(Na,"").replace(Fa,"$1")}function Ha(e){return Ei.test(e)}function ja(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ha(n)&&$a(t,`/${n}/`,!0))||"root"}function Va(e,t){var r,s,o,i,l,c,u;const n=ja(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Ti(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Si(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Da(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Da(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ua(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function Ti(e,t){return[...e.filter(n=>!Ua(t,n)),...t]}const Ba=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ka=/^[a-z]:/i;function Bs(e){const t=ka.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ba,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Ka(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Hu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Wa=Symbol(),ft=Fr(da);function ju(e){const t=se(()=>Va(ft.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?La({storageKey:Ia,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(pe?location.hash:"");return pe&&window.addEventListener("hashchange",()=>{s.value=location.hash}),$e(()=>e.data,()=>{s.value=pe?location.hash:""}),{site:t,theme:se(()=>t.value.themeConfig),page:se(()=>e.data),frontmatter:se(()=>e.data.frontmatter),params:se(()=>e.data.params),lang:se(()=>t.value.lang),dir:se(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:se(()=>t.value.localeIndex||"root"),title:se(()=>Si(t.value,e.data)),description:se(()=>e.data.description||t.value.description),isDark:r,hash:se(()=>s.value)}}function qa(){const e=St(Wa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ga(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ks(e){return Ei.test(e)||!e.startsWith("/")?e:Ga(ft.value.base,e)}function Xa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/previews/PR54/";t=Bs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Bs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let mn=[];function Vu(e){mn.push(e),Fn(()=>{mn=mn.filter(t=>t!==e)})}function Ya(){let e=ft.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ks(e,n);else if(Array.isArray(e))for(const r of e){const s=Ks(r,n);if(s){t=s;break}}return t}function Ks(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const za=Symbol(),xi="http://a.com",Ja=()=>({path:"/",component:null,data:Ci});function Du(e,t){const n=On(Ja()),r={route:n,go:s};async function s(l=pe?location.href:"/"){var c,u;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(pe&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=r.onAfterRouteChanged)==null?void 0:u.call(r,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,xi),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:O}=_;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=pe?h:ks(h),n.component=hn(w),n.data=hn(O),pe&&Mn(()=>{let U=ft.value.base+O.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ft.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==f.pathname&&(f.pathname=U,l=U+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(H){console.warn(H)}if(W){Ws(W,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!u)try{const w=await fetch(ft.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=pe?h:ks(h),n.component=t?hn(t):null;const w=pe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ci,relativePath:w}}}}return pe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:f,origin:h,pathname:m,hash:_,search:w}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&Ka(m)&&(l.preventDefault(),m===O.pathname&&w===O.search?(_!==O.hash&&(history.pushState({},"",f),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:f}))),_?Ws(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(f))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Qa(){const e=St(za);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ai(){return Qa().route}function Ws(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Ya()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,xi);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ft.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>mn.forEach(e=>e()),Uu=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ai(),{site:n}=qa();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),Za="modulepreload",eu=function(e){return"/previews/PR54/"+e},qs={},Bu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=eu(l),l in qs)return;qs[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Za,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ku=Hr({setup(e,{slots:t}){const n=oe(!1);return At(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Ku(){pe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Wu(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),tu(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function tu(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function qu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const u of document.head.children)if(u.isEqualNode(c)){r.push(u);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const u=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=Si(i,o);u!==document.title&&(document.title=u);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(Ti(i.head,ru(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function nu(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function ru(e){return e.filter(t=>!nu(t))}const lr=new Set,Ri=()=>document.createElement("link"),su=e=>{const t=Ri();t.rel="prefetch",t.href=e,document.head.appendChild(t)},ou=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let un;const iu=pe&&(un=Ri())&&un.relList&&un.relList.supports&&un.relList.supports("prefetch")?su:ou;function Gu(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const u=Xa(c);u&&iu(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};At(r);const s=Ai();$e(()=>s.path,r),Fn(()=>{n&&n.disconnect()})}export{Su as $,_u as A,Hl as B,Ya as C,fu as D,hu as E,ve as F,Fr as G,Vu as H,le as I,du as J,Ei as K,Ai as L,xc as M,St as N,$u as O,Tr as P,Mu as Q,Mn as R,Fu as S,ci as T,pe as U,Ln as V,uu as W,Bu as X,Pu as Y,Jl as Z,Au as _,si as a,gu as a0,Ro as a1,Cu as a2,mu as a3,On as a4,wl as a5,bu as a6,qu as a7,za as a8,ju as a9,Tu as aA,Hu as aB,Wa as aa,Uu as ab,ku as ac,ft as ad,xu as ae,Du as af,Xa as ag,Gu as ah,Wu as ai,Ku as aj,br as ak,He as al,yi as am,Ru as an,kr as ao,Lu as ap,Nu as aq,Iu as ar,Ou as as,Qa as at,xt as au,au as av,Eu as aw,he as ax,yu as ay,hn as az,ti as b,vu as c,Hr as d,wu as e,Ka as f,ks as g,se as h,Ha as i,ri as j,_o as k,cu as l,$a as m,xr as n,Zo as o,lu as p,_i as q,pu as r,oe as s,ki as t,qa as u,$e as v,Rl as w,Ur as x,At as y,Fn as z}; diff --git a/previews/PR54/assets/chunks/theme.CfG94X52.js b/previews/PR54/assets/chunks/theme.CfG94X52.js new file mode 100644 index 00000000..5eae2f42 --- /dev/null +++ b/previews/PR54/assets/chunks/theme.CfG94X52.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.tYq92Rk5.js","assets/chunks/framework.uXlnTO8a.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c as u,r as c,n as N,a as j,t as I,b as $,w as f,e as h,T as pe,_ as g,u as We,i as Je,f as Ye,g as fe,h as y,j as p,k as r,p as B,l as H,m as q,q as le,s as T,v as O,x as ee,y as R,z as he,A as _e,B as Xe,C as Qe,D as W,F as M,E,G as Le,H as te,I as k,J as F,K as Te,L as ne,M as K,N as Y,O as Ze,P as we,Q as ce,R as Ie,S as Ne,U as oe,V as xe,W as et,X as tt,Y as Me,Z as me,$ as nt,a0 as ot,a1 as st,a2 as at,a3 as Ae,a4 as rt,a5 as it}from"./framework.uXlnTO8a.js";const lt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(I(e.text),1)])],2))}}),ct={key:0,class:"VPBackdrop"},ut=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(a(),$(pe,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",ct)):h("",!0)]),_:1}))}}),dt=g(ut,[["__scopeId","data-v-b06cdb19"]]),V=We;function vt(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ue(n){return/^\//.test(n)?n:`/${n}`}function be(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(Je(n)||n.startsWith("#")||!o.startsWith("http")||!Ye(e))return n;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Q({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:i}=V(),l=y(()=>{var v,m;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((m=e.value.locales[t.value])==null?void 0:m.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,m])=>l.value.label===m.label?[]:{text:m.label,link:pt(m.link||(v==="root"?"/":`/${v}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function pt(n,e,t,s){return e?n.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const ft=n=>(B("data-v-951cab6c"),n=n(),H(),n),ht={class:"NotFound"},_t={class:"code"},mt={class:"title"},bt=ft(()=>p("div",{class:"divider"},null,-1)),kt={class:"quote"},$t={class:"action"},gt=["href","aria-label"],yt=_({__name:"NotFound",setup(n){const{theme:e}=V(),{currentLang:t}=Q();return(s,o)=>{var i,l,d,v,m;return a(),u("div",ht,[p("p",_t,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",mt,I(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),bt,p("blockquote",kt,I(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",$t,[p("a",{class:"link",href:r(fe)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},I(((m=r(e).notFound)==null?void 0:m.linkText)??"Take me home"),9,gt)])])}}}),Pt=g(yt,[["__scopeId","data-v-951cab6c"]]);function Ce(n,e){if(Array.isArray(n))return Z(n);if(n==null)return[];e=ue(e);const t=Object.keys(n).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>e.startsWith(ue(o))),s=t?n[t]:[];return Array.isArray(s)?Z(s):Z(s.items,s.base)}function St(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Vt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function de(n,e){return Array.isArray(e)?e.some(t=>de(n,t)):q(n,e.link)?!0:e.items?de(n,e.items):!1}function Z(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=Z(s.items,o)),s})}function U(){const{frontmatter:n,page:e,theme:t}=V(),s=le("(min-width: 960px)"),o=T(!1),i=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Ce(C,w):[]}),l=T(i.value);O(i,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=i.value)});const d=y(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),v=y(()=>m?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),m=y(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),b=y(()=>d.value?St(l.value):[]);function P(){o.value=!0}function S(){o.value=!1}function A(){o.value?S():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:d,hasAside:m,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function Lt(n,e){let t;ee(()=>{t=n.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function Tt(n){const{page:e,hash:t}=V(),s=T(!1),o=y(()=>n.value.collapsed!=null),i=y(()=>!!n.value.link),l=T(!1),d=()=>{l.value=q(e.value.relativePath,n.value.link)};O([e,n,t],d),R(d);const v=y(()=>l.value?!0:n.value.items?de(e.value.relativePath,n.value.items):!1),m=y(()=>!!(n.value.items&&n.value.items.length));ee(()=>{s.value=!!(o.value&&n.value.collapsed)}),_e(()=>{(l.value||v.value)&&(s.value=!1)});function L(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:m,toggle:L}}function wt(){const{hasSidebar:n}=U(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const ve=[];function Be(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function ke(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:It(t),link:"#"+t.id,level:s}});return Nt(e,n)}function It(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Nt(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;n=n.filter(l=>l.level>=s&&l.level<=o),ve.length=0;for(const{element:l,link:d}of n)ve.push({element:l,link:d});const i=[];e:for(let l=0;l=0;v--){const m=n[v];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Xe(()=>{l(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,L=Math.abs(d+v-m)<1,b=ve.map(({element:S,link:A})=>({link:A,top:At(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!b.length){l(null);return}if(d<1){l(null);return}if(L){l(b[b.length-1].link);return}let P=null;for(const{link:S,top:A}of b){if(A>d+Qe()+4)break;P=S}l(P)}function l(d){o&&o.classList.remove("active"),d==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function At(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}const Ct=["href","title"],Bt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(n){function e({target:t}){const s=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(s));o==null||o.focus({preventScroll:!0})}return(t,s)=>{const o=W("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},I(d),9,Ct),i!=null&&i.length?(a(),$(o,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),He=g(Bt,[["__scopeId","data-v-3f927ebe"]]),Ht={class:"content"},Et={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ft=_({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=V(),s=Le([]);te(()=>{s.value=ke(e.value.outline??t.value.outline)});const o=T(),i=T();return Mt(o,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[p("div",Ht,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Et,I(r(Be)(r(t))),1),k(He,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Dt=g(Ft,[["__scopeId","data-v-b38bf2ff"]]),Ot={class:"VPDocAsideCarbonAds"},jt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(a(),u("div",Ot,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ut=n=>(B("data-v-6d7b3c46"),n=n(),H(),n),Gt={class:"VPDocAside"},zt=Ut(()=>p("div",{class:"spacer"},null,-1)),Kt=_({__name:"VPDocAside",setup(n){const{theme:e}=V();return(t,s)=>(a(),u("div",Gt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Dt),c(t.$slots,"aside-outline-after",{},void 0,!0),zt,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(jt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Rt=g(Kt,[["__scopeId","data-v-6d7b3c46"]]);function qt(){const{theme:n,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Wt(){const{page:n,theme:e,frontmatter:t}=V();return y(()=>{var m,L,b,P,S,A,C,w;const s=Ce(e.value.sidebar,n.value.relativePath),o=Vt(s),i=Jt(o,G=>G.link.replace(/[?#].*$/,"")),l=i.findIndex(G=>q(n.value.relativePath,G.link)),d=((m=e.value.docFooter)==null?void 0:m.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=i[l+1])==null?void 0:w.link)}}})}function Jt(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(o,i)=>(a(),$(F(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?r(be)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Yt={class:"VPLastUpdated"},Xt=["datetime"],Qt=_({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=V(),o=y(()=>new Date(t.value.lastUpdated)),i=y(()=>o.value.toISOString()),l=T("");return R(()=>{ee(()=>{var d,v,m;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=e.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(d,v)=>{var m;return a(),u("p",Yt,[j(I(((m=r(e).lastUpdated)==null?void 0:m.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},I(l.value),9,Xt)])}}}),Zt=g(Qt,[["__scopeId","data-v-475f71b8"]]),Ee=n=>(B("data-v-4f9813fa"),n=n(),H(),n),xt={key:0,class:"VPDocFooter"},en={key:0,class:"edit-info"},tn={key:0,class:"edit-link"},nn=Ee(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),on={key:1,class:"last-updated"},sn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},an=Ee(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),rn={class:"pager"},ln=["innerHTML"],cn=["innerHTML"],un={class:"pager"},dn=["innerHTML"],vn=["innerHTML"],pn=_({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=V(),o=qt(),i=Wt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(m,L)=>{var b,P,S,A;return v.value?(a(),u("footer",xt,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",en,[l.value?(a(),u("div",tn,[k(D,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:f(()=>[nn,j(" "+I(r(o).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",on,[k(Zt)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",sn,[an,p("div",rn,[(S=r(i).prev)!=null&&S.link?(a(),$(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,ln),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,cn)]}),_:1},8,["href"])):h("",!0)]),p("div",un,[(A=r(i).next)!=null&&A.link?(a(),$(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,dn),p("span",{class:"title",innerHTML:r(i).next.text},null,8,vn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),fn=g(pn,[["__scopeId","data-v-4f9813fa"]]),hn=n=>(B("data-v-83890dd9"),n=n(),H(),n),_n={class:"container"},mn=hn(()=>p("div",{class:"aside-curtain"},null,-1)),bn={class:"aside-container"},kn={class:"aside-content"},$n={class:"content"},gn={class:"content-container"},yn={class:"main"},Pn=_({__name:"VPDoc",setup(n){const{theme:e}=V(),t=ne(),{hasSidebar:s,hasAside:o,leftAside:i}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const m=W("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(o)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",_n,[r(o)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[mn,p("div",bn,[p("div",kn,[k(Rt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",$n,[p("div",gn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",yn,[k(m,{class:N(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(fn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Sn=g(Pn,[["__scopeId","data-v-83890dd9"]]),Vn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.href&&Te.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(o,i)=>(a(),$(F(s.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?r(be)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ln=g(Vn,[["__scopeId","data-v-14206e74"]]),Tn=["src","alt"],wn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=W("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",K({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Tn)):(a(),u(M,{key:1},[k(s,K({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,K({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),x=g(wn,[["__scopeId","data-v-35a7d0b8"]]),In=n=>(B("data-v-955009fc"),n=n(),H(),n),Nn={class:"container"},Mn={class:"main"},An={key:0,class:"name"},Cn=["innerHTML"],Bn=["innerHTML"],Hn=["innerHTML"],En={key:0,class:"actions"},Fn={key:0,class:"image"},Dn={class:"image-container"},On=In(()=>p("div",{class:"image-bg"},null,-1)),jn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=Y("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[p("div",Nn,[p("div",Mn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",An,[p("span",{innerHTML:t.name,class:"clip"},null,8,Cn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,Bn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Hn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",En,[(a(!0),u(M,null,E(t.actions,o=>(a(),u("div",{key:o.link,class:"action"},[k(Ln,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",Fn,[p("div",Dn,[On,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Un=g(jn,[["__scopeId","data-v-955009fc"]]),Gn=_({__name:"VPHomeHero",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),$(Un,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),zn=n=>(B("data-v-f5e9645b"),n=n(),H(),n),Kn={class:"box"},Rn={key:0,class:"icon"},qn=["innerHTML"],Wn=["innerHTML"],Jn=["innerHTML"],Yn={key:4,class:"link-text"},Xn={class:"link-text-value"},Qn=zn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Zn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(a(),$(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Kn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Rn,[k(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,qn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Wn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Jn)):h("",!0),e.linkText?(a(),u("div",Yn,[p("p",Xn,[j(I(e.linkText)+" ",1),Qn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),xn=g(Zn,[["__scopeId","data-v-f5e9645b"]]),eo={key:0,class:"VPFeatures"},to={class:"container"},no={class:"items"},oo=_({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(a(),u("div",eo,[p("div",to,[p("div",no,[(a(!0),u(M,null,E(s.features,i=>(a(),u("div",{key:i.title,class:N(["item",[t.value]])},[k(xn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),so=g(oo,[["__scopeId","data-v-d0a190d7"]]),ao=_({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),$(so,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),ro=_({__name:"VPHomeContent",setup(n){const{width:e}=Ze({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:we(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),io=g(ro,[["__scopeId","data-v-7a48a447"]]),lo={class:"VPHome"},co=_({__name:"VPHome",setup(n){const{frontmatter:e}=V();return(t,s)=>{const o=W("Content");return a(),u("div",lo,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Gn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(ao),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(io,{key:0},{default:f(()=>[k(o)]),_:1})):(a(),$(o,{key:1}))])}}}),uo=g(co,[["__scopeId","data-v-cbb6ec48"]]),vo={},po={class:"VPPage"};function fo(n,e){const t=W("Content");return a(),u("div",po,[c(n.$slots,"page-top"),k(t),c(n.$slots,"page-bottom")])}const ho=g(vo,[["render",fo]]),_o=_({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(Pt)],!0):r(t).layout==="page"?(a(),$(ho,{key:1},{"page-top":f(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(uo,{key:2},{"home-hero-before":f(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(F(r(t).layout),{key:3})):(a(),$(Sn,{key:4},{"doc-top":f(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),mo=g(_o,[["__scopeId","data-v-91765379"]]),bo={class:"container"},ko=["innerHTML"],$o=["innerHTML"],go=_({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[p("div",bo,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ko)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,$o)):h("",!0)])],2)):h("",!0)}}),yo=g(go,[["__scopeId","data-v-c970a860"]]);function Po(){const{theme:n,frontmatter:e}=V(),t=Le([]),s=y(()=>t.value.length>0);return te(()=>{t.value=ke(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const So=n=>(B("data-v-bc9dc845"),n=n(),H(),n),Vo={class:"menu-text"},Lo=So(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),To={class:"header"},wo={class:"outline"},Io=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=V(),s=T(!1),o=T(0),i=T(),l=T();function d(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}O(s,b=>{if(b){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ce("Escape",()=>{s.value=!1}),te(()=>{s.value=!1});function v(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function m(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ie(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:s.value})},[p("span",Vo,I(r(Be)(r(t))),1),Lo],2)):(a(),u("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),k(pe,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:m},[p("div",To,[p("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",wo,[k(He,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),No=g(Io,[["__scopeId","data-v-bc9dc845"]]),Mo=n=>(B("data-v-070ab83d"),n=n(),H(),n),Ao={class:"container"},Co=["aria-expanded"],Bo=Mo(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Ho={class:"menu-text"},Eo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:o}=Po(),{y:i}=Ne(),l=T(0);R(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{o.value=ke(t.value.outline??e.value.outline)});const d=y(()=>o.value.length===0),v=y(()=>d.value&&!s.value),m=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,b)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[p("div",Ao,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[Bo,p("span",Ho,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Co)):h("",!0),k(No,{headers:r(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),Fo=g(Eo,[["__scopeId","data-v-070ab83d"]]);function Do(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const i=ne();return O(()=>i.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Oo={},jo={class:"VPSwitch",type:"button",role:"switch"},Uo={class:"check"},Go={key:0,class:"icon"};function zo(n,e){return a(),u("button",jo,[p("span",Uo,[n.$slots.default?(a(),u("span",Go,[c(n.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ko=g(Oo,[["render",zo],["__scopeId","data-v-4a1c76db"]]),Fe=n=>(B("data-v-e40a8bb6"),n=n(),H(),n),Ro=Fe(()=>p("span",{class:"vpi-sun sun"},null,-1)),qo=Fe(()=>p("span",{class:"vpi-moon moon"},null,-1)),Wo=_({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=V(),s=Y("toggle-appearance",()=>{e.value=!e.value}),o=T("");return _e(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),$(Ko,{title:o.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>[Ro,qo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=g(Wo,[["__scopeId","data-v-e40a8bb6"]]),Jo={key:0,class:"VPNavBarAppearance"},Yo=_({__name:"VPNavBarAppearance",setup(n){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Jo,[k($e)])):h("",!0)}}),Xo=g(Yo,[["__scopeId","data-v-af096f4a"]]),ge=T();let De=!1,ie=0;function Qo(n){const e=T(!1);if(oe){!De&&Zo(),ie++;const t=O(ge,s=>{var o,i,l;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(i=n.onFocus)==null||i.call(n)):(e.value=!1,(l=n.onBlur)==null||l.call(n))});he(()=>{t(),ie--,ie||xo()})}return xe(e)}function Zo(){document.addEventListener("focusin",Oe),De=!0,ge.value=document.activeElement}function xo(){document.removeEventListener("focusin",Oe)}function Oe(){ge.value=document.activeElement}const es={class:"VPMenuLink"},ts=_({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),u("div",es,[k(D,{class:N({active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=g(ts,[["__scopeId","data-v-8b74d055"]]),ns={class:"VPMenuGroup"},os={key:0,class:"title"},ss=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",ns,[e.text?(a(),u("p",os,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),u(M,null,["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),as=g(ss,[["__scopeId","data-v-48c802d0"]]),rs={class:"VPMenu"},is={key:0,class:"items"},ls=_({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(a(),u("div",rs,[e.items?(a(),u("div",is,[(a(!0),u(M,null,E(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):"component"in s?(a(),$(F(s.component),K({key:1,ref_for:!0},s.props),null,16)):(a(),$(as,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),cs=g(ls,[["__scopeId","data-v-7dd3104a"]]),us=n=>(B("data-v-e5380155"),n=n(),H(),n),ds=["aria-expanded","aria-label"],vs={key:0,class:"text"},ps=["innerHTML"],fs=us(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),hs={key:1,class:"vpi-more-horizontal icon"},_s={class:"menu"},ms=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();Qo({el:t,onBlur:s});function s(){e.value=!1}return(o,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[o.button||o.icon?(a(),u("span",vs,[o.icon?(a(),u("span",{key:0,class:N([o.icon,"option-icon"])},null,2)):h("",!0),o.button?(a(),u("span",{key:1,innerHTML:o.button},null,8,ps)):h("",!0),fs])):(a(),u("span",hs))],8,ds),p("div",_s,[k(cs,{items:o.items},{default:f(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=g(ms,[["__scopeId","data-v-e5380155"]]),bs=["href","aria-label","innerHTML"],ks=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,o)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,bs))}}),$s=g(ks,[["__scopeId","data-v-717b8b75"]]),gs={class:"VPSocialLinks"},ys=_({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(a(),u("div",gs,[(a(!0),u(M,null,E(e.links,({link:s,icon:o,ariaLabel:i})=>(a(),$($s,{key:s,icon:o,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=g(ys,[["__scopeId","data-v-ee7a9424"]]),Ps={key:0,class:"group translations"},Ss={class:"trans-title"},Vs={key:1,class:"group"},Ls={class:"item appearance"},Ts={class:"label"},ws={class:"appearance-action"},Is={key:2,class:"group"},Ns={class:"item social-links"},Ms=_({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:o}=Q({correspondingLink:!0}),i=y(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(o).label?(a(),u("div",Ps,[p("p",Ss,I(r(o).label),1),(a(!0),u(M,null,E(r(s),v=>(a(),$(se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Vs,[p("div",Ls,[p("p",Ts,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",ws,[k($e)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Is,[p("div",Ns,[k(Pe,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),As=g(Ms,[["__scopeId","data-v-925effce"]]),Cs=n=>(B("data-v-5dea55bf"),n=n(),H(),n),Bs=["aria-expanded"],Hs=Cs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Es=[Hs],Fs=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Es,10,Bs))}}),Ds=g(Fs,[["__scopeId","data-v-5dea55bf"]]),Os=["innerHTML"],js=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),$(D,{class:N({VPNavBarMenuLink:!0,active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Os)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Us=g(js,[["__scopeId","data-v-ed5ac1f6"]]),Gs=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?q(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),o=y(()=>s(e.item));return(i,l)=>(a(),$(ye,{class:N({VPNavBarMenuGroup:!0,active:r(q)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),zs=n=>(B("data-v-e6d46098"),n=n(),H(),n),Ks={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Rs=zs(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),qs=_({__name:"VPNavBarMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",Ks,[Rs,(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(Us,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(F(o.component),K({key:1,ref_for:!0},o.props),null,16)):(a(),$(Gs,{key:2,item:o},null,8,["item"]))],64))),128))])):h("",!0)}}),Ws=g(qs,[["__scopeId","data-v-e6d46098"]]);function Js(n){const{localeIndex:e,theme:t}=V();function s(o){var A,C,w;const i=o.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,m=d&&l.translations||null;let L=v,b=m,P=n;const S=i.pop();for(const G of i){let z=null;const J=P==null?void 0:P[G];J&&(z=P=J);const ae=b==null?void 0:b[G];ae&&(z=b=ae);const re=L==null?void 0:L[G];re&&(z=L=re),J||(P=z),ae||(b=z),re||(L=z)}return(L==null?void 0:L[S])??(b==null?void 0:b[S])??(P==null?void 0:P[S])??""}return s}const Ys=["aria-label"],Xs={class:"DocSearch-Button-Container"},Qs=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Zs={class:"DocSearch-Button-Placeholder"},xs=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(n){const t=Js({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,o)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Xs,[Qs,p("span",Zs,I(r(t)("button.buttonText")),1)]),xs],8,Ys))}}),ea={class:"VPNavBarSearch"},ta={id:"local-search"},na={key:1,id:"docsearch"},oa=_({__name:"VPNavBarSearch",setup(n){const e=et(()=>tt(()=>import("./VPLocalSearchBox.tYq92Rk5.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),o=T(!1),i=T(!1);R(()=>{});function l(){o.value||(o.value=!0,setTimeout(d,16))}function d(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(b){const P=b.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=T(!1);ce("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),m.value=!0)}),ce("/",b=>{v(b)||(b.preventDefault(),m.value=!0)});const L="local";return(b,P)=>{var S;return a(),u("div",ea,[r(L)==="local"?(a(),u(M,{key:0},[m.value?(a(),$(r(e),{key:0,onClose:P[0]||(P[0]=A=>m.value=!1)})):h("",!0),p("div",ta,[k(Se,{onClick:P[1]||(P[1]=A=>m.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[o.value?(a(),$(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",na,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),sa=_({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),aa=g(sa,[["__scopeId","data-v-164c457f"]]),ra=["href","rel","target"],ia={key:1},la={key:2},ca=_({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:o}=Q(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(be)(r(o).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(x,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",ia,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",la,I(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,ra)],2))}}),ua=g(ca,[["__scopeId","data-v-28a961f9"]]),da={class:"items"},va={class:"title"},pa=_({__name:"VPNavBarTranslations",setup(n){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Q({correspondingLink:!0});return(o,i)=>r(t).length&&r(s).label?(a(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",da,[p("p",va,I(r(s).label),1),(a(!0),u(M,null,E(r(t),l=>(a(),$(se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),fa=g(pa,[["__scopeId","data-v-c80d9ad0"]]),ha=n=>(B("data-v-822684d1"),n=n(),H(),n),_a={class:"wrapper"},ma={class:"container"},ba={class:"title"},ka={class:"content"},$a={class:"content-body"},ga=ha(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),ya=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=Ne(),{hasSidebar:s}=U(),{frontmatter:o}=V(),i=T({});return _e(()=>{i.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[p("div",_a,[p("div",ma,[p("div",ba,[k(ua,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ka,[p("div",$a,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(oa,{class:"search"}),k(Ws,{class:"menu"}),k(fa,{class:"translations"}),k(Xo,{class:"appearance"}),k(aa,{class:"social-links"}),k(As,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(Ds,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),ga],2))}}),Pa=g(ya,[["__scopeId","data-v-822684d1"]]),Sa={key:0,class:"VPNavScreenAppearance"},Va={class:"text"},La=_({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=V();return(s,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Sa,[p("p",Va,I(r(t).darkModeSwitchLabel||"Appearance"),1),k($e)])):h("",!0)}}),Ta=g(La,[["__scopeId","data-v-ffb44008"]]),wa=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Ia=g(wa,[["__scopeId","data-v-27d04aeb"]]),Na=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),je=g(Na,[["__scopeId","data-v-7179dbb7"]]),Ma={class:"VPNavScreenMenuGroupSection"},Aa={key:0,class:"title"},Ca=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",Ma,[e.text?(a(),u("p",Aa,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),$(je,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ba=g(Ca,[["__scopeId","data-v-4b8941ac"]]),Ha=n=>(B("data-v-875057a5"),n=n(),H(),n),Ea=["aria-controls","aria-expanded"],Fa=["innerHTML"],Da=Ha(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Oa=["id"],ja={key:0,class:"item"},Ua={key:1,class:"item"},Ga={key:2,class:"group"},za=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[p("span",{class:"button-text",innerHTML:i.text},null,8,Fa),Da],8,Ea),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,E(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ja,[k(je,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",Ua,[(a(),$(F(d.component),K({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",Ga,[k(Ba,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,Oa)],2))}}),Ka=g(za,[["__scopeId","data-v-875057a5"]]),Ra={key:0,class:"VPNavScreenMenu"},qa=_({__name:"VPNavScreenMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",Ra,[(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(Ia,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(F(o.component),K({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(a(),$(Ka,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Wa=_({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ue=n=>(B("data-v-362991c2"),n=n(),H(),n),Ja=Ue(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Ya=Ue(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Xa={class:"list"},Qa=_({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=Q({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:o},[Ja,j(" "+I(r(t).label)+" ",1),Ya]),p("ul",Xa,[(a(!0),u(M,null,E(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(D,{class:"link",href:d.link},{default:f(()=>[j(I(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),Za=g(Qa,[["__scopeId","data-v-362991c2"]]),xa={class:"container"},er=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Me(oe?document.body:null);return(s,o)=>(a(),$(pe,{name:"fade",onEnter:o[0]||(o[0]=i=>t.value=!0),onAfterLeave:o[1]||(o[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",xa,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(qa,{class:"menu"}),k(Za,{class:"translations"}),k(Ta,{class:"appearance"}),k(Wa,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),tr=g(er,[["__scopeId","data-v-833aabba"]]),nr={key:0,class:"VPNav"},or=_({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Do(),{frontmatter:o}=V(),i=y(()=>o.value.navbar!==!1);return me("close-screen",t),ee(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",nr,[k(Pa,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(tr,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),sr=g(or,[["__scopeId","data-v-f1e365da"]]),Ge=n=>(B("data-v-196b2e5f"),n=n(),H(),n),ar=["role","tabindex"],rr=Ge(()=>p("div",{class:"indicator"},null,-1)),ir=Ge(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),lr=[ir],cr={key:1,class:"items"},ur=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=Tt(y(()=>e.item)),m=y(()=>d.value?"section":"div"),L=y(()=>o.value?"a":"div"),b=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":i.value},{"has-active":l.value}]);function A(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,G)=>{const z=W("VPSidebarItem",!0);return a(),$(F(m.value),{class:N(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",K({key:0,class:"item",role:P.value},ot(w.item.items?{click:A,keydown:A}:{},!0),{tabindex:w.item.items&&0}),[rr,w.item.link?(a(),$(D,{key:0,tag:L.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),$(F(b.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(F(b.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:nt(C,["enter"]),tabindex:"0"},lr,32)):h("",!0)],16,ar)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",cr,[w.depth<5?(a(!0),u(M,{key:0},E(w.item.items,J=>(a(),$(z,{key:J.text,item:J,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),dr=g(ur,[["__scopeId","data-v-196b2e5f"]]),vr=_({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return R(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),st(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(a(!0),u(M,null,E(s.items,i=>(a(),u("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[k(dr,{item:i,depth:0},null,8,["item"])],2))),128))}}),pr=g(vr,[["__scopeId","data-v-9e426adc"]]),ze=n=>(B("data-v-18756405"),n=n(),H(),n),fr=ze(()=>p("div",{class:"curtain"},null,-1)),hr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},_r=ze(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),mr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=U(),s=n,o=T(null),i=Me(oe?document.body:null);O([s,o],()=>{var d;s.open?(i.value=!0,(d=o.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return O(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:v[0]||(v[0]=at(()=>{},["stop"]))},[fr,p("nav",hr,[_r,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),$(pr,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),br=g(mr,[["__scopeId","data-v-18756405"]]),kr=_({__name:"VPSkipLink",setup(n){const e=ne(),t=T();O(()=>e.path,()=>t.value.focus());function s({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),$r=g(kr,[["__scopeId","data-v-c3508ec8"]]),gr=_({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=U(),o=ne();O(()=>o.path,s),Lt(e,s);const{frontmatter:i}=V(),l=Ae(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,m)=>{const L=W("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k($r),k(dt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(sr,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Fo,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(br,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(mo,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(yo),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),yr=g(gr,[["__scopeId","data-v-a9a9e638"]]),Pr={Layout:yr,enhanceApp:({app:n})=>{n.component("Badge",lt)}},Sr=n=>{if(typeof document>"u")return{stabilizeScrollPosition:o=>async(...i)=>o(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...o)=>{const i=s(...o),l=n.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ie(),e.scrollTop=l.offsetTop-d,i}}},Ke="vitepress:tabSharedState",X=typeof localStorage<"u"?localStorage:null,Re="vitepress:tabsSharedState",Vr=()=>{const n=X==null?void 0:X.getItem(Re);if(n)try{return JSON.parse(n)}catch{}return{}},Lr=n=>{X&&X.setItem(Re,JSON.stringify(n))},Tr=n=>{const e=rt({});O(()=>e.content,(t,s)=>{t&&s&&Lr(t)},{deep:!0}),n.provide(Ke,e)},wr=(n,e)=>{const t=Y(Ke);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");R(()=>{t.content||(t.content=Vr())});const s=T(),o=y({get(){var v;const l=e.value,d=n.value;if(l){const m=(v=t.content)==null?void 0:v[l];if(m&&d.includes(m))return m}else{const m=s.value;if(m)return m}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:o,select:l=>{o.value=l}}};let Ve=0;const Ir=()=>(Ve++,""+Ve);function Nr(){const n=Ae();return y(()=>{var s;const t=(s=n.default)==null?void 0:s.call(n);return t?t.filter(o=>typeof o.type=="object"&&"__name"in o.type&&o.type.__name==="PluginTabsTab"&&o.props).map(o=>{var i;return(i=o.props)==null?void 0:i.label}):[]})}const qe="vitepress:tabSingleState",Mr=n=>{me(qe,n)},Ar=()=>{const n=Y(qe);if(!n)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return n},Cr={class:"plugin-tabs"},Br=["id","aria-selected","aria-controls","tabindex","onClick"],Hr=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(n){const e=n,t=Nr(),{selected:s,select:o}=wr(t,it(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Sr(i),d=l(o),v=T([]),m=b=>{var A;const P=t.value.indexOf(s.value);let S;b.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:b.key==="ArrowRight"&&(S=P(a(),u("div",Cr,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},I(S),9,Br))),128))],544),c(b.$slots,"default")]))}}),Er=["id","aria-labelledby"],Fr=_({__name:"PluginTabsTab",props:{label:{}},setup(n){const{uid:e,selected:t}=Ar();return(s,o)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Er)):h("",!0)}}),Dr=g(Fr,[["__scopeId","data-v-9b0d03d2"]]),Or=n=>{Tr(n),n.component("PluginTabs",Hr),n.component("PluginTabsTab",Dr)},Ur={...Pr,enhanceApp({app:n}){Or(n)}};export{Ur as R,Js as c,V as u}; diff --git a/previews/PR54/assets/coastlines.XQvrmXpW.png b/previews/PR54/assets/coastlines.XQvrmXpW.png new file mode 100644 index 00000000..c2c29912 Binary files /dev/null and b/previews/PR54/assets/coastlines.XQvrmXpW.png differ diff --git a/previews/PR54/assets/collection_violins.CmSUemjd.svg b/previews/PR54/assets/collection_violins.CmSUemjd.svg new file mode 100644 index 00000000..6c4c24b1 --- /dev/null +++ b/previews/PR54/assets/collection_violins.CmSUemjd.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/colorschemes.CwILiGQj.png b/previews/PR54/assets/colorschemes.CwILiGQj.png new file mode 100644 index 00000000..6619f934 Binary files /dev/null and b/previews/PR54/assets/colorschemes.CwILiGQj.png differ diff --git a/previews/PR54/assets/complex_function.BbxBpwFP.png b/previews/PR54/assets/complex_function.BbxBpwFP.png new file mode 100644 index 00000000..b59a1137 Binary files /dev/null and b/previews/PR54/assets/complex_function.BbxBpwFP.png differ diff --git a/previews/PR54/assets/complex_polya_field.BUZCaNus.png b/previews/PR54/assets/complex_polya_field.BUZCaNus.png new file mode 100644 index 00000000..c2b54213 Binary files /dev/null and b/previews/PR54/assets/complex_polya_field.BUZCaNus.png differ diff --git a/previews/PR54/assets/constraints.CnJdvksP.png b/previews/PR54/assets/constraints.CnJdvksP.png new file mode 100644 index 00000000..bd249883 Binary files /dev/null and b/previews/PR54/assets/constraints.CnJdvksP.png differ diff --git a/previews/PR54/assets/contour_function.D6A3pH23.png b/previews/PR54/assets/contour_function.D6A3pH23.png new file mode 100644 index 00000000..101a7a4f Binary files /dev/null and b/previews/PR54/assets/contour_function.D6A3pH23.png differ diff --git a/previews/PR54/assets/contour_over_heatmap.C3qh2cpn.png b/previews/PR54/assets/contour_over_heatmap.C3qh2cpn.png new file mode 100644 index 00000000..44850c1b Binary files /dev/null and b/previews/PR54/assets/contour_over_heatmap.C3qh2cpn.png differ diff --git a/previews/PR54/assets/contour_v.BGZUvj0r.png b/previews/PR54/assets/contour_v.BGZUvj0r.png new file mode 100644 index 00000000..5367cc35 Binary files /dev/null and b/previews/PR54/assets/contour_v.BGZUvj0r.png differ diff --git a/previews/PR54/assets/contourf_contour3d.B06UVVCs.png b/previews/PR54/assets/contourf_contour3d.B06UVVCs.png new file mode 100644 index 00000000..53be12d3 Binary files /dev/null and b/previews/PR54/assets/contourf_contour3d.B06UVVCs.png differ diff --git a/previews/PR54/assets/cube_mscatters.CDu4vjJR.png b/previews/PR54/assets/cube_mscatters.CDu4vjJR.png new file mode 100644 index 00000000..8820e920 Binary files /dev/null and b/previews/PR54/assets/cube_mscatters.CDu4vjJR.png differ diff --git a/previews/PR54/assets/dark_surface_contour3d_streamplot.DTrU1ZsL.png b/previews/PR54/assets/dark_surface_contour3d_streamplot.DTrU1ZsL.png new file mode 100644 index 00000000..57d5810b Binary files /dev/null and b/previews/PR54/assets/dark_surface_contour3d_streamplot.DTrU1ZsL.png differ diff --git a/previews/PR54/assets/datasaurus1.DVFfxS4I.svg b/previews/PR54/assets/datasaurus1.DVFfxS4I.svg new file mode 100644 index 00000000..90c4ef42 --- /dev/null +++ b/previews/PR54/assets/datasaurus1.DVFfxS4I.svg @@ -0,0 +1,2732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/datasaurus2.B_7MiuK7.svg b/previews/PR54/assets/datasaurus2.B_7MiuK7.svg new file mode 100644 index 00000000..75198f04 --- /dev/null +++ b/previews/PR54/assets/datasaurus2.B_7MiuK7.svg @@ -0,0 +1,2853 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/datasaurus3.DP5ZkCrb.svg b/previews/PR54/assets/datasaurus3.DP5ZkCrb.svg new file mode 100644 index 00000000..3bbfbb7b --- /dev/null +++ b/previews/PR54/assets/datasaurus3.DP5ZkCrb.svg @@ -0,0 +1,3416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/demsqqw.B10Tn1pG.png b/previews/PR54/assets/demsqqw.B10Tn1pG.png new file mode 100644 index 00000000..ca501e11 Binary files /dev/null and b/previews/PR54/assets/demsqqw.B10Tn1pG.png differ diff --git a/previews/PR54/assets/density.D1R_iqvD.png b/previews/PR54/assets/density.D1R_iqvD.png new file mode 100644 index 00000000..f09a51ac Binary files /dev/null and b/previews/PR54/assets/density.D1R_iqvD.png differ diff --git a/previews/PR54/assets/densityridges1.DHQKmU8D.png b/previews/PR54/assets/densityridges1.DHQKmU8D.png new file mode 100644 index 00000000..c979ae25 Binary files /dev/null and b/previews/PR54/assets/densityridges1.DHQKmU8D.png differ diff --git a/previews/PR54/assets/densityridges2.BX0YM1lw.png b/previews/PR54/assets/densityridges2.BX0YM1lw.png new file mode 100644 index 00000000..3281a013 Binary files /dev/null and b/previews/PR54/assets/densityridges2.BX0YM1lw.png differ diff --git a/previews/PR54/assets/dixuuuw.C1nbqwAx.png b/previews/PR54/assets/dixuuuw.C1nbqwAx.png new file mode 100644 index 00000000..3b4199db Binary files /dev/null and b/previews/PR54/assets/dixuuuw.C1nbqwAx.png differ diff --git a/previews/PR54/assets/donut_earth_sun.B8BTZFI8.png b/previews/PR54/assets/donut_earth_sun.B8BTZFI8.png new file mode 100644 index 00000000..9c45b2b7 Binary files /dev/null and b/previews/PR54/assets/donut_earth_sun.B8BTZFI8.png differ diff --git a/previews/PR54/assets/earthquakes.C5Ro3n32.png b/previews/PR54/assets/earthquakes.C5Ro3n32.png new file mode 100644 index 00000000..5603f8ce Binary files /dev/null and b/previews/PR54/assets/earthquakes.C5Ro3n32.png differ diff --git a/previews/PR54/assets/earthquakes.q7R5Nq1-.mp4 b/previews/PR54/assets/earthquakes.q7R5Nq1-.mp4 new file mode 100644 index 00000000..2fe55d25 Binary files /dev/null and b/previews/PR54/assets/earthquakes.q7R5Nq1-.mp4 differ diff --git a/previews/PR54/assets/egg_shape.BJhOTppg.png b/previews/PR54/assets/egg_shape.BJhOTppg.png new file mode 100644 index 00000000..008046d4 Binary files /dev/null and b/previews/PR54/assets/egg_shape.BJhOTppg.png differ diff --git a/previews/PR54/assets/ekdflso.DmuncBAR.jpeg b/previews/PR54/assets/ekdflso.DmuncBAR.jpeg new file mode 100644 index 00000000..d76a1156 Binary files /dev/null and b/previews/PR54/assets/ekdflso.DmuncBAR.jpeg differ diff --git a/previews/PR54/assets/errorbars.u3m51XWo.svg b/previews/PR54/assets/errorbars.u3m51XWo.svg new file mode 100644 index 00000000..eb77935c --- /dev/null +++ b/previews/PR54/assets/errorbars.u3m51XWo.svg @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.js b/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.js new file mode 100644 index 00000000..774ab935 --- /dev/null +++ b/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/arrows.aCWBqbKF.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/arrows/arrows.md","filePath":"examples/2d/arrows/arrows.md","lastUpdated":null}'),n={name:"examples/2d/arrows/arrows.md"},l=h('

Arrows

julia
using CairoMakie
+
+xs = LinRange(-3, 3, 20)
+ys = LinRange(-3, 3, 20)
+us = [x + y for x in xs, y in ys]
+vs = [y - x for x in xs, y in ys]
+strength = vec(sqrt.(us .^2 .+ vs .^2))
+cmap = :gnuplot
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1,1], xlabel = "x", ylabel = "y", aspect = DataAspect())
+arrows!(ax, xs, ys, us, vs, arrowsize = 10, lengthscale = 0.1,
+    arrowcolor = strength, linecolor = strength, colormap = cmap)
+Colorbar(fig[1,2], limits =(minimum(strength), maximum(strength)),
+    nsteps =100, colormap = cmap, ticksize=15, width = 15, tickalign=1)
+limits!(ax, -3,3,-3,3)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.lean.js b/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.lean.js new file mode 100644 index 00000000..0c4cdac5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_arrows_arrows.md.CIbjkpVw.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/arrows.aCWBqbKF.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/arrows/arrows.md","filePath":"examples/2d/arrows/arrows.md","lastUpdated":null}'),n={name:"examples/2d/arrows/arrows.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.js b/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.js new file mode 100644 index 00000000..11a595e7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.js @@ -0,0 +1,22 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/band.uVtmLffi.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band.md","filePath":"examples/2d/band/band.md","lastUpdated":null}'),n={name:"examples/2d/band/band.md"},l=h('

band

julia
using CairoMakie, Random
+
+x = 0:0.05:
+y1 =  sin.(3x) ./ (cos.(x) .+ 2)./x
+y2 =  -2.5cos.(x)./x
+xl = LinRange(5,10,10)
+yl = LinRange(1,0.5,10)
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1,1])
+lines!(x, y1; color = :dodgerblue, label = "blue")
+band!(x, y1 .- 0.1, y1 .+ 0.1; color = (:dodgerblue, 0.2), label = "blue")
+
+lines!(x, y2; color = :red, label = "red")
+band!(x, y2 .- 0.1, y2 .+ 0.1; color = (:red, 0.2), label = "red")
+
+lines!(xl, yl; color = :slategray1, label = "slategray1")
+band!(xl, fill(0.5,10), yl; color= (:slategray1, 0.25),label="slategray1")
+ylims!(-0.55,1)
+axislegend(ax, position = :rt, merge = true)
+hidedecorations!(ax; grid = false)
+fig
`,3),t=[l];function p(E,e,d,r,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.lean.js b/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.lean.js new file mode 100644 index 00000000..90f458c6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band.md.BLKYUh4k.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/band.uVtmLffi.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band.md","filePath":"examples/2d/band/band.md","lastUpdated":null}'),n={name:"examples/2d/band/band.md"},l=h("",3),t=[l];function p(E,e,d,r,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.js b/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.js new file mode 100644 index 00000000..37b37be3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/band_confidence_error.NIPjkcqn.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band_confidence_error.md","filePath":"examples/2d/band/band_confidence_error.md","lastUpdated":null}'),k={name:"examples/2d/band/band_confidence_error.md"},l=n('

band confidence error

julia
using CairoMakie
+
+x = y = -10:0.11:10
+y1d = sin.(x) ./ x
+lower = y1d .- 0.1
+upper = y1d .+ 0.1
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+lines!(x, y1d, color = :black)
+band!(x, lower, upper; color = (:green, 0.2))
+fig
`,3),t=[l];function p(e,r,d,E,g,y){return a(),i("div",null,t)}const F=s(k,[["render",p]]);export{o as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.lean.js b/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.lean.js new file mode 100644 index 00000000..cb4dccb6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band_confidence_error.md.DqpQ2ZCX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/band_confidence_error.NIPjkcqn.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band_confidence_error.md","filePath":"examples/2d/band/band_confidence_error.md","lastUpdated":null}'),k={name:"examples/2d/band/band_confidence_error.md"},l=n("",3),t=[l];function p(e,r,d,E,g,y){return a(),i("div",null,t)}const F=s(k,[["render",p]]);export{o as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.js b/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.js new file mode 100644 index 00000000..28ad1cb1 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.js @@ -0,0 +1,8 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/band_ribbon.DwCeqvvC.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band_ribbon.md","filePath":"examples/2d/band/band_ribbon.md","lastUpdated":null}'),k={name:"examples/2d/band/band_ribbon.md"},t=n('

band or ribbon

julia
using CairoMakie
+
+x = LinRange(-10, 10, 200)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+band!(x, sin.(x), sin.(x) .+ 1; color = (:blue, 0.2))
+band!(x, cos.(x), 1 .+ cos.(x); color = (:red, 0.2))
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.lean.js b/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.lean.js new file mode 100644 index 00000000..c6c5fd8c --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_band_ribbon.md.BVw99554.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/band_ribbon.DwCeqvvC.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/band_ribbon.md","filePath":"examples/2d/band/band_ribbon.md","lastUpdated":null}'),k={name:"examples/2d/band/band_ribbon.md"},t=n("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.js b/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.js new file mode 100644 index 00000000..af82331e --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.js @@ -0,0 +1,10 @@ +import{_ as i,c as a,o as h,a6 as n}from"./chunks/framework.uXlnTO8a.js";const s="/previews/PR54/assets/filled_under.Dbe-bbr6.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/filled_under.md","filePath":"examples/2d/band/filled_under.md","lastUpdated":null}'),l={name:"examples/2d/band/filled_under.md"},k=n('

Filled Under

julia
using CairoMakie
+
+x = 0:0.05:1
+y = x .^ 2
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+lines!(x, y, color = :orangered, label = "Label")
+band!(x, fill(0, length(x)), y; color = (:orange, 0.25), label = "Label")
+axislegend(; merge = true, position = :lt)
+fig

',4),t=[k];function p(e,d,E,r,g,y){return h(),a("div",null,t)}const C=i(l,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.lean.js b/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.lean.js new file mode 100644 index 00000000..e619913c --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_filled_under.md.C6oglETs.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as h,a6 as n}from"./chunks/framework.uXlnTO8a.js";const s="/previews/PR54/assets/filled_under.Dbe-bbr6.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/filled_under.md","filePath":"examples/2d/band/filled_under.md","lastUpdated":null}'),l={name:"examples/2d/band/filled_under.md"},k=n("",4),t=[k];function p(e,d,E,r,g,y){return h(),a("div",null,t)}const C=i(l,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.js b/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.js new file mode 100644 index 00000000..5d69fd66 --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/filled_under_bell.DJyWrU2m.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/filled_under_bell.md","filePath":"examples/2d/band/filled_under_bell.md","lastUpdated":null}'),l={name:"examples/2d/band/filled_under_bell.md"},n=h('

Filled curve. Under the bell

julia
using CairoMakie
+
+μs = [0.25, 2, -1]
+σs = [1.25, 1, 2]
+colors = ["#E69F00", "#56B4E9", "#009E73"]
+x = LinRange(-10, 10, 200)
+fg(x, μ, σ) = exp.(.-(x .- μ) .^ 2 ./ (2σ^2)) ./*())
+fig = Figure(size = (600, 400), fonts= (; regular = "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"y", xlabelsize = 22, ylabelsize = 22)
+for (idx, μ) in enumerate(μs)
+    lines!(x, fg(x, μ, σs[idx]); color = colors[idx],
+        label = L"\\mu = %$(μ), \\sigma = %$(σs[idx])")
+    band!(x, fill(0, length(x)), fg(x, μ, σs[idx]); color = (colors[idx], 0.1),
+        label = L"\\mu = %$(μ), \\sigma = %$(σs[idx])")
+end
+axislegend(; merge = true, framecolor = :red)
+fig
`,3),t=[n];function p(e,E,d,r,g,F){return a(),i("div",null,t)}const o=s(l,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.lean.js b/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.lean.js new file mode 100644 index 00000000..18d80eab --- /dev/null +++ b/previews/PR54/assets/examples_2d_band_filled_under_bell.md.BjlS1Csc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/filled_under_bell.DJyWrU2m.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/band/filled_under_bell.md","filePath":"examples/2d/band/filled_under_bell.md","lastUpdated":null}'),l={name:"examples/2d/band/filled_under_bell.md"},n=h("",3),t=[n];function p(e,E,d,r,g,F){return a(),i("div",null,t)}const o=s(l,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.js b/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.js new file mode 100644 index 00000000..6bd142e4 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/barplot_cmap_y_error.9wG3xrgC.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/barplot_cmap_y_error.md","filePath":"examples/2d/bars/barplot_cmap_y_error.md","lastUpdated":null}'),t={name:"examples/2d/bars/barplot_cmap_y_error.md"},n=h('

barplot with colormap and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y, yerr = 1:2:20, 5 * rand(10), 0.4 * abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1]; xlabel = "variables", ylabel = "values")
+barplot!(ax, x, y; strokewidth = 1, color = x, colormap = (:Spectral_10, 0.85),
+    strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
`,3),l=[n];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(t,[["render",p]]);export{F as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.lean.js b/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.lean.js new file mode 100644 index 00000000..5084c305 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_barplot_cmap_y_error.md.CHnktPP2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/barplot_cmap_y_error.9wG3xrgC.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/barplot_cmap_y_error.md","filePath":"examples/2d/bars/barplot_cmap_y_error.md","lastUpdated":null}'),t={name:"examples/2d/bars/barplot_cmap_y_error.md"},n=h("",3),l=[n];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(t,[["render",p]]);export{F as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.js b/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.js new file mode 100644 index 00000000..8b53e6d5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/band_y_error.D4QvtXrq.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/barplot_y_error.md","filePath":"examples/2d/bars/barplot_y_error.md","lastUpdated":null}'),k={name:"examples/2d/bars/barplot_y_error.md"},t=h('

barplot and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y, yerr = 1:2:20, 5 * rand(10), 0.4 * abs.(randn(10))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values")
+barplot!(ax, x, y; strokewidth = 1, color = :transparent, strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
`,3),l=[t];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.lean.js b/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.lean.js new file mode 100644 index 00000000..e549c26b --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_barplot_y_error.md.C8-mYIma.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/band_y_error.D4QvtXrq.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/barplot_y_error.md","filePath":"examples/2d/bars/barplot_y_error.md","lastUpdated":null}'),k={name:"examples/2d/bars/barplot_y_error.md"},t=h("",3),l=[t];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.js b/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.js new file mode 100644 index 00000000..aac25bae --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAABV5JREFUeAHtwTEBAAAMAiAP+1feggj07gIAqxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBg2AMOLgk+RGpjZQAAAABJRU5ErkJggg==",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/stripped_bars.md","filePath":"examples/2d/bars/stripped_bars.md","lastUpdated":null}'),n={name:"examples/2d/bars/stripped_bars.md"},A=h('

stripped bars

julia
# This currently fails with CairoMakie
+# https://discourse.julialang.org/t/striped-colors-for-e-g-bar-plots-in-julia/64435/3
+using GLMakie.Makie, GLMakie, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+Random.seed!(13)
+# patterns
+# \`'/'\`, \`'\\\\'\`, \`'-'\`, \`'|'\`, \`'x'\`, and \`'+'\`
+directions = [Vec2f(1), Vec2f(1, -1), Vec2f(1, 0), Vec2f(0, 1),
+    [Vec2f(1), Vec2f(1, -1)], [Vec2f(1, 0), Vec2f(0, 1)]]
+colors = [:white, :orange, (:green, 0.5), :yellow, (:blue, 0.85), :black]
+# then defining the patches are defined by calling LinePattern
+patternColors = [Makie.LinePattern(direction = hatch; width = 5, tilesize = (20, 20),
+    linecolor = colors[indx], background_color = colors[end-indx+1])
+        for (indx, hatch) in enumerate(directions)];
+
+# We could start with normal barplots
+fig, ax, pltobj = barplot(1:2, strokewidth = 2, color = ["grey", "orange"],
+    figure = (; size = (600, 400)))
+# and then append new bars with the patterns defined above
+for (idx, pattern) in enumerate(patternColors)
+    barplot!(ax, [idx + 2], [idx * (2rand() + 1)], color = pattern, strokewidth = 2)
+end
+# change x ticks at every bar
+ax.xticks = (1:8, ["grey", "orange", "/", "\\\\", "-", "|", "x", "+"])
+fig
`,3),t=[A];function p(l,E,e,r,g,d){return a(),i("div",null,t)}const F=s(n,[["render",p]]);export{C as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.lean.js b/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.lean.js new file mode 100644 index 00000000..074fea42 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_stripped_bars.md.Cj3rSUy4.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAABV5JREFUeAHtwTEBAAAMAiAP+1feggj07gIAqxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBgWAMAwxoAGNYAwLAGAIY1ADCsAYBhDQAMawBg2AMOLgk+RGpjZQAAAABJRU5ErkJggg==",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/stripped_bars.md","filePath":"examples/2d/bars/stripped_bars.md","lastUpdated":null}'),n={name:"examples/2d/bars/stripped_bars.md"},A=h("",3),t=[A];function p(l,E,e,r,g,d){return a(),i("div",null,t)}const F=s(n,[["render",p]]);export{C as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.js b/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.js new file mode 100644 index 00000000..69d35954 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/x_barplot_error_y_error.C6kTHHpp.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/x_barplot_error_y_error.md","filePath":"examples/2d/bars/x_barplot_error_y_error.md","lastUpdated":null}'),n={name:"examples/2d/bars/x_barplot_error_y_error.md"},t=h('

x-error barplot and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts =(; regular= "sans"))
+ax = Axis(fig[1, 1], xlabel = "variables", ylabel = "values")
+barplot!(ax, x, y; width = 1.8xerr, strokewidth = 1, color = :transparent,
+    strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
`,3),l=[t];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.lean.js b/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.lean.js new file mode 100644 index 00000000..9f2f1562 --- /dev/null +++ b/previews/PR54/assets/examples_2d_bars_x_barplot_error_y_error.md.CFPN6LSd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/x_barplot_error_y_error.C6kTHHpp.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/bars/x_barplot_error_y_error.md","filePath":"examples/2d/bars/x_barplot_error_y_error.md","lastUpdated":null}'),n={name:"examples/2d/bars/x_barplot_error_y_error.md"},t=h("",3),l=[t];function p(r,e,E,d,y,g){return a(),i("div",null,l)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.js b/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.js new file mode 100644 index 00000000..21557663 --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.js @@ -0,0 +1,16 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/airquality.D-HWF3R4.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/airquality.md","filePath":"examples/2d/boxplots/airquality.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/airquality.md"},k=h('

boxplots for airquality data

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+airquality = dataset("datasets", "airquality")
+categories = ["Ozone", "Solar.R", "Wind", "Temp"]
+colors = categorical_colors(:Set1, length(categories))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xticks = (1:length(categories), categories))
+for (indx, f) in enumerate(categories)
+    datam = filter(x -> x !== missing, airquality[:, f])
+    a = fill(indx, length(datam))
+    boxplot!(ax, a, datam; whiskerwidth = 1, width = 0.35,
+        color = (colors[indx], 0.45), whiskercolor = (colors[indx], 1),
+        mediancolor = :black)
+end
+fig
`,3),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.lean.js b/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.lean.js new file mode 100644 index 00000000..72e1aaac --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_airquality.md.CJoN9iik.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/airquality.D-HWF3R4.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/airquality.md","filePath":"examples/2d/boxplots/airquality.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/airquality.md"},k=h("",3),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.js b/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.js new file mode 100644 index 00000000..3dc74077 --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/boxplot_collection.s1CoOzB_.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/boxplots_collection.md","filePath":"examples/2d/boxplots/boxplots_collection.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/boxplots_collection.md"},l=h('

boxplot collection: Normal distributions

julia
using CairoMakie, Random, Distributions
+
+Random.seed!(13)
+n = 3000
+colors = resample_cmap(:spring, 8)[3:end]
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1,1]; # palette = (; patchcolor = colors),
+    xticks = (1:7, ["cat 1", "A", "B", "C", "D", "E", "F"]),
+    yticks = ([-5], ["cat 2"]), yticklabelrotation = π/2)
+boxplot!(ax, fill(-5,n), rand(Normal(0, 0.5), n); orientation=:horizontal,
+    whiskerwidth = 1, width = 2, #color = (:orange, 0.95),
+    whiskercolor = :red, mediancolor = :yellow, markersize = 8,
+    strokecolor = :black, strokewidth = 1, label = "horizontal")
+boxplot!(ax, fill(1,n), rand(Normal(1,  3), n); whiskerwidth = 1,
+    width = 0.5, color = :dodgerblue, whiskercolor = :dodgerblue,
+    mediancolor = :grey20, markersize = 5, strokecolor = :grey20,
+    strokewidth = 1, label = "vertical")
+for i in 2:7
+    boxplot!(ax, fill(i,n), rand(Normal(rand(-2:5), 2*rand() + 0.3), n);
+        whiskerwidth = 1, width = 0.35)
+end
+axislegend(ax, position = :lt)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.lean.js b/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.lean.js new file mode 100644 index 00000000..61b34d63 --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_boxplots_collection.md.CZvJjt3h.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/boxplot_collection.s1CoOzB_.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/boxplots_collection.md","filePath":"examples/2d/boxplots/boxplots_collection.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/boxplots_collection.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.js b/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.js new file mode 100644 index 00000000..c3208a98 --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/vertical_horizontal.DpluM9A4.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/vertical_horizontal.md","filePath":"examples/2d/boxplots/vertical_horizontal.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/vertical_horizontal.md"},l=h('

vertical and horizontal boxplots

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data_r = randn(n)
+a = fill(1, n)
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "variable", ylabel = "values",
+    xticks = ([1], ["normal Distribution"]))
+ax2 = Axis(fig[1, 2], xlabel = "values", ylabel = "variable",
+    yticks = ([1], ["normal Distribution"]), yticklabelrotation = pi / 2)
+
+boxplot!(ax1, a, data_r; whiskerwidth = 1, width = 0.35, color = (:red, 0.45),
+    whiskercolor = (:red, 1), mediancolor = :red, markersize = 8,
+    strokecolor = :black, strokewidth = 1, label = "vertical")
+limits!(ax1, 0, 2, -5, 5)
+boxplot!(ax2, a, data_r; orientation = :horizontal, whiskerwidth = 1, width = 0.35,
+    color = (:navy, 0.45), whiskercolor = (:navy, 1), mediancolor = :navy,
+    markersize = 8, strokecolor = :black, strokewidth = 1,
+    label = "horizontal")
+limits!(ax2, -5, 5, 0, 2)
+axislegend(ax1, position = :rb, framecolor = :transparent)
+axislegend(ax2, position = :rt, backgroundcolor = (:dodgerblue, 0.2))
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.lean.js b/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.lean.js new file mode 100644 index 00000000..6acbd47f --- /dev/null +++ b/previews/PR54/assets/examples_2d_boxplots_vertical_horizontal.md.BA-Sp9NA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/vertical_horizontal.DpluM9A4.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/boxplots/vertical_horizontal.md","filePath":"examples/2d/boxplots/vertical_horizontal.md","lastUpdated":null}'),n={name:"examples/2d/boxplots/vertical_horizontal.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.js b/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.js new file mode 100644 index 00000000..22b3a889 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contour_function.D6A3pH23.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/complex_function.md","filePath":"examples/2d/contour/complex_function.md","lastUpdated":null}'),n={name:"examples/2d/contour/complex_function.md"},l=h('

contour plots at levels

julia
using CairoMakie
+
+x = -2:0.005:2
+y = -2:0.005:2
+f(z) = (z^3 - 3) / z
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+
+fig = Figure(size=(900, 400), fontsize=20)
+axs = [Axis(fig[1, j], aspect=1) for j in 1:2]
+cmap = :roma
+contour!(axs[1], x, y, fargs, levels=30, colormap=cmap)
+pltobj1 = heatmap!(axs[2], x, y, fargs, colorrange=(-π, π), colormap=cmap)
+contour!(axs[2], x, y, fargs, levels=30, color=:white, linewidth=0.85)
+Colorbar(fig[1, 3], pltobj1, ticks=([-π, -π / 2, 0, π / 2, π],
+    ["-π", "-π/2", "0", "π/2", "π"]))
+limits!(axs[1], -2, 2, -2, 2)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.lean.js b/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.lean.js new file mode 100644 index 00000000..84f3769d --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_complex_function.md.tRD7nEPm.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contour_function.D6A3pH23.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/complex_function.md","filePath":"examples/2d/contour/complex_function.md","lastUpdated":null}'),n={name:"examples/2d/contour/complex_function.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.js b/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.js new file mode 100644 index 00000000..e3f42a2d --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contour_over_heatmap.C3qh2cpn.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/contour_over_heatmap.md","filePath":"examples/2d/contour/contour_over_heatmap.md","lastUpdated":null}'),n={name:"examples/2d/contour/contour_over_heatmap.md"},t=h('

contour over heatmap

julia
using CairoMakie
+
+f(x, y) = (x + 2y^2) * abs(sin(y) + cos(x))
+x = y = 1:0.2:20
+z = [f(x, y) for x in x, y in y]
+
+fig = Figure(size=(1200, 400), fontsize=22)
+axs = [Axis(fig[1, j], aspect=1, xlabel="x", ylabel=j == 1 ? "y" : "")
+        for j in 1:3]
+p1 = heatmap!(axs[1], x, y, z, colormap=:plasma)
+contour!(axs[2], x, y, z; color=:black, levels=100:1:101)
+heatmap!(axs[3], x, y, z; colormap=(:plasma, 0.5))
+contour!(axs[3], x, y, z; color=:white, levels=100:1:101)
+Colorbar(fig[1, 4], p1, width=20, ticksize=20, tickalign=1)
+[limits!(axs[i], 1, 20, 1, 20) for i in 1:3]
+[hideydecorations!(axs[i], grid=false, ticks=false) for i in 2:3]
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.lean.js b/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.lean.js new file mode 100644 index 00000000..a3730233 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_contour_over_heatmap.md.CEQJ4I5T.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contour_over_heatmap.C3qh2cpn.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/contour_over_heatmap.md","filePath":"examples/2d/contour/contour_over_heatmap.md","lastUpdated":null}'),n={name:"examples/2d/contour/contour_over_heatmap.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.js b/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.js new file mode 100644 index 00000000..1a965976 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/egg_shape.BJhOTppg.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/egg_shape.md","filePath":"examples/2d/contour/egg_shape.md","lastUpdated":null}'),n={name:"examples/2d/contour/egg_shape.md"},l=h('

contour levels: egg shape

julia
using CairoMakie, Random
+x = -1:0.02:1
+y = -1.5:0.02:2
+egg(x, y) = x^2 + y^2 / (1.4 + y / 5)^2
+segg = [egg(x, y) for x in x, y in y]
+
+fig = Figure(size=(600, 400))
+ax = Axis(fig[1, 1], aspect=DataAspect(), xlabel="x", ylabel="y",
+    xgridstyle=:dash, ygridstyle=:dash,
+    xgridcolor=:grey, ygridcolor=:grey)
+cl = contour!(x, y, segg;
+    linewidth=0.85,
+    colormap=:Spectral_11,
+    levels=0:0.02:1
+    )
+# colsize!(fig.layout, 1, Aspect(1, 0.6))
+fig
`,3),p=[l];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.lean.js b/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.lean.js new file mode 100644 index 00000000..79a699c1 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_egg_shape.md.BFjUX5W_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/egg_shape.BJhOTppg.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/egg_shape.md","filePath":"examples/2d/contour/egg_shape.md","lastUpdated":null}'),n={name:"examples/2d/contour/egg_shape.md"},l=h("",3),p=[l];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.js b/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.js new file mode 100644 index 00000000..2cf8cf08 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/overlayed_functions.CPbi9en5.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/overlayed_functions.md","filePath":"examples/2d/contour/overlayed_functions.md","lastUpdated":null}'),n={name:"examples/2d/contour/overlayed_functions.md"},l=h('

Multiple overlayed contour plots

julia
using CairoMakie
+
+f(x, y) = abs(sin(x)* sin(y))
+g(x, y) = abs(cos(x)* cos(y))
+
+x = y = -3:0.1:3
+zf = [f(x, y) for x in x, y in y]
+zg = [g(x, y) for x in x, y in y]
+
+fig = Figure(; size=(600, 400))
+ax = Axis(fig[1,1]; xlabel="x", ylabel="y")
+contour!(ax, x, y, zf; labels=true, color=:orangered, linestyle=:dash,
+    linewidth=2, label = "f(x,y)",
+    labelcolor=:red, levels = [0.5,1], labelsize=14)
+contour!(ax, x, y, zg; labels=true, color=:dodgerblue, linewidth=2,
+    label = "g(x,y)", labelcolor=:blue, levels = [0.5,1], labelsize=14)
+axislegend()
+fig
`,3),t=[l];function p(e,E,r,d,y,g){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.lean.js b/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.lean.js new file mode 100644 index 00000000..3dcabb2d --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_overlayed_functions.md.DJe553t1.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/overlayed_functions.CPbi9en5.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/overlayed_functions.md","filePath":"examples/2d/contour/overlayed_functions.md","lastUpdated":null}'),n={name:"examples/2d/contour/overlayed_functions.md"},l=h("",3),t=[l];function p(e,E,r,d,y,g){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.js b/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.js new file mode 100644 index 00000000..558ff27c --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/qubit.kcVGsmCR.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/qubit.md","filePath":"examples/2d/contour/qubit.md","lastUpdated":null}'),n={name:"examples/2d/contour/qubit.md"},t=h('

contour levels: qubit

julia
using CairoMakie
+
+function tα_qubit(β, ψ1, ψ2, fα, f)
+    2 + 2 * β - cos(ψ1) - cos(ψ2) - 2 * β * cos(π * fα) * cos(2 * π * f + π *- ψ1 - ψ2)
+end
+ψ1 = ψ2 = range(0, 4 * π, length=100)
+z = [tα_qubit(0.61, x, y, 0.2, 0.1) for x in ψ1, y in ψ2]
+
+fig = Figure(size=(600, 400))
+ax = Axis(fig[1, 1], aspect=1, xlabel="ψ1", ylabel="ψ2")
+cls = contour!(ψ1, ψ2, z; colormap=:plasma, levels=20, linewidth=1.5)
+# Colorbar(fig[1, 2], cls, label="α-q")
+limits!(ax, 0, , 0, )
+# colsize!(fig.layout, 1, Aspect(1, 1.0))
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.lean.js b/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.lean.js new file mode 100644 index 00000000..24e4d3f8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_contour_qubit.md.BHSxXKfy.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/qubit.kcVGsmCR.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/contour/qubit.md","filePath":"examples/2d/contour/qubit.md","lastUpdated":null}'),n={name:"examples/2d/contour/qubit.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.js b/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.js new file mode 100644 index 00000000..a32779e7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/density.D1R_iqvD.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/density/density.md","filePath":"examples/2d/density/density.md","lastUpdated":null}'),n={name:"examples/2d/density/density.md"},t=h('

density plot

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+colors = ["#FF410D", "#6EE2FF", "#F7C530", "#95CC5E", "#D0DFE6", "#F79D1E"]
+μσpairs = [[2,0.5], [-1,2], [0.25,1], [1,0.1], [1, 0.05], [1.2,0.1]]
+
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1]; palette = (; patchcolor = tuple.(colors, 0.45)))
+for (idx, μσ) in enumerate(μσpairs)
+    density!(rand(Normal(μσ...), 1000), strokewidth = 1.5,
+        strokecolor = :grey20, direction = idx > 3 ? :x : :y,
+        linestyle = idx > 3 ? :dash : :solid,
+        label = "$(μσ[1]),  $(μσ[2])")
+end
+axislegend(L"\\mu,\\quad\\sigma"; position= :cb, titlesize= 22)
+hidedecorations!(ax; grid = false)
+fig
`,3),l=[t];function p(E,e,d,r,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.lean.js b/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.lean.js new file mode 100644 index 00000000..5527bcd8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_density_density.md.BCM05v3Q.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/density.D1R_iqvD.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/density/density.md","filePath":"examples/2d/density/density.md","lastUpdated":null}'),n={name:"examples/2d/density/density.md"},t=h("",3),l=[t];function p(E,e,d,r,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.js b/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.js new file mode 100644 index 00000000..7e229d88 --- /dev/null +++ b/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/mtcars_density.Coa6UAae.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/density/mtcars_density.md","filePath":"examples/2d/density/mtcars_density.md","lastUpdated":null}'),n={name:"examples/2d/density/mtcars_density.md"},t=h('

density mtcars

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+cars = dataset("datasets", "mtcars")
+byCat = cars.Cyl
+categ = unique(byCat)
+colors1 = categorical_colors(:Hiroshige, length(categ))
+colors2 = categorical_colors(:gnuplot, length(categ))
+
+fig = Figure(; size = (600, 800))
+ax1 = Axis(fig[2, 1], xlabel = "MPG", ylabel = "density", xgridstyle = :dash,
+    ygridstyle = :dash, rightspinevisible = false, topspinevisible = false)
+ax2 = Axis(fig[3, 1], xlabel = "MPG", ylabel = "density")
+for (i, c) in enumerate(categ)
+    indc = findall(x -> x == c, byCat)
+    density!(ax1, cars.MPG[indc]; color = (colors1[i], 0.5), label = "$(c)",
+        strokewidth = 1.25, strokecolor = colors1[i])
+    density!(ax2, cars.MPG[indc], color = (colors2[i], 0.5), label = "$(c)",
+        strokewidth = 1.25, strokecolor = colors2[i])
+end
+Legend(fig[1, 1], ax1, "Cyl", orientation = :horizontal,
+    tellheight = true, tellwidth = false,
+    framevisible = false, titleposition = :left)
+Legend(fig[3, 2], ax2, "Cyl")
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.lean.js b/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.lean.js new file mode 100644 index 00000000..15759269 --- /dev/null +++ b/previews/PR54/assets/examples_2d_density_mtcars_density.md.BKppsPLG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/mtcars_density.Coa6UAae.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/density/mtcars_density.md","filePath":"examples/2d/density/mtcars_density.md","lastUpdated":null}'),n={name:"examples/2d/density/mtcars_density.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.js b/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.js new file mode 100644 index 00000000..0a8fa82b --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/errorbars.u3m51XWo.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/errorbars.md","filePath":"examples/2d/errorbars/errorbars.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/errorbars.md"},l=h('

errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+n = 50
+x = 1:n
+y = sin.(x) .+ randn(n)/10
+yerr = 0.2*abs.(randn(n))
+xerr = abs.(randn(n))
+
+fig, ax, =  errorbars(x, y, yerr; color = 1:n, colormap = ([:black, :orangered]),
+    whiskerwidth = 10, linewidth = 1.5,
+    figure = (;size = (600,400)))
+errorbars!(x, y, xerr; color = 1:n, colormap = ([:orangered, :black]),
+    direction = :x, linewidth = 1.5, whiskerwidth = 10)
+scatter!(x, y; markersize = 10, color = (:black, 0.25),
+    strokewidth = 1, strokecolor = :black)
+lines!(x, y; linewidth = 0.5, linestyle = :dashdot)
+hidedecorations!(ax; grid = false)
+fig
`,3),t=[l];function p(e,r,E,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.lean.js b/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.lean.js new file mode 100644 index 00000000..18317b29 --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_errorbars.md.D_DDeRbo.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/errorbars.u3m51XWo.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/errorbars.md","filePath":"examples/2d/errorbars/errorbars.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/errorbars.md"},l=h("",3),t=[l];function p(e,r,E,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.js b/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.js new file mode 100644 index 00000000..4f71db05 --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/simple_x_y.Dwippo4-.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/simple_x_y.md","filePath":"examples/2d/errorbars/simple_x_y.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/simple_x_y.md"},t=h('

errorbars in x and y

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1]; xlabel = "variable", ylabel = "values")
+errorbars!(ax, x, y, yerr; whiskerwidth = 12, color = :orangered)
+errorbars!(ax, x, y, xerr; whiskerwidth = 12, direction = :x)
+fig
`,3),l=[t];function p(e,r,E,d,y,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.lean.js b/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.lean.js new file mode 100644 index 00000000..4cc6af13 --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_simple_x_y.md.BMK6Tzct.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/simple_x_y.Dwippo4-.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/simple_x_y.md","filePath":"examples/2d/errorbars/simple_x_y.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/simple_x_y.md"},t=h("",3),l=[t];function p(e,r,E,d,y,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.js b/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.js new file mode 100644 index 00000000..cedbe9ed --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/y_colormap.4GuRjphB.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/y_colormap.md","filePath":"examples/2d/errorbars/y_colormap.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/y_colormap.md"},l=h('

errorbars with a colormap

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values", xgridstyle = :dash,
+    ygridstyle = :dash)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12, color = yerr,
+    linewidth = 2, colormap = :viridis)
+scatter!(ax, x, y; color = yerr, colormap = :viridis, markersize = 15)
+fig
`,3),t=[l];function p(r,e,E,d,y,g){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.lean.js b/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.lean.js new file mode 100644 index 00000000..c1bf6060 --- /dev/null +++ b/previews/PR54/assets/examples_2d_errorbars_y_colormap.md.4-tpCPKF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/y_colormap.4GuRjphB.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/errorbars/y_colormap.md","filePath":"examples/2d/errorbars/y_colormap.md","lastUpdated":null}'),n={name:"examples/2d/errorbars/y_colormap.md"},l=h("",3),t=[l];function p(r,e,E,d,y,g){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.js new file mode 100644 index 00000000..2aec23c6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap.Cc7vraBM.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap.md","filePath":"examples/2d/heatmaps/heatmap.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmap.md"},n=h('

heatmap

julia
using CairoMakie, Random
+
+using GLMakie
+Random.seed!(123)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1]; xlabel = "x", ylabel = "y")
+hmap = heatmap!(2rand(20, 20) .- 1; colormap = :Spectral_11)
+Colorbar(fig[1, 2], hmap; label = "values", width = 15, ticksize = 15, tickalign = 1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
`,3),p=[n];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.lean.js new file mode 100644 index 00000000..cd3b81b9 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap.md.Cg1kJyqT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap.Cc7vraBM.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap.md","filePath":"examples/2d/heatmaps/heatmap.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmap.md"},n=h("",3),p=[n];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.js new file mode 100644 index 00000000..f56f8045 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap1SharedCbar.Nw3gfKZA.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap1SharedCbar.md","filePath":"examples/2d/heatmaps/heatmap1SharedCbar.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmap1SharedCbar.md"},t=h('

heatmap with 1 shared colorbar

julia
using CairoMakie
+using Random
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+axs = [Axis(fig[1, j], aspect = 1, xticks = [1, 10], yticks = [1, 10]) for j in 1:2]
+[heatmap!(axs[i], 1:10, 1:10, rand(10, 10); colormap = :plasma,
+    colorrange = (0, 1)) for i in 1:2]
+Colorbar(fig[2, :1:2], colormap = :plasma, limits= (0,1),
+    vertical = false, flipaxis = false, height = 15, tickwidth = 2,
+    ticklabelsize = 14, ticks = [0, 0.5, 1])
+hideydecorations!(axs[2], ticks = false)
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.lean.js new file mode 100644 index 00000000..b76e299a --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap1SharedCbar.md.BnznKOoE.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap1SharedCbar.Nw3gfKZA.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap1SharedCbar.md","filePath":"examples/2d/heatmaps/heatmap1SharedCbar.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmap1SharedCbar.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.js new file mode 100644 index 00000000..56faa1b6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap2SharedCbars.DF0fnePj.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap2SharedCbars.md","filePath":"examples/2d/heatmaps/heatmap2SharedCbars.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmap2SharedCbars.md"},t=h('

heatmap with 2 shared colorbars

julia
using CairoMakie, Random
+using ColorSchemes
+
+Random.seed!(123)
+cmaps = collect(keys(colorschemes))
+fig = Figure(; size = (600, 400))
+for i in 1:2, j in 1:2:3
+    ax = Axis(fig[i, j]; aspect = 1)
+    hm = heatmap!(ax, 1:10, 1:10, rand(10, 10); colorrange = (0, 1),
+        colormap = cmaps[5j])
+    Colorbar(fig[1:2, j+1]; limits=(0,1), colormap = cmaps[5j], ticklabelsize = 14,
+        height = Relative(0.85), ticks = [0, 0.5, 1], tickwidth = 2)
+end
+fig
`,3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.lean.js new file mode 100644 index 00000000..95cef715 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmap2SharedCbars.md.B314zEBU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmap2SharedCbars.DF0fnePj.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmap2SharedCbars.md","filePath":"examples/2d/heatmaps/heatmap2SharedCbars.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmap2SharedCbars.md"},t=h("",3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.js new file mode 100644 index 00000000..e1ec8cb6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/heatmapCbarBottom.D5z-tnD6.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarBottom.md","filePath":"examples/2d/heatmaps/heatmapCbarBottom.md","lastUpdated":null}'),k={name:"examples/2d/heatmaps/heatmapCbarBottom.md"},n=h('

heatmap with bottom colorbar

julia
using CairoMakie, Random
+
+Random.seed!(123)
+fig = Figure(;size = (600, 400))
+ax = Axis(fig[1, 1], aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(rand(20, 20), colormap = :lajolla)
+Colorbar(fig[2, 1], hmap, label = "values", height = 15, vertical = false,
+    flipaxis = false, ticksize = 15, tickalign = 1, width = Relative(0.5))
+rowsize!(fig.layout, 1, Aspect(1, 0.5))
+fig
`,3),l=[n];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.lean.js new file mode 100644 index 00000000..3febebcf --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarBottom.md.uqbEi1sC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/heatmapCbarBottom.D5z-tnD6.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarBottom.md","filePath":"examples/2d/heatmaps/heatmapCbarBottom.md","lastUpdated":null}'),k={name:"examples/2d/heatmaps/heatmapCbarBottom.md"},n=h("",3),l=[n];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.js new file mode 100644 index 00000000..c1e611f6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/heatmapCbarLeft.Dmjije-0.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarLeft.md","filePath":"examples/2d/heatmaps/heatmapCbarLeft.md","lastUpdated":null}'),k={name:"examples/2d/heatmaps/heatmapCbarLeft.md"},l=h('

heatmap with left colorbar

julia
using CairoMakie, Random
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 2]; xlabel = "x", ylabel = "y")
+hmap = heatmap!(2rand(20, 20) .- 1; colormap = :Spectral_11)
+Colorbar(fig[1, 1], hmap; label = "values", width = 15, flipaxis = false,
+    ticksize = 15, tickalign = 1)
+colsize!(fig.layout, 2, Aspect(1, 1.0))
+fig
`,3),n=[l];function p(e,E,r,d,g,y){return a(),i("div",null,n)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.lean.js new file mode 100644 index 00000000..76fa5295 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarLeft.md.BVT0SvbT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/heatmapCbarLeft.Dmjije-0.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarLeft.md","filePath":"examples/2d/heatmaps/heatmapCbarLeft.md","lastUpdated":null}'),k={name:"examples/2d/heatmaps/heatmapCbarLeft.md"},l=h("",3),n=[l];function p(e,E,r,d,g,y){return a(),i("div",null,n)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.js new file mode 100644 index 00000000..a9eec034 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapCbarTop.nC1rSgEE.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarTop.md","filePath":"examples/2d/heatmaps/heatmapCbarTop.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapCbarTop.md"},p=h('

heatmap with top colorbar

julia
using CairoMakie, Random
+CairoMakie.activate!() #HIDE
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[2, 1], aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(rand(20, 20), colormap = :CMRmap)
+Colorbar(fig[1, 1], hmap, label = "values", height = 15, vertical = false,
+    ticksize = 15, tickalign = 1, width = Relative(0.5))
+rowsize!(fig.layout, 2, Aspect(1, 0.5))
+fig
`,3),n=[p];function l(e,E,r,d,g,y){return a(),i("div",null,n)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.lean.js new file mode 100644 index 00000000..9f074ff9 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapCbarTop.md.nrlfqSLQ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapCbarTop.nC1rSgEE.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapCbarTop.md","filePath":"examples/2d/heatmaps/heatmapCbarTop.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapCbarTop.md"},p=h("",3),n=[p];function l(e,E,r,d,g,y){return a(),i("div",null,n)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.js new file mode 100644 index 00000000..5b8799be --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapGrid.CVDB_Wjf.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapGrid.md","filePath":"examples/2d/heatmaps/heatmapGrid.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapGrid.md"},t=h('

heatmaps: grid

julia
using CairoMakie, Random, ColorSchemes
+
+Random.seed!(21)
+cmaps = collect(keys(colorschemes))
+fig = Figure(; size = (1200, 800), fontsize = 20)
+for i in 1:2, j in 1:2:5
+    ax = Axis(fig[i, j], aspect = 1, xticks = [1, 10], yticks = [1, 10])
+    hmap = heatmap!(ax, 1:10, 1:10, rand(10, 10); colorrange = (0, 1),
+        colormap = cmaps[rand(1:length(cmaps))])
+    Colorbar(fig[i, j+1], hmap; height = Relative(0.5), tickwidth = 2,
+        ticks = [0, 0.5, 1])
+end
+fig
`,3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.lean.js new file mode 100644 index 00000000..3166a969 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapGrid.md.Cdlbm4FJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapGrid.CVDB_Wjf.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapGrid.md","filePath":"examples/2d/heatmaps/heatmapGrid.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapGrid.md"},t=h("",3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.js new file mode 100644 index 00000000..b43f3c5b --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapIrregular.Bc4nFQp6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapIrregular.md","filePath":"examples/2d/heatmaps/heatmapIrregular.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapIrregular.md"},n=h('

heatmap irregular steps

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = y = sqrt.(1:10:101)
+z = abs.(randn(10, 10))
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1]; aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(x, y, z; colormap = :magma)
+Colorbar(fig[1, 2], hmap; label="z values", width=15, ticksize=15, tickalign=1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
`,3),p=[n];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.lean.js new file mode 100644 index 00000000..b30a7565 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregular.md.C92i0hY-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapIrregular.Bc4nFQp6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapIrregular.md","filePath":"examples/2d/heatmaps/heatmapIrregular.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapIrregular.md"},n=h("",3),p=[n];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(t,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.js new file mode 100644 index 00000000..32314eeb --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.js @@ -0,0 +1,36 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapIrregularCategories.FpicX_rN.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapIrregularCategories.md","filePath":"examples/2d/heatmaps/heatmapIrregularCategories.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapIrregularCategories.md"},t=h('

heatmap: Irregular Categories

Example by @walra356 (modified)

julia
using CairoMakie, Random
+Random.seed!(13)
+
+
+n= 5
+x = rand(n)                        # specify x steplength
+y = rand(n)                        # specify y steplength
+σ = rand(length(x), length(y))      # beware of dims
+
+# custom ticks
+function steps(x::Vector{T} where T<:Real)
+    sum(x .< 0) == 0 || error("Error: $x - negative step length not allowed")
+    return (s = append!(eltype(x)[0],x); [Base.sum(s[1:i]) for i  Base.eachindex(s)])
+end
+function stepcenters(x::Vector{T} where T<:Real)
+    δ = x .* 0.5
+    s = append!(eltype(x)[0],x)
+    return [Base.sum(s[1:i]) for i  Base.eachindex(x)] .+ δ
+end
+stepedges(x::Vector{T} where T<:Real) = steps(x)
+
+# the actual plot
+theme = Theme(fontsize = 16, colormap = :gist_earth, ; size = (750,450))
+set_theme!(theme)
+
+attr1 = (xticks = (stepcenters(x),string.(1:n)),
+    yticks = (stepcenters(y), string.(1:n)), xlabel = "cat", )
+attr2 = (xticks = (stepedges(x),string.(0:n)),
+    yticks = (stepedges(y), string.(0:n)), xlabel="cat", )
+
+fig = Figure()
+ax1 = Axis(fig[1,1]; attr1...)
+ax2 = Axis(fig[1,2]; attr2...)
+heatmap!(ax1, steps(x), steps(y), σ)
+heatmap!(ax2, steps(x), steps(y), σ)
+fig
`,4),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.lean.js new file mode 100644 index 00000000..46059781 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapIrregularCategories.md.CRFpnb_f.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapIrregularCategories.FpicX_rN.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapIrregularCategories.md","filePath":"examples/2d/heatmaps/heatmapIrregularCategories.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapIrregularCategories.md"},t=h("",4),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.js new file mode 100644 index 00000000..dd362f3b --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapLogIrregular.CJz-dPRE.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapLogIrregular.md","filePath":"examples/2d/heatmaps/heatmapLogIrregular.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapLogIrregular.md"},l=h('

heatmap: log scales

julia
using CairoMakie, Colors, ColorSchemes, Random
+
+Random.seed!(38)
+x = y = 1:100
+z = exp10.(2 * rand(100, 100))
+z[1, 1] = 99
+z[2, 1] = 90
+z[3, 1] = 10
+cmap = cgrad(:gnuplot, scale = :log10)
+ticks = (vcat(collect(1:9), collect(10:10:100)),
+    ["1", fill("", 8)..., "10", fill("", 8)..., "10²"])
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1], xscale = log10, yscale = log10,
+    xlabel = "x", ylabel = "y")
+hmap = heatmap!(x, y, z, colormap = cmap, colorrange = (1, 100))
+cbar = Colorbar(fig[1, 2], hmap, label = "z values",
+    width = 15, ticksize = 15, labelsize = 18, ticklabelsize = 18,
+    tickalign = 1, minortickalign = 1,
+    scale = log10)
+ax.xticks = ticks
+ax.yticks = ticks
+cbar.ticks = ticks
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
`,3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.lean.js new file mode 100644 index 00000000..846b6956 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapLogIrregular.md.ADoGDHvx.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapLogIrregular.CJz-dPRE.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapLogIrregular.md","filePath":"examples/2d/heatmaps/heatmapLogIrregular.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapLogIrregular.md"},l=h("",3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.js new file mode 100644 index 00000000..56151397 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.js @@ -0,0 +1,44 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleAdd.DA574yQu.png",t="/previews/PR54/assets/demsqqw.B10Tn1pG.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleAdd.md","filePath":"examples/2d/heatmaps/heatmapScaleAdd.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapScaleAdd.md"},p=h('

heatmap: scales added

by @walra356

julia
using CairoMakie
+
+supertitle = "adding physical scale to exposure heatmap of camera chip"
"adding physical scale to exposure heatmap of camera chip"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                        # pixel dimensions camera chip
+(px, py) = (1:dimX, 1:dimY)                 # pixel positions
+(ix, iy) = (10, 3)                          # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (0.0, 0.0)                           # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([2.0, 6.0, 10.0, 14.0, 18.0, 22.0, 26.0, 30.0, 34.0, 38.0  …  122.0, 126.0, 130.0, 134.0, 138.0, 142.0, 146.0, 150.0, 154.0, 158.0], [2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, 42.5, 47.5  …  102.5, 107.5, 112.5, 117.5, 122.5, 127.5, 132.5, 137.5, 142.5, 147.5])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ = σ[px, py]                                # exposure matrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \\nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (0.0 μm, 0.0 μm)\\n            w.r.t. left-bottom edge of camera chip\\n            \\nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+
+fig = Figure()

specify attributes

julia
fsize = fig.scene.theme.fontsize.val
+fres = fig.scene.theme.size.val[1]
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 100, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 100, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr4 = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.98),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.98f0))

create axes, add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+hm1 = heatmap!(ax1, px, py, σ)
+hm2 = heatmap!(ax2, x, y, σ)
+ax4 = Colorbar(fig, hm1; attr4...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+axt = Label(fig, text = supertitle, fontsize = 2fsize)
Label()

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = ax4
+fig[2, :] = axn
+fig[0, :] = axt
+fig
`,28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const C=s(n,[["render",e]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.lean.js new file mode 100644 index 00000000..9c29c0a1 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleAdd.md.DypX8-kX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleAdd.DA574yQu.png",t="/previews/PR54/assets/demsqqw.B10Tn1pG.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleAdd.md","filePath":"examples/2d/heatmaps/heatmapScaleAdd.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapScaleAdd.md"},p=h("",28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const C=s(n,[["render",e]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.js new file mode 100644 index 00000000..2884c401 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.js @@ -0,0 +1,44 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleCrosshair.BmV0sGWo.png",t="/previews/PR54/assets/demsqqw.B10Tn1pG.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleCrosshair.md","filePath":"examples/2d/heatmaps/heatmapScaleCrosshair.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapScaleCrosshair.md"},p=h('

heatmap: scale crosshair

by @walra356

julia
using CairoMakie
+
+supertitle = "adding a crosshair to exposure heatmap of camera chip"
"adding a crosshair to exposure heatmap of camera chip"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                        # pixel dimensions camera chip
+(px, py) = (1:dimX, 1:dimY)                 # pixel positions
+(ix, iy) = (10, 3)                          # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (edges(ix, Δx, 0), edges(iy, Δy, 0)) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([-36.0, -32.0, -28.0, -24.0, -20.0, -16.0, -12.0, -8.0, -4.0, 0.0  …  84.0, 88.0, 92.0, 96.0, 100.0, 104.0, 108.0, 112.0, 116.0, 120.0], [-10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0  …  90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0, 125.0, 130.0, 135.0])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ = σ[px, py]                                # exposure matrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \\nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (38.0 μm, 12.5 μm)\\n            w.r.t. left-bottom edge of camera chip\\n            \\nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.98),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.98f0))

create axes, add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+hm1 = heatmap!(ax1, px, py, σ)
+hm2 = heatmap!(ax2, x, y, σ)
+axc = Colorbar(fig, hm1; attrc...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+axt = Label(fig, text = supertitle, fontsize = 2fsize)
+lnh = lines!(ax2, x, fill(0, length(x)), color = :white, linewidth = 1)
+lnv = lines!(ax2, fill(0, length(y)), y, color = :white, linewidth = 1)
Lines{Tuple{Vector{Point{2, Float64}}}}

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = axc
+fig[2, :] = axn
+fig[0, :] = axt
+fig
`,28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const C=s(n,[["render",e]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.lean.js new file mode 100644 index 00000000..a3ed4c65 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleCrosshair.md.DthI8kX0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleCrosshair.BmV0sGWo.png",t="/previews/PR54/assets/demsqqw.B10Tn1pG.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleCrosshair.md","filePath":"examples/2d/heatmaps/heatmapScaleCrosshair.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapScaleCrosshair.md"},p=h("",28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const C=s(n,[["render",e]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.js new file mode 100644 index 00000000..a3657294 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.js @@ -0,0 +1,53 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleDetail.DeZXsgBV.png",n="/previews/PR54/assets/demsqqw.B10Tn1pG.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleDetail.md","filePath":"examples/2d/heatmaps/heatmapScaleDetail.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapScaleDetail.md"},p=h('

heatmap: scale-detail

by @walra356

julia
using CairoMakie
+
+supertitle = "viewing heatmap detail under conservation of physical scale"
"viewing heatmap detail under conservation of physical scale"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 512
+dimY = 512                       # pixel dimensions
+(px, py) = (1:dimX, 1:dimY)                  # pixel positions
+(sx, sy) = (100:150, 380:420)                # idem for submatrix
+(ix, iy) = (125, 400)                        # selected pixel
(125, 400)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (0.0, 0.0) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
+(u, v) = (edges(sx, Δx, Ox), edges(sy, Δy, Oy))  # idem for submatrix
([398.0, 402.0, 406.0, 410.0, 414.0, 418.0, 422.0, 426.0, 430.0, 434.0  …  562.0, 566.0, 570.0, 574.0, 578.0, 582.0, 586.0, 590.0, 594.0, 598.0], [1897.5, 1902.5, 1907.5, 1912.5, 1917.5, 1922.5, 1927.5, 1932.5, 1937.5, 1942.5  …  2052.5, 2057.5, 2062.5, 2067.5, 2072.5, 2077.5, 2082.5, 2087.5, 2092.5, 2097.5])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ1 = σ[px, py] # raw matrix
+σ2 = σ[sx, sy] # submatrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \\nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (0.0 μm, 0.0 μm)\\n            w.r.t. left-bottom edge of camera chip\\n            \\nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\\n            pixel position of light spot: (ix, y0) = (125, 400)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attr3 = (attr..., title = "physical detail",
+  xticks = [u[1] - Δx / 2, u[1+ix-sx[1]], u[end] + Δx / 2],
+  yticks = [v[1] - Δy / 2, v[1+iy-sy[1]], v[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ2, 1)) / (Δy * size(σ2, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.54),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.54f0))

create axes and add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+ax3 = Axis(fig; attr3...)
+hm1 = heatmap!(ax1, px, py, σ1)
+hm2 = heatmap!(ax2, x, y, σ1)
+hm3 = heatmap!(ax3, u, v, σ2)
+axc = Colorbar(fig, hm1; attrc...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5) # footnote
+axt = Label(fig, text = supertitle, fontsize = 2fsize) # supertitle
Label()

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = ax3
+fig[1, 4] = axc
+fig[2, :] = axn
+fig[0, :] = axt
+fig
`,28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const o=s(t,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.lean.js new file mode 100644 index 00000000..af7f1f56 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleDetail.md.DDnp7_p7.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleDetail.DeZXsgBV.png",n="/previews/PR54/assets/demsqqw.B10Tn1pG.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleDetail.md","filePath":"examples/2d/heatmaps/heatmapScaleDetail.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapScaleDetail.md"},p=h("",28),l=[p];function e(E,d,r,g,y,F){return a(),i("div",null,l)}const o=s(t,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.js new file mode 100644 index 00000000..e4ca56d6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.js @@ -0,0 +1,62 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleSections.WszVDNV2.png",n="/previews/PR54/assets/ntvidfz.C-EBUH5u.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleSections.md","filePath":"examples/2d/heatmaps/heatmapScaleSections.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapScaleSections.md"},l=h('

heatmap: scale sections

by @walra356

julia
using CairoMakie
+
+supertitle = "heatmap of camera chip exposure with x and y sections"
"heatmap of camera chip exposure with x and y sections"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                       # pixel dimensions
+(px, py) = (1:dimX, 1:dimY)                  # pixel positions
+(ix, iy) = (10, 3)                        # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (edges(ix, Δx, 0), edges(iy, Δy, 0)) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([-36.0, -32.0, -28.0, -24.0, -20.0, -16.0, -12.0, -8.0, -4.0, 0.0  …  84.0, 88.0, 92.0, 96.0, 100.0, 104.0, 108.0, 112.0, 116.0, 120.0], [-10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0  …  90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0, 125.0, 130.0, 135.0])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ1 = σ[px, py]  # raw matrix
+sh = σ[:, iy]   # horizontal section (pixel row iy from bottom)
+sv = σ[ix, :]   # vertical section (pixel column ix from left)
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \\nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (38.0 μm, 12.5 μm)\\n            w.r.t. left-bottom edge of camera chip\\n            \\nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 850))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+fresx = fig.scene.theme.size.val[1]
+fresy = fig.scene.theme.size.val[2]
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.88),) # tweaked
+attrh = (attr..., title = "horizontal section",
+  xlabel = "x (μm)", ylabel = "exposure (counts)",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [0, 250, valmax],
+  limits = ((x[1] - Δx / 2, x[end] + Δx / 2), (0, valmax)),
+  height = fresy / 5, aspect = 2.05,) # tweaked
+attrv = (attr..., xlabel = "exposure (counts)",
+  xticks = [0, 250, valmax],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xreversed = true, yaxisposition = :right,
+  limits = ((0, valmax), (y[1] - Δy / 2, y[end] + Δy / 2)),
+  width = fresy / 5, aspect = 0.58,) # tweaked
(xlabelsize = 14.4, ylabelsize = 14.4, titlesize = 16.8, xautolimitmargin = (0, 0), yautolimitmargin = (0, 0), xlabel = "exposure (counts)", xticks = [0.0, 250.0, 500.0], yticks = [-12.5, 0.0, 50.0, 137.5], xreversed = true, yaxisposition = :right, limits = ((0, 500.0), (-12.5, 137.5)), width = 170.0, aspect = 0.58)

create axes and add contents

julia
ax1 = Axis(fig; attr1...)
+axh = Axis(fig; attrh...)
+axv = Axis(fig; attrv...)
+hm1 = heatmap!(ax1, x, y, σ1)
+axc = Colorbar(fig, hm1; attrc...)
+lfn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+lst = Label(fig, text = supertitle, fontsize = 2fsize)
+lvs = Label(fig, text = "vertical section", padding = (0, 5, 0, 0),
+  rotation = pi / 2, fontsize = 7fsize / 5)
+sch = scatter!(axh, x, sh, color = :red, markersize = 5,)
+scv = scatter!(axv, sv, y, color = :red, markersize = 5)
+lnh = lines!(ax1, x, fill(0, length(x)), color = :white, linewidth = 1)
+lnv = lines!(ax1, fill(0, length(y)), y, color = :white, linewidth = 1)
Lines{Tuple{Vector{Point{2, Float64}}}}

create layout and show figure

julia
fig[1, 2] = axh
+fig[2, 1] = axv
+fig[2, 1, Left()] = lvs
+fig[2, 2] = ax1
+fig[2, 3] = axc
+fig[3, :] = lfn
+fig[0, :] = lst
+fig
`,28),p=[l];function e(E,d,r,g,y,F){return a(),i("div",null,p)}const o=s(t,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.lean.js new file mode 100644 index 00000000..18202db6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapScaleSections.md.YQDH029l.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapScaleSections.WszVDNV2.png",n="/previews/PR54/assets/ntvidfz.C-EBUH5u.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapScaleSections.md","filePath":"examples/2d/heatmaps/heatmapScaleSections.md","lastUpdated":null}'),t={name:"examples/2d/heatmaps/heatmapScaleSections.md"},l=h("",28),p=[l];function e(E,d,r,g,y,F){return a(),i("div",null,p)}const o=s(t,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.js new file mode 100644 index 00000000..9998e67b --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapxyz.xn9z1Wg5.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapxyz.md","filePath":"examples/2d/heatmaps/heatmapxyz.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapxyz.md"},t=h('

heatmap: x, y positions

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = y = -5:1:5
+z = [x^2 + y^2 for x in x, y in y]
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1]; aspect = 1, xlabel = "x", ylabel = "y",
+    xticks = x, yticks = y)
+hmap = heatmap!(x, y, z, colormap = :Egypt)
+Colorbar(fig[1, 2], hmap, label = "z values", width = 15, ticksize = 15,
+    tickalign = 0.5)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[t];function l(e,E,r,d,y,g){return a(),i("div",null,p)}const o=s(n,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.lean.js b/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.lean.js new file mode 100644 index 00000000..f3f8d567 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_heatmapxyz.md.xoRRG6Nd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/heatmapxyz.xn9z1Wg5.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/heatmapxyz.md","filePath":"examples/2d/heatmaps/heatmapxyz.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/heatmapxyz.md"},t=h("",3),p=[t];function l(e,E,r,d,y,g){return a(),i("div",null,p)}const o=s(n,[["render",l]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.js b/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.js new file mode 100644 index 00000000..081b77cc --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.js @@ -0,0 +1,32 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/text_heatmap.D0UXNhg6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/text_heatmap.md","filePath":"examples/2d/heatmaps/text_heatmap.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/text_heatmap.md"},t=h('

heatmap with text on top

julia
using CairoMakie, Random
+
+Random.seed!(123)
+m = 15
+n = 5
+data = rand(m, n)
+# some fake ticks
+alphabet = 'A':'E'
+yticks = string.(collect(alphabet))
+k = 4
+itr = Iterators.product(ntuple(_ -> alphabet, k)...)
+xticks = []
+for word in Base.Generator(join, itr)
+    push!(xticks, word)
+    if length(xticks) == m
+        break
+    end
+end
+xticks = string.(xticks)
+
+fig = Figure(size = (1200, 600), fontsize = 20)
+ax = Axis(fig[1, 1], xticks = (1:m, xticks), yticks = (1:n, yticks))
+hmap = heatmap!(ax, data, colormap = :plasma)
+for i in 1:15, j in 1:5
+    txtcolor = data[i, j] < 0.15 ? :white : :black
+    text!(ax, "$(round(data[i,j], digits = 2))", position = (i, j),
+        color = txtcolor, align = (:center, :center))
+end
+Colorbar(fig[1, 2], hmap; label = "values", width = 15, ticksize = 15)
+ax.xticklabelrotation = π / 3
+ax.xticklabelalign = (:right, :center)
+fig
`,3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.lean.js b/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.lean.js new file mode 100644 index 00000000..b3632482 --- /dev/null +++ b/previews/PR54/assets/examples_2d_heatmaps_text_heatmap.md.B8r3dWkG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/text_heatmap.D0UXNhg6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/heatmaps/text_heatmap.md","filePath":"examples/2d/heatmaps/text_heatmap.md","lastUpdated":null}'),n={name:"examples/2d/heatmaps/text_heatmap.md"},t=h("",3),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",l]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.js b/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.js new file mode 100644 index 00000000..019edfda --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.js @@ -0,0 +1,21 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bins_counts.lSHbyUr6.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/bins_counts.md","filePath":"examples/2d/histogram/bins_counts.md","lastUpdated":null}'),n={name:"examples/2d/histogram/bins_counts.md"},t=h('

histograms bins counts

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+fig = Figure(; size = (1200, 800), fonts = (; regular= "sans"), fontsize = 20)
+ax1 = Axis(fig[1, 1]; xlabel = "value", ylabel = "samples")
+ax2 = Axis(fig[1, 2]; xlabel = "value", ylabel = "counts")
+ax3 = Axis(fig[2, 1]; xlabel = "value", ylabel = "counts")
+ax4 = Axis(fig[2, 2]; xlabel = "value", ylabel = "counts")
+#scatter plot
+scatter!(ax1, data, 1:n; markersize = 4, color = :black)
+hist!(ax2, data; label = "default")
+hist!(ax3, data; bins = 20, color = :orange, strokewidth = 1,
+    strokecolor = :black, label = "20 bins")
+hist!(ax4, data; bins = [-4, -2, -1, 0, 1, 2, 4], color = :gray90,
+    strokewidth = 1, strokecolor = :black, label = "manual bins")
+axislegend(ax2; position = :rt)
+axislegend(ax3; position = :rt)
+axislegend(ax4; position = :rt)
+fig
`,3),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.lean.js b/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.lean.js new file mode 100644 index 00000000..f3bbe9b3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_bins_counts.md.Dwkv4H3-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bins_counts.lSHbyUr6.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/bins_counts.md","filePath":"examples/2d/histogram/bins_counts.md","lastUpdated":null}'),n={name:"examples/2d/histogram/bins_counts.md"},t=h("",3),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.js b/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.js new file mode 100644 index 00000000..1b811b05 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/hist.JT53S_r1.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist.md","filePath":"examples/2d/histogram/hist.md","lastUpdated":null}'),n={name:"examples/2d/histogram/hist.md"},l=h('

histogram pdf normalization

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+cmap = resample_cmap(:linear_wcmr_100_45_c42_n256, 256;
+    alpha = rand(256))
+
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1])
+hist!(rand(Normal(2.6,0.4), 1000), normalization = :pdf, offset = -1,
+    #colormap=:plasma,
+    color = :values, direction = :x, fillto = -0.5)
+hist!(rand(Normal(2.6,0.4), 1000), normalization = :pdf, offset = 1,
+    color = :grey10, direction = :x, scale_to = -0.5)
+hist!(rand(Normal(0.2,0.2), 1000), normalization = :pdf, offset = 4,
+    strokewidth = 1, color = :transparent, strokecolor = :black,
+    direction = :y, scale_to = -1)
+hist!(rand(Normal(0.2,0.2), 1000), normalization = :pdf, color = :values,
+    #colormap = cmap,
+    strokewidth = 1, strokecolor = :black,
+    bar_labels = :values, label_color = :black, label_size = 12,
+    label_formatter=x-> round(x, digits=1))
+hidedecorations!(ax; grid = false)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.lean.js b/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.lean.js new file mode 100644 index 00000000..a851e069 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist.md.BQsxZtVB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/hist.JT53S_r1.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist.md","filePath":"examples/2d/histogram/hist.md","lastUpdated":null}'),n={name:"examples/2d/histogram/hist.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.js b/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.js new file mode 100644 index 00000000..3003841f --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,a6 as e}from"./chunks/framework.uXlnTO8a.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist_alpha.md","filePath":"examples/2d/histogram/hist_alpha.md","lastUpdated":null}'),i={name:"examples/2d/histogram/hist_alpha.md"},p=e('
julia
using GLMakie

hist(rand(1000); alpha = 0.5)

',2),l=[p];function n(o,h,_,d,c,r){return t(),s("div",null,l)}const g=a(i,[["render",n]]);export{u as __pageData,g as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.lean.js b/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.lean.js new file mode 100644 index 00000000..d69840f5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist_alpha.md.C6P5yhme.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,a6 as e}from"./chunks/framework.uXlnTO8a.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist_alpha.md","filePath":"examples/2d/histogram/hist_alpha.md","lastUpdated":null}'),i={name:"examples/2d/histogram/hist_alpha.md"},p=e("",2),l=[p];function n(o,h,_,d,c,r){return t(),s("div",null,l)}const g=a(i,[["render",n]]);export{u as __pageData,g as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.js b/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.js new file mode 100644 index 00000000..e1616995 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/hist_pdf.RD8WiaKy.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist_pdf.md","filePath":"examples/2d/histogram/hist_pdf.md","lastUpdated":null}'),t={name:"examples/2d/histogram/hist_pdf.md"},k=h('

Histogram and pdf

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+fig = Figure(; size = (600, 400))
+ax1 = Axis(fig[1, 1]; xlabel = "value")
+hist!(ax1, data; normalization = :pdf, color = (:green, 0.5), label = "hist & pdf")
+density!(ax1, data; color = (:orange, 0.25), label = "density!", strokewidth = 1)
+axislegend(ax1, position = :rt)
+fig
`,3),p=[k];function l(e,E,d,r,g,y){return a(),i("div",null,p)}const C=s(t,[["render",l]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.lean.js b/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.lean.js new file mode 100644 index 00000000..a85f45c7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hist_pdf.md.CfhVM169.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/hist_pdf.RD8WiaKy.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hist_pdf.md","filePath":"examples/2d/histogram/hist_pdf.md","lastUpdated":null}'),t={name:"examples/2d/histogram/hist_pdf.md"},k=h("",3),p=[k];function l(e,E,d,r,g,y){return a(),i("div",null,p)}const C=s(t,[["render",l]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.js b/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.js new file mode 100644 index 00000000..9d0d9f9a --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/hists_on_the_sides.D7oyJ4uc.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hists_on_the_sides.md","filePath":"examples/2d/histogram/hists_on_the_sides.md","lastUpdated":null}'),n={name:"examples/2d/histogram/hists_on_the_sides.md"},l=h('

Histograms on the sides

julia
using CairoMakie, Random
+# see also https://discourse.julialang.org/t/beautiful-makie-gallery/62523/31
+
+Random.seed!(123)
+n = 200
+x, y, color = randn(n) / 2, randn(n), randn(n)
+fig = Figure(; size=(600, 400))
+ax1 = Axis(fig[1, 1])
+ax2 = Axis(fig[2, 1])
+ax3 = Axis(fig[2, 2])
+hist!(ax1, x; color=(:orangered, 0.5), strokewidth=0.5)
+scatter!(ax2, x, y; color=color, markersize=10, strokewidth=0)
+hist!(ax3, y; direction=:x, color=(:dodgerblue, 0.5),
+    strokewidth=0.5)
+xlims!(ax1, -4, 4)
+limits!(ax2, -4, 4, -3, 3)
+ylims!(ax3, -3, 3)
+hideydecorations!(ax3, ticks=false, grid=false)
+hidexdecorations!(ax1, ticks=false, grid=false)
+colsize!(fig.layout, 1, Relative(2 / 3))
+rowsize!(fig.layout, 1, Relative(1 / 3))
+colgap!(fig.layout, 10)
+rowgap!(fig.layout, 10)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.lean.js b/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.lean.js new file mode 100644 index 00000000..e2c68a18 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_hists_on_the_sides.md.BwDpC4U1.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/hists_on_the_sides.D7oyJ4uc.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/hists_on_the_sides.md","filePath":"examples/2d/histogram/hists_on_the_sides.md","lastUpdated":null}'),n={name:"examples/2d/histogram/hists_on_the_sides.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.js b/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.js new file mode 100644 index 00000000..5db01ca7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/normalizations.JiwYSxuN.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/normalizations.md","filePath":"examples/2d/histogram/normalizations.md","lastUpdated":null}'),k={name:"examples/2d/histogram/normalizations.md"},t=h('

Histogram normalizations

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+normf = [:none, :pdf, :density, :probability]
+colors = Makie.wong_colors()
+fig = Figure(; size = (1200, 800), fonts = (; regular ="sans"), fontsize = 20)
+axs = [Axis(fig[i, j], xlabel = i == 2 ? "value" : "") for i in 1:2 for j in 1:2]
+[hist!(axs[i], data; normalization = normf[i], color = colors[i],
+    label = "$(normf[i])") for i in 1:4]
+[axislegend(axs[i], position = :rt) for i in 1:4]
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.lean.js b/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.lean.js new file mode 100644 index 00000000..e4af78f2 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_normalizations.md.CL4DidGM.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/normalizations.JiwYSxuN.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/normalizations.md","filePath":"examples/2d/histogram/normalizations.md","lastUpdated":null}'),k={name:"examples/2d/histogram/normalizations.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.js b/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.js new file mode 100644 index 00000000..13810968 --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.js @@ -0,0 +1,29 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/parallel_image_hist.h03L0xH9.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/parallel_image_hist.md","filePath":"examples/2d/histogram/parallel_image_hist.md","lastUpdated":null}'),l={name:"examples/2d/histogram/parallel_image_hist.md"},k=n('

Histograms r,g,b colors on image

julia
using CairoMakie
+import TestImages, Images
+
+# example by @cormullion
+function  image_histogram()
+    img = TestImages.testimage("lighthouse")
+    reds = vec(float.(Images.red.(img)))
+    greens = vec(float.(Images.green.(img)))
+    blues = vec(float.(Images.blue.(img)))
+
+    fig = Figure(; size = (1200,400))
+    ax1 = Axis(fig[1, 1], aspect = DataAspect())
+    ax2 = Axis(fig[1, 2])
+    for (i, col) = enumerate([:red, :green, :blue])
+        hist!(ax2, (reds, greens, blues)[i];
+            scale_to=-0.6,
+            bins=60,
+            offset=i,
+            direction=:x,
+            color=(col, 0.85)
+            )
+    end
+    image!(ax1, rotr90(img))
+    hidedecorations!(ax1)
+    hidespines!(ax1)
+    fig
+end
+
+fig = with_theme(image_histogram, theme_ggplot2())
 Downloading artifact: images
`,4),p=[k];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(l,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.lean.js b/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.lean.js new file mode 100644 index 00000000..c568e25f --- /dev/null +++ b/previews/PR54/assets/examples_2d_histogram_parallel_image_hist.md.CDOiotGk.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/parallel_image_hist.h03L0xH9.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/histogram/parallel_image_hist.md","filePath":"examples/2d/histogram/parallel_image_hist.md","lastUpdated":null}'),l={name:"examples/2d/histogram/parallel_image_hist.md"},k=n("",4),p=[k];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(l,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.js b/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.js new file mode 100644 index 00000000..27547282 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_cmap.CDpK5eSK.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmap.md","filePath":"examples/2d/lines/line_cmap.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_cmap.md"},l=h('

line with colormap

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 100)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+obj = lines!(x, sin.(x); color = x, colormap = :viridis, linewidth = 5)
+lines!(x, cos.(x), color = :black, label = "cos(x)", linewidth = 1)
+lines!(x, -cos.(x), color = :dodgerblue, label = "-cos(x)")
+axislegend(ax)
+Colorbar(fig[1, 2], obj, label = "sin(x)")
+colgap!(fig.layout, 5)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.lean.js b/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.lean.js new file mode 100644 index 00000000..1577138a --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmap.md.-j1KaVNg.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_cmap.CDpK5eSK.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmap.md","filePath":"examples/2d/lines/line_cmap.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_cmap.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.js b/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.js new file mode 100644 index 00000000..184c5f44 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.js @@ -0,0 +1,15 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_cmaps.Bb2TeCgU.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmaps.md","filePath":"examples/2d/lines/line_cmaps.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_cmaps.md"},l=h('

lines width colormaps

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 50)
+fig = Figure(size = (800, 400))
+ax = Axis(fig[1, 1], xlabel = L"x", xlabelsize = 22)
+line1 = lines!(x, sin.(x); color = x, colormap = :thermal, linewidth = 4)
+line2 = lines!(x, cos.(x); color = sqrt.(x), colormap = :ice, linewidth = 4)
+line3 = lines!(x, -sin.(x); color = x .^ 2, colormap = :viridis, linewidth = 4)
+line4 = lines!(x, -cos.(x); color = x / 2, colormap = :plasma, linewidth = 4)
+lineas = [line1, line2, line3, line4]
+labels = [L"x", L"\\sqrt{x}", L"x^{2}", L"x/2"]
+cbars = [Colorbar(fig[1, i+1], lineas[i], label = labels[i], labelsize = 22)
+            for i in 1:4]
+colgap!(fig.layout, 5)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.lean.js b/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.lean.js new file mode 100644 index 00000000..f99d78c4 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmaps.md.Bn_zg9uU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_cmaps.Bb2TeCgU.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmaps.md","filePath":"examples/2d/lines/line_cmaps.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_cmaps.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.js b/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.js new file mode 100644 index 00000000..60c9d7f4 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_cmaps_a.DAQLqIfx.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmaps_a.md","filePath":"examples/2d/lines/line_cmaps_a.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_cmaps_a.md"},l=h('

lines with colormap and colorbars around

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 50)
+fig = Figure(size = (800, 600), fontsize = 22)
+ax = Axis(fig, xlabel = L"x", ylabel = L"y")
+line1 = lines!(x, sin.(x), color = x, colormap = :thermal, linewidth = 4)
+line2 = lines!(x, cos.(x), color = sqrt.(x), colormap = :ice, linewidth = 4)
+line3 = lines!(x, -sin.(x), color = x .^ 2, colormap = :viridis, linewidth = 4)
+line4 = lines!(x, -cos.(x), color = x / 2, colormap = :plasma, linewidth = 4)
+labels = [L"x", L"\\sqrt{x}", L"x^{2}", L"x/2"]
+cbar1 = Colorbar(fig, line1, label = labels[1], width = 10, ticksize = 5)
+cbar2 = Colorbar(fig, line2, label = labels[2], flipaxis = false,
+    height = Relative(3.5 / 4), width = 10, ticksize = 10)
+cbar3 = Colorbar(fig, line3, label = labels[3], vertical = false, ticksize = 10,
+    tickalign = 0, flipaxis = false, width = Relative(4 / 4), height = 10,
+    tickcolor = :red)
+cbar4 = Colorbar(fig, line4, label = labels[4], vertical = false,
+    width = Relative(3 / 4), height = 10, ticksize = 10, tickalign = 1)
+fig[1, 2] = cbar4
+fig[2, 1] = cbar2
+fig[2, 2] = ax
+fig[2, 3] = cbar1
+fig[3, 2] = cbar3
+colgap!(fig.layout, 5)
+rowgap!(fig.layout, 5)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.lean.js b/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.lean.js new file mode 100644 index 00000000..3f6c97fc --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_cmaps_a.md.BjsnXVqH.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_cmaps_a.DAQLqIfx.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_cmaps_a.md","filePath":"examples/2d/lines/line_cmaps_a.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_cmaps_a.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.js b/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.js new file mode 100644 index 00000000..e75e4ba8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_colored.Xxpkj9y9.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_colored.md","filePath":"examples/2d/lines/line_colored.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_colored.md"},l=h('

lines colored with discrete colors from colormap: Legend

julia
using CairoMakie, ColorSchemes
+
+xs = 0:0.01:1
+p = -10:1:10
+p = filter(x -> x != 0, collect(p))
+psize = length(p)
+ys = zeros(length(xs), psize)
+for (indx, i) in enumerate(p)
+    if i <= -1
+        ys[:, indx] = xs .^ (1 / abs(i))
+    elseif i >= 1
+        ys[:, indx] = xs .^ i
+    end
+end
+cbarPal = :thermal
+cmap = cgrad(colorschemes[cbarPal], psize, categorical = true)
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], aspect = 1, xlabel = L"x", ylabel = L"x^{p}",
+    xlabelsize = 22, ylabelsize = 22)
+[lines!(xs, ys[:, v], color = cmap[v], label = "$(p[v])") for v in 1:psize]
+Legend(fig[1, 2], ax, L"p"; nbanks = 2)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.lean.js b/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.lean.js new file mode 100644 index 00000000..aa658fd7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_colored.md.CzECVZP8.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_colored.Xxpkj9y9.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_colored.md","filePath":"examples/2d/lines/line_colored.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_colored.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.js b/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.js new file mode 100644 index 00000000..27d222b5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_colored_cbar.CIMEORzb.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_colored_cbar.md","filePath":"examples/2d/lines/line_colored_cbar.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_colored_cbar.md"},l=h('

lines colored with discrete colors from colormap: Colorbar

julia
using CairoMakie, ColorSchemes
+xs = 0:0.01:1
+p = -10:1:10
+p = filter(x -> x != 0, collect(p))
+psize = length(p)
+ys = zeros(length(xs), psize)
+for (indx, i) in enumerate(p)
+    if i <= -1
+        ys[:, indx] = xs .^ (1 / abs(i))
+    elseif i >= 1
+        ys[:, indx] = xs .^ i
+    end
+end
+cbarPal = :thermal
+cmap = cgrad(colorschemes[cbarPal], psize, categorical = true)
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"x^{p}",
+    xlabelsize = 22, ylabelsize = 22)
+[lines!(xs, ys[:, v], color = cmap[v]) for v in 1:psize]
+Colorbar(fig[1, 2], limits = (-10, 10), nsteps = psize, colormap = cmap,
+    label = L"p", ticksize = 20, width = 20, tickalign = 1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.lean.js b/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.lean.js new file mode 100644 index 00000000..807267c5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_colored_cbar.md.D0xLVnf7.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_colored_cbar.CIMEORzb.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_colored_cbar.md","filePath":"examples/2d/lines/line_colored_cbar.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_colored_cbar.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.js b/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.js new file mode 100644 index 00000000..23a2eda3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_inset.CWa6zyho.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_inset.md","filePath":"examples/2d/lines/line_inset.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_inset.md"},l=h('

Inset line plot

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = -3:0.05:3
+y = exp.(-x .^ 2)
+n = 15
+y[1:n] = y[1:n] .+ 0.02 * randn(n)
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "x", ylabel = "f(x)", xgridvisible = true,
+    ygridvisible = true)
+lines!(ax1, x, y, color = :red, label = "f(x)")
+axislegend()
+# inset
+ax2 = Axis(fig, bbox = BBox(140, 250, 200, 300), xticklabelsize = 12,
+    yticklabelsize = 12, title = "inset  at (140, 250, 200, 300)")
+lines!(ax2, x, y, color = :red)
+limits!(ax2, -3.1, -1.9, -0.05, 0.05)
+ax2.yticks = [-0.05, 0, 0.05]
+ax2.xticks = [-3, -2.5, -2]
+translate!(ax2.scene, 0, 0, 10);
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.lean.js b/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.lean.js new file mode 100644 index 00000000..28b1f8c9 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_inset.md.BryVgftL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_inset.CWa6zyho.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_inset.md","filePath":"examples/2d/lines/line_inset.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_inset.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.js b/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.js new file mode 100644 index 00000000..403f9ab0 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_inset_h.BxcINalx.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_inset_h.md","filePath":"examples/2d/lines/line_inset_h.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_inset_h.md"},l=h('

Inset heatmap

julia
using CairoMakie
+
+x = y = -10:0.11:10
+y1d = sin.(x) ./ x
+# 3D heatmap
+sinc2d(x, y) = sin.(sqrt.(x .^ 2 + y .^ 2)) ./ sqrt.(x .^ 2 + y .^ 2)
+fxy = [sinc2d(x, y) for x in x, y in y]
+
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "x", ylabel = "f(x)", xgridvisible = true,
+    ygridvisible = true)
+lines!(ax1, x, y1d, color = :red, label = "sinc(x)")
+axislegend()
+# inset
+ax2 = Axis(fig, bbox = BBox(140, 260, 260, 350), xticklabelsize = 12,
+    yticklabelsize = 12, title = "inset  at (140, 260, 260, 350)")
+hmap = heatmap!(ax2, x, y, fxy, colormap = :Spectral_11)
+Colorbar(fig[1, 1], hmap, label = "sinc(x,y)", labelpadding = 5,
+    tellheight = false, tellwidth = false, ticklabelsize = 12,
+    width = 10, height = Relative(1.5 / 4),
+    halign = :right, valign = :center)
+limits!(ax2, -10, 10, -10, 10)
+hidespines!(ax2)
+ax2.yticks = [-10, 0, 10]
+ax2.xticks = [-10, 0, 10]
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.lean.js b/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.lean.js new file mode 100644 index 00000000..90f1ae1a --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_inset_h.md.CGOQhoge.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_inset_h.BxcINalx.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_inset_h.md","filePath":"examples/2d/lines/line_inset_h.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_inset_h.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.js b/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.js new file mode 100644 index 00000000..c65fe7c3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex.aIf4q3Gm.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex.md","filePath":"examples/2d/lines/line_latex.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_latex.md"},l=h('

lines, latex fonts

julia
using CairoMakie
+x = 0:0.05:
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif")) ## probably you need to install this font in your system
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"f (x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+lines!(x, x -> sin(3x) / (cos(x) + 2) / x; label = L"\\frac{\\sin(3x)}{x(\\cos(x) + 2)}")
+lines!(x, x -> cos(x) / x; label = L"\\cos(x)/x")
+lines!(x, x -> exp(-x); label = L"e^{-x}")
+ylims!(-0.6, 1.05)
+xlims!(-0.5, 12)
+axislegend(L"f(x)"; position = :rt, backgroundcolor = (:grey90, 0.25));
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.lean.js b/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.lean.js new file mode 100644 index 00000000..107bc2d6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex.md.Cy-pwkWL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex.aIf4q3Gm.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex.md","filePath":"examples/2d/lines/line_latex.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_latex.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.js b/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.js new file mode 100644 index 00000000..c34d8c98 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex_bessel.K1Huv9xT.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex_bessel.md","filePath":"examples/2d/lines/line_latex_bessel.md","lastUpdated":null}'),l={name:"examples/2d/lines/line_latex_bessel.md"},n=h('

besselj lines with latex fonts

julia
using CairoMakie, LaTeXStrings, SpecialFunctions
+
+x = 0:0.1:15
+fig = Figure(size = (600, 400), fonts =(; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"J_{\\nu}(x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+for ν in 0:6
+    lines!(ax, x, besselj.(ν, x), label = latexstring("J_{$(ν)}(x)"))
+end
+axislegend(; nbanks = 3, framecolor = (:grey, 0.5));
`,3),t=[n];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(l,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.lean.js b/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.lean.js new file mode 100644 index 00000000..c1afd965 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex_bessel.md.CP9azSjX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex_bessel.K1Huv9xT.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex_bessel.md","filePath":"examples/2d/lines/line_latex_bessel.md","lastUpdated":null}'),l={name:"examples/2d/lines/line_latex_bessel.md"},n=h("",3),t=[n];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(l,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.js b/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.js new file mode 100644 index 00000000..d2e0c804 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex_bessels.CWgKOkZ1.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex_bessels.md","filePath":"examples/2d/lines/line_latex_bessels.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_latex_bessels.md"},l=h('

bessely width latex fonts

julia
using CairoMakie, LaTeXStrings, SpecialFunctions
+
+x = 0.1:0.1:15
+
+fig = Figure(size = (600, 400), fonts = (; regular="CMU Serif")) ## probably you need to install this font in your system
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"Y_{\\nu}(x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+for ν in 0:4
+    lines!(ax, x, bessely.(ν, x), label = latexstring("Y_{$(ν)}(x)"), linewidth = 2)
+end
+axislegend(; position = :rb, nbanks = 2, framecolor = (:grey, 0.5))
+ylims!(-1.8, 0.7)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.lean.js b/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.lean.js new file mode 100644 index 00000000..1dbe0ee2 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_latex_bessels.md.CvN_j1x5.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_latex_bessels.CWgKOkZ1.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_latex_bessels.md","filePath":"examples/2d/lines/line_latex_bessels.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_latex_bessels.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.js b/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.js new file mode 100644 index 00000000..755e9681 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_single.Csw_FYZs.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_single.md","filePath":"examples/2d/lines/line_single.md","lastUpdated":null}'),l={name:"examples/2d/lines/line_single.md"},k=h('

simple line

julia
using CairoMakie
+
+x = 1:10
+lines(x, x .^ 2; color = :black, linewidth = 2, linestyle = :dashdot, label = L"x^2",
+    figure = (size = (600, 400), backgroundcolor = "#a5b4b5",
+        fonts = (; regular = "CMU Serif")),
+    axis = (xlabel = L"x", ylabel = L"x^2", backgroundcolor = :white,
+        xlabelsize = 22, ylabelsize = 22))
+axislegend("legend", position = :lt)
+limits!(0, 10, 0, 100)
`,3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(l,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.lean.js b/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.lean.js new file mode 100644 index 00000000..6cb4f15a --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_single.md.B4NzGZ5c.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_single.Csw_FYZs.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_single.md","filePath":"examples/2d/lines/line_single.md","lastUpdated":null}'),l={name:"examples/2d/lines/line_single.md"},k=h("",3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(l,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.js b/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.js new file mode 100644 index 00000000..799adcc6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.js @@ -0,0 +1,8 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_time.C3qXgxO3.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_time.md","filePath":"examples/2d/lines/line_time.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_time.md"},k=t('

Time ticks on x axis

julia
using CairoMakie, TimeSeries, Dates
+# dummy data
+dates = Date(2018, 1, 1):Day(1):Date(2018, 12, 31)
+ta = TimeArray(dates, rand(length(dates)))
+
+fig = Figure(size=(600, 400), fonts=(;regular = "sans"))
+ax = Axis(fig[1, 1], xlabel="Date", ylabel="value")
+line1 = lines!(ax, timestamp(ta), values(ta); color=:black, linewidth=0.85)
Lines{Tuple{Vector{Point{2, Float64}}}}

ax.xticklabelrotation = π / 4 ax.xticklabelalign = (:right, :center)

julia
fig
`,6),l=[k];function p(e,E,d,r,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.lean.js b/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.lean.js new file mode 100644 index 00000000..1bf8896d --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_time.md.T_kqjYie.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_time.C3qXgxO3.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_time.md","filePath":"examples/2d/lines/line_time.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_time.md"},k=t("",6),l=[k];function p(e,E,d,r,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.js b/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.js new file mode 100644 index 00000000..11fab4dd --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_twin_axis.CnJT176H.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_twin_axis.md","filePath":"examples/2d/lines/line_twin_axis.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_twin_axis.md"},l=h('

twin axis

julia
using CairoMakie
+
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], yticklabelcolor = :black, rightspinevisible = false)
+ax2 = Axis(fig[1, 1], yaxisposition = :right,
+    yticklabelcolor = :dodgerblue,
+    rightspinecolor = :dodgerblue,
+    ytickcolor = :dodgerblue)
+lines!(ax1, 0 .. 10, x -> x; color = :black)
+lines!(ax2, 0 .. 10, x -> exp(-x); color = :dodgerblue)
+hidespines!(ax2, :l, :b, :t)
+hidexdecorations!(ax2);
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.lean.js b/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.lean.js new file mode 100644 index 00000000..7a5a1f34 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_twin_axis.md.agQB4w0o.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_twin_axis.CnJT176H.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_twin_axis.md","filePath":"examples/2d/lines/line_twin_axis.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_twin_axis.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.js b/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.js new file mode 100644 index 00000000..05bad098 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_two.BJ8P7881.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_two.md","filePath":"examples/2d/lines/line_two.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_two.md"},l=h('

two lines

julia
using CairoMakie
+
+x = -:0.1:
+lines(x, sin.(x); color = "#56B4E9", linewidth = 2, label = L"sin",
+    axis = (xlabel = L"x", ylabel = L"f(x)", xgridcolor = :red,
+        xlabelsize = 22, ylabelsize = 22,
+        xgridstyle = :dashdot, xgridwidth = 0.85,
+        xtickalign = 1, xticksize = 20),
+    figure = (size = (600, 400), fonts = (; regular= "CMU Serif")))
+
+lines!(x, cos.(x); color = :black, linestyle = :dash, label = L"cos")
+limits!(-, , -1, 1)
+axislegend("Legend", position = :lb);
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.lean.js b/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.lean.js new file mode 100644 index 00000000..4a2c06b9 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_two.md.DU73hW04.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/line_two.BJ8P7881.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_two.md","filePath":"examples/2d/lines/line_two.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_two.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.js b/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.js new file mode 100644 index 00000000..7c9fc074 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as l}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_xlog.uUdUMJB7.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_xlog.md","filePath":"examples/2d/lines/line_xlog.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_xlog.md"},k=l('

x log scale

julia
using CairoMakie
+
+x = range(0.01, 30π, 2000)
+y = sin.(x)
+lines(x, y; color = :black, figure = (size = (600, 400),),
+    axis = (xscale = log10, xlabel = "x", ylabel = "y", xgridstyle = :dash,
+        ygridstyle = :dash, xminorticksvisible = true,
+        xminorticks = IntervalsBetween(9))) ## possible issue with log-ticks
+ylims!(-1, 1)
+current_figure()
`,3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.lean.js b/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.lean.js new file mode 100644 index 00000000..bce79637 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_xlog.md.TSyDTIUB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as l}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_xlog.uUdUMJB7.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_xlog.md","filePath":"examples/2d/lines/line_xlog.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_xlog.md"},k=l("",3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.js b/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.js new file mode 100644 index 00000000..c20195ec --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_xylog.BskkGuVd.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_xylog.md","filePath":"examples/2d/lines/line_xylog.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_xylog.md"},l=h('

x and y log scales

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = 0.001:0.05:10
+y = x .^ 2 .+ abs.(2 * randn(length(x)))
+lines(x, y, color=:navy, figure=(size=(600, 400),),
+    axis=(xscale=log10, yscale=log10, xlabel="x", ylabel="y",
+        xgridstyle=:dash, ygridstyle=:dash, xminorticksvisible=true,
+        xminorticks=IntervalsBetween(9), yminorticksvisible=true,
+        yminorticks=IntervalsBetween(9)))
`,3),t=[l];function p(e,E,d,r,g,y){return a(),i("div",null,t)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.lean.js b/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.lean.js new file mode 100644 index 00000000..7069fb1f --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_xylog.md.RD7pJCKc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/line_xylog.BskkGuVd.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_xylog.md","filePath":"examples/2d/lines/line_xylog.md","lastUpdated":null}'),k={name:"examples/2d/lines/line_xylog.md"},l=h("",3),t=[l];function p(e,E,d,r,g,y){return a(),i("div",null,t)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.js b/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.js new file mode 100644 index 00000000..6b15a922 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a6 as l}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_ylog.DnJtCicm.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_ylog.md","filePath":"examples/2d/lines/line_ylog.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_ylog.md"},k=l('

y log scale

julia
using CairoMakie
+
+x = range(0.01, 30π, 2000)
+y = cos.(x)
+lines(y, x; color=:orangered, figure=(size=(600, 400),),
+    axis=(yscale=log10, xlabel="x", ylabel="y", xgridstyle=:dash,
+        ygridstyle=:dash, yminorticksvisible=true,
+        yminorticks=IntervalsBetween(9))) ## possible issue with log-ticks
+xlims!(-1, 1)
+current_figure()
`,3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.lean.js b/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.lean.js new file mode 100644 index 00000000..0c6d0af6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_lines_line_ylog.md.CPaoqO1n.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as l}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/line_ylog.DnJtCicm.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/lines/line_ylog.md","filePath":"examples/2d/lines/line_ylog.md","lastUpdated":null}'),n={name:"examples/2d/lines/line_ylog.md"},k=l("",3),t=[k];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.js b/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.js new file mode 100644 index 00000000..942d75f8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.js @@ -0,0 +1,59 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/RRGraph.BKX3sAU9.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/linesegments/RRGraph.md","filePath":"examples/2d/linesegments/RRGraph.md","lastUpdated":null}'),k={name:"examples/2d/linesegments/RRGraph.md"},l=n('

RRGraph

julia
# port from the original code used in:
+# L Alonso, et. al. https://doi.org/10.1093/comnet/cnx053
+using LinearAlgebra, Random, CairoMakie
+
+function RRGAdjacencyM(; lengthBase=1, radius=0.1, nodes=500, rseed=123)
+    Random.seed!(rseed)
+    xy = rand(nodes, 2)
+    x = lengthBase .* xy[:, 1]
+    y = xy[:, 2] ./ lengthBase
+    matrixAdjDiag = Diagonal(2 * randn(nodes))
+    matrixAdj = zeros(nodes, nodes)
+    for point in 1:nodes-1
+        distance = sqrt.((x[point+1:end] .- x[point]) .^ 2 .+ (y[point+1:end] .- y[point]) .^ 2)
+        dindx = findall(distance .<= radius) .+ point
+        if length(dindx) > 0
+            rnd = randn(length(dindx))
+            matrixAdj[point, dindx] = rnd
+            matrixAdj[dindx, point] = rnd
+        end
+    end
+    return (matrixAdj .+ matrixAdjDiag, x, y)
+end
+adjacencyM, x, y = RRGAdjacencyM()
+
+function getGraphEdges(adjMatrix, x, y)
+    xyos = []
+    weights = []
+    for i in eachindex(x), j in i+1:length(x)
+        if adjMatrix[i, j] != 0.0
+            push!(xyos, [x[i], y[i]])
+            push!(xyos, [x[j], y[j]])
+            push!(weights, adjMatrix[i, j])
+            push!(weights, adjMatrix[i, j])
+        end
+    end
+    return (Point2f.(xyos), Float32.(weights))
+end
+
+function plotGraph(adjacencyM, x, y)
+    cmap = (:Spectral_11, 0.75)
+    adjmin = minimum(adjacencyM)
+    adjmax = maximum(adjacencyM)
+    diagValues = diag(adjacencyM)
+    segm, weights = getGraphEdges(adjacencyM, x, y)
+
+    fig, ax, pltobj = linesegments(segm; color=weights, colormap=cmap,
+        linewidth=abs.(weights) / 2, colorrange=(adjmin, adjmax),
+        figure=(; size=(800, 600)),
+        axis=(; aspect=DataAspect()))
+    scatter!(ax, x, y; color=diagValues, markersize=3 * abs.(diagValues),
+        colorrange=(adjmin, adjmax), colormap=cmap)
+    limits!(ax, -0.02, 1.02, -0.02, 1.02)
+    Colorbar(fig[1, 2], pltobj, label="weights")
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+rrgraph = with_theme(theme_black()) do
+    plotGraph(adjacencyM, x, y)
+end
`,3),p=[l];function t(e,E,d,r,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.lean.js b/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.lean.js new file mode 100644 index 00000000..c88a531a --- /dev/null +++ b/previews/PR54/assets/examples_2d_linesegments_RRGraph.md.DC3Ik15w.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/RRGraph.BKX3sAU9.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/linesegments/RRGraph.md","filePath":"examples/2d/linesegments/RRGraph.md","lastUpdated":null}'),k={name:"examples/2d/linesegments/RRGraph.md"},l=n("",3),p=[l];function t(e,E,d,r,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.js b/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.js new file mode 100644 index 00000000..e02fc2f0 --- /dev/null +++ b/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/linesegments.Bc-xEC0L.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/linesegments/linesegments.md","filePath":"examples/2d/linesegments/linesegments.md","lastUpdated":null}'),k={name:"examples/2d/linesegments/linesegments.md"},t=n('

linesegments

julia
using CairoMakie, Random, Distributions
+Random.seed!(1234)
+b = Binomial(10, 0.85)
+n = 500
+function someSegments(; n = 50)
+    Point2f.(vec([[x, rand(b)] for i in 1:2, x = rand(n)]))
+end
+linesegments(someSegments(; n = n);
+    color = rand(n),
+    colormap = :Spectral_11, linewidth = abs.(randn(n)),
+    axis = (; xlabel = "x", ylabel = "y"),
+    figure = (; size = (600,400))
+    );
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.lean.js b/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.lean.js new file mode 100644 index 00000000..8b46766b --- /dev/null +++ b/previews/PR54/assets/examples_2d_linesegments_linesegments.md.C0l_9yWZ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/linesegments.Bc-xEC0L.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/linesegments/linesegments.md","filePath":"examples/2d/linesegments/linesegments.md","lastUpdated":null}'),k={name:"examples/2d/linesegments/linesegments.md"},t=n("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.js b/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.js new file mode 100644 index 00000000..524ec2cb --- /dev/null +++ b/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/poly_ngon.CA5tJZW9.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/poly/poly_ngon.md","filePath":"examples/2d/poly/poly_ngon.md","lastUpdated":null}'),n={name:"examples/2d/poly/poly_ngon.md"},p=h('

poly ngonShape

julia
using CairoMakie, CairoMakie.GeometryBasics
+
+n = 20
+function ngonShape(h, k, r, n)
+    Polygon([Point2f(h .+ r*sin.(m*/n),k .+ r*cos.(m*/n)) for m in 1:n])
+end
+polysCentric = [ngonShape(0, 0, 3/i^1.5, i) for i in 3:n]
+polysCircular = [ngonShape(2/2*sin(θ), 2/2*cos(θ), 0.15/√idx, idx + 2)
+    for (idx, θ) in enumerate(LinRange(0,*(1 -1/(n-2)), n-2))]
+cmap = resample_cmap(:linear_protanopic_deuteranopic_kbw_5_98_c40_n256, 100)[3:end]
+
+with_theme(theme_black()) do
+    fig, ax, = poly(polysCentric; color = 1:n-2, colormap = cmap,
+        axis = (;aspect = DataAspect()), figure = (;size = (600,400)))
+    poly!(polysCircular; color = 1:n-2, colormap = cmap)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
`,3),l=[p];function t(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.lean.js b/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.lean.js new file mode 100644 index 00000000..61d9d934 --- /dev/null +++ b/previews/PR54/assets/examples_2d_poly_poly_ngon.md.C1P-mCcs.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/poly_ngon.CA5tJZW9.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/poly/poly_ngon.md","filePath":"examples/2d/poly/poly_ngon.md","lastUpdated":null}'),n={name:"examples/2d/poly/poly_ngon.md"},p=h("",3),l=[p];function t(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.js b/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.js new file mode 100644 index 00000000..9fd9ff2b --- /dev/null +++ b/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const p="/previews/PR54/assets/mdzwiop.CkS6L9Lk.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/poly/poly_strokes.md","filePath":"examples/2d/poly/poly_strokes.md","lastUpdated":null}'),t={name:"examples/2d/poly/poly_strokes.md"},h=n(`
julia
using GLMakie
+
+f = Figure()
+Axis(f[1, 1])
Axis with 0 plots:

vector of shapes

julia
poly!(
+    [Rect(i, j, 0.75, 0.5) for i in 1:5 for j in 1:3],
+    color = :white,
+    strokewidth = 2,
+    strokecolor = 1:15,
+    strokecolormap=:plasma,
+)
+f

',5),l=[h];function k(e,d,r,E,g,o){return a(),i("div",null,l)}const F=s(t,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.lean.js b/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.lean.js new file mode 100644 index 00000000..79c97478 --- /dev/null +++ b/previews/PR54/assets/examples_2d_poly_poly_strokes.md.CqGYITjT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const p="/previews/PR54/assets/mdzwiop.CkS6L9Lk.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/poly/poly_strokes.md","filePath":"examples/2d/poly/poly_strokes.md","lastUpdated":null}'),t={name:"examples/2d/poly/poly_strokes.md"},h=n("",5),l=[h];function k(e,d,r,E,g,o){return a(),i("div",null,l)}const F=s(t,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.js b/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.js new file mode 100644 index 00000000..38e50c92 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as k}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/markers.D9VtAlPU.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/markers.md","filePath":"examples/2d/scatterlines/markers.md","lastUpdated":null}'),n={name:"examples/2d/scatterlines/markers.md"},t=k('

scatter markers

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+scatterlines!(x, sin.(x), color = :black, label = "sin(x)",
+    marker = '◆', markersize = 10)
+scatterlines!(x, cos.(x), color = :black, label = "cos(x)",
+    marker = '■', markercolor = :red, markersize = 10,
+    strokewidth = 1, strokecolor = :red)
+axislegend(; position = :cc)
+fig
`,3),l=[t];function p(e,r,E,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.lean.js b/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.lean.js new file mode 100644 index 00000000..c741107d --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_markers.md.CsHdQPIh.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as k}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/markers.D9VtAlPU.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/markers.md","filePath":"examples/2d/scatterlines/markers.md","lastUpdated":null}'),n={name:"examples/2d/scatterlines/markers.md"},t=k("",3),l=[t];function p(e,r,E,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.js b/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.js new file mode 100644 index 00000000..ad0585ce --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatters_line.5FeZJVYC.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/scatters_line.md","filePath":"examples/2d/scatterlines/scatters_line.md","lastUpdated":null}'),k={name:"examples/2d/scatterlines/scatters_line.md"},n=h('

scatterlines + scatter with legend inside

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+lines!(x, sin.(x); color = :red, label = "sin(x)")
+scatterlines!(x, cos.(x); color = :blue, label = "cos(x)", markercolor = :black,
+    markersize = 10)
+scatter!(x, -cos.(x); color = :red, label = "-cos(x)", strokewidth = 1,
+    strokecolor = :red, markersize = 5, marker = '■')
+axislegend(; position = :lt, backgroundcolor = (:white, 0.85), framecolor = :green);
`,3),l=[n];function e(p,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",e]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.lean.js b/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.lean.js new file mode 100644 index 00000000..12ec07ce --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_scatters_line.md.CDHn9Bw-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatters_line.5FeZJVYC.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/scatters_line.md","filePath":"examples/2d/scatterlines/scatters_line.md","lastUpdated":null}'),k={name:"examples/2d/scatterlines/scatters_line.md"},n=h("",3),l=[n];function e(p,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",e]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.js b/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.js new file mode 100644 index 00000000..9ab28d94 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatters_line_leg_out.DgrJEu13.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/scatters_line_leg_out.md","filePath":"examples/2d/scatterlines/scatters_line_leg_out.md","lastUpdated":null}'),k={name:"examples/2d/scatterlines/scatters_line_leg_out.md"},n=h('

scatters + line with Legend outside

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+lines!(x, sin.(x), color = :red, label = "sin(x)")
+scatterlines!(x, cos.(x), color = :blue, label = "cos(x)", markersize = 5)
+scatter!(x, -cos.(x), color = :red, label = "-cos(x)", strokewidth = 1,
+    strokecolor = :red, markersize = 5, marker = '■')
+Legend(fig[1, 2], ax, merge = true)
+fig
`,3),l=[n];function e(p,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",e]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.lean.js b/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.lean.js new file mode 100644 index 00000000..d8b15011 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_scatters_line_leg_out.md.DmMIKM58.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatters_line_leg_out.DgrJEu13.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/scatters_line_leg_out.md","filePath":"examples/2d/scatterlines/scatters_line_leg_out.md","lastUpdated":null}'),k={name:"examples/2d/scatterlines/scatters_line_leg_out.md"},n=h("",3),l=[n];function e(p,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",e]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.js b/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.js new file mode 100644 index 00000000..f8eeb376 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const l="/previews/PR54/assets/simple.CXpoPEtV.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/simple.md","filePath":"examples/2d/scatterlines/simple.md","lastUpdated":null}'),t={name:"examples/2d/scatterlines/simple.md"},h=n('

simple scatterlines

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "")
+scatterlines!(x, sin.(x);
+    color = :black,
+    markersize = 10,
+    label = "sin(x)")
+axislegend()
+fig
`,3),k=[h];function p(e,E,r,d,g,y){return a(),i("div",null,k)}const o=s(t,[["render",p]]);export{F as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.lean.js b/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.lean.js new file mode 100644 index 00000000..b265f7f5 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_simple.md.lS80BQiL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const l="/previews/PR54/assets/simple.CXpoPEtV.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/simple.md","filePath":"examples/2d/scatterlines/simple.md","lastUpdated":null}'),t={name:"examples/2d/scatterlines/simple.md"},h=n("",3),k=[h];function p(e,E,r,d,g,y){return a(),i("div",null,k)}const o=s(t,[["render",p]]);export{F as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.js b/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.js new file mode 100644 index 00000000..1f091a71 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/spirals.CdBAHF1k.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/spirals.md","filePath":"examples/2d/scatterlines/spirals.md","lastUpdated":null}'),n={name:"examples/2d/scatterlines/spirals.md"},t=h('

spiral scatterlines

julia
using CairoMakie
+n = 50
+t = range(0, 5*π, n)
+x(t; a = 0.0, b = -2.4) = (a + b*t) * cos(t)
+y(t; a = 0.0, b = -2.4) = (a + b*t) * sin(t)
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; aspect = DataAspect(), xlabel = "x", ylabel = "y")
+for (k,i) in enumerate(-4:-2)
+    scatterlines!(x.(t; b = i), y.(t; b = i))
+end
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.lean.js b/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.lean.js new file mode 100644 index 00000000..611e15d3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatterlines_spirals.md.B4ptSVAi.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/spirals.CdBAHF1k.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatterlines/spirals.md","filePath":"examples/2d/scatterlines/spirals.md","lastUpdated":null}'),n={name:"examples/2d/scatterlines/spirals.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.js b/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.js new file mode 100644 index 00000000..eb48723d --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bubble_plot.1UZCsFYW.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/bubble_plot.md","filePath":"examples/2d/scatters/bubble_plot.md","lastUpdated":null}'),n={name:"examples/2d/scatters/bubble_plot.md"},l=h('

bubble plot: scatters

julia
using CairoMakie, Random
+
+Random.seed!(124)
+n = 30
+x, y, z = randn(n), randn(n), randn(n)
+
+fig = Figure(; size = (600, 400), backgroundcolor=:transparent)
+ax = Axis(fig[1, 1]; xgridstyle = :dashdot, ygridstyle = :dashdot,
+    xtickalign = 1, ytickalign = 1,
+    backgroundcolor=:transparent)
+pts1 = scatter!(ax, 10x, y; color = z, colormap = (:viridis, 0.75),
+    markersize = 20z, marker = :rect)
+pts2 = scatter!(ax, 3x, 5y; color = z, colormap = (:thermal, 0.85),
+    markersize = 45z)
+
+Colorbar(fig[1, 2], pts1, label = "z1 value", ticklabelsize = 14,
+    labelpadding = 5, width = 10)
+Colorbar(fig[1, 3], pts2, label = "z2 value", ticklabelsize = 14,
+    labelpadding = 5, width = 10)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.lean.js b/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.lean.js new file mode 100644 index 00000000..70a29479 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_bubble_plot.md.BP7nO_aC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bubble_plot.1UZCsFYW.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/bubble_plot.md","filePath":"examples/2d/scatters/bubble_plot.md","lastUpdated":null}'),n={name:"examples/2d/scatters/bubble_plot.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.js b/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.js new file mode 100644 index 00000000..5aca170b --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/bubble_plot_logxy.Bwg1eP0R.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/bubble_plot_logxy.md","filePath":"examples/2d/scatters/bubble_plot_logxy.md","lastUpdated":null}'),k={name:"examples/2d/scatters/bubble_plot_logxy.md"},l=h('

bubble plot: scatters in x and y log scale

julia
using CairoMakie, Random, Colors
+
+Random.seed!(123)
+x = 10 .^ (range(-1, stop=1, length=100))
+y = x .^ 2 .+ abs.(2 * randn(length(x)))
+cmap = cgrad(:Hiroshige, scale=:log, alpha=0.5)
+
+fig, ax, pltpbj = scatter(x, y; markersize=(x .^ 2/3)[end:-1:1] .+ 6,
+    color=x, colormap=cmap,
+    figure=(;
+        size=(600, 400),
+        fonts=(;regular="CMU Serif"),
+        backgroundcolor=:transparent),
+    axis=(;
+        backgroundcolor=:transparent,
+        xscale=log10,
+        yscale=log10,
+        xlabel="x", ylabel="y",
+        xgridstyle=:dash,
+        ygridstyle=:dash,
+        xminorticksvisible=true,
+        yminorticksvisible=true,
+        xminorticks=IntervalsBetween(9),
+        yminorticks=IntervalsBetween(9)))
+Colorbar(fig[1, 2], pltpbj)
+ylims!(ax, 1e-1, 1e2)
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.lean.js b/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.lean.js new file mode 100644 index 00000000..947cf5a6 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_bubble_plot_logxy.md.CHlXU0Sc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/bubble_plot_logxy.Bwg1eP0R.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/bubble_plot_logxy.md","filePath":"examples/2d/scatters/bubble_plot_logxy.md","lastUpdated":null}'),k={name:"examples/2d/scatters/bubble_plot_logxy.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(k,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.js b/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.js new file mode 100644 index 00000000..33634c01 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/iris_dataset.D5swsStg.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/iris_dataset.md","filePath":"examples/2d/scatters/iris_dataset.md","lastUpdated":null}'),n={name:"examples/2d/scatters/iris_dataset.md"},k=t('

iris dataset: scatter plot

julia
using CairoMakie, RDatasets, Random, Colors
+Random.seed!(4353)
+dset = dataset("datasets", "iris")
+byCat = dset.Species
+categ = unique(byCat)
+markers = [:circle, :diamond, :utriangle]
+
+fig = Figure(; size=(600, 400), backgroundcolor=:transparent)
+ax = Axis(fig[1, 1]; xlabel="Sepal Length", ylabel="Sepal Width",
+    backgroundcolor=:transparent)
+for (idx, c) in enumerate(categ)
+    indices = findall(x -> x == c, byCat)
+    scatter!(dset.SepalLength[indices], dset.SepalWidth[indices];
+        marker=markers[idx], color = rand(RGBf),
+        markersize=15, label="$(c)")
+end
+axislegend("Species")
+fig
`,3),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.lean.js b/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.lean.js new file mode 100644 index 00000000..17723030 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_iris_dataset.md.Dg2Cv-Ym.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/iris_dataset.D5swsStg.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/iris_dataset.md","filePath":"examples/2d/scatters/iris_dataset.md","lastUpdated":null}'),n={name:"examples/2d/scatters/iris_dataset.md"},k=t("",3),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.js b/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.js new file mode 100644 index 00000000..7c40d491 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.js @@ -0,0 +1,38 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/makie_contributors.CVPJ5X3T.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/makie_contributors.md","filePath":"examples/2d/scatters/makie_contributors.md","lastUpdated":null}'),k={name:"examples/2d/scatters/makie_contributors.md"},t=n('

Makie contributors

julia
using GLMakie, GitHub, Downloads, FileIO
+
+function getavatars(; n = 90)
+    contri = GitHub.contributors("JuliaPlots/Makie.jl")[1]
+    avatars = []
+    contributions = []
+    for i in eachindex(contri)
+        push!(avatars, contri[i]["contributor"].avatar_url.uri)
+        push!(contributions, contri[i]["contributions"])
+    end
+    p = sortperm(contributions, rev=true)
+    imgs = []
+    for i in p[1:n]
+        img_d = Downloads.download(avatars[i])
+        push!(imgs, load(img_d))
+    end
+    return imgs
+end
+avatars = getavatars()
+
+function plotcontributors(avatars)
+    fig = Figure(; size = (1200,600))
+    ax = Axis(fig[1,1], aspect = DataAspect())
+    k = 1
+    for i in 6:-1:1, j in 1:15
+        scatter!(ax, Point2f(j,i);
+            marker = #Circle,
+            image = avatars[k],
+            markersize = 70)
+        k += 1
+    end
+    hidedecorations!.(ax)
+    hidespines!.(ax)
+    limits!(ax, 0, 16, 0, 7)
+    fig
+end
+
+fig = plotcontributors(avatars)
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.lean.js b/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.lean.js new file mode 100644 index 00000000..a5a7f48c --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_makie_contributors.md.DNyY6uBB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/makie_contributors.CVPJ5X3T.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/makie_contributors.md","filePath":"examples/2d/scatters/makie_contributors.md","lastUpdated":null}'),k={name:"examples/2d/scatters/makie_contributors.md"},t=n("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.js b/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.js new file mode 100644 index 00000000..030e5c38 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/scatter.BmhQbwUP.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatter.md","filePath":"examples/2d/scatters/scatter.md","lastUpdated":null}'),k={name:"examples/2d/scatters/scatter.md"},t=n('

scatter

julia
using CairoMakie, Distributions
+using Random
+CairoMakie.activate!(type = "svg")
+Random.seed!(1234)
+d = Normal()
+b = Binomial(15, 0.7)
+n = 350
+
+scatter(rand(d,n), rand(b, n);
+    markersize = 12*abs.(rand(d, n)),
+    color = tuple.(:black, rand(n)),
+    strokewidth = 0.5,
+    strokecolor = :grey45,
+    axis = (;
+        xlabel = "x", ylabel = "y",
+        ),
+    figure = (;
+        size = (600,400),)
+        )
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.lean.js b/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.lean.js new file mode 100644 index 00000000..223dbb0f --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatter.md.zpe1uA74.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/scatter.BmhQbwUP.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatter.md","filePath":"examples/2d/scatters/scatter.md","lastUpdated":null}'),k={name:"examples/2d/scatters/scatter.md"},t=n("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.js b/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.js new file mode 100644 index 00000000..79ca582f --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.js @@ -0,0 +1,30 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/scatters_colormap.CBgIju1G.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatters_colormap.md","filePath":"examples/2d/scatters/scatters_colormap.md","lastUpdated":null}'),n={name:"examples/2d/scatters/scatters_colormap.md"},t=h('

scatters with colormap

julia
using CairoMakie, Random, ColorSchemes
+CairoMakie.activate!(type = "svg")
+Random.seed!(123)
+n = 50
+x, y, color = rand(n), rand(n), rand(n)
+cmaps = [:cool, :viridis, :plasma, :inferno, :thermal,
+    :leonardo, :winter, :spring, :ice]
+markers = [:+, :diamond, :star4, :rtriangle, :rect,
+    :circle, :pentagon, :cross, :star5]
+
+function FigGridScatters()
+    fig = Figure(size = (1200, 800), backgroundcolor=:transparent)
+        c = 1
+        for i in 1:2, j in 1:2:5
+            ax = Axis(fig[i, j], aspect = AxisAspect(1), backgroundcolor=:transparent)
+            pnts = scatter!(x, y .^ c; color = color, colormap = cmaps[c],
+                markersize = 15, marker = markers[c], strokewidth = 0)
+            cbar = Colorbar(fig, pnts, height = Relative(0.75), tickwidth = 2,
+                tickalign = 1, width = 14, ticksize = 14)
+            fig[i, j+1] = cbar
+            limits!(ax, -0.1, 1.1, -0.1, 1.1)
+            ax.xticks = [0, 1]
+            ax.yticks = [0, 1]
+            ax.xticklabelsize = 20
+            ax.yticklabelsize = 20
+            c += 1
+        end
+    fig
+end
+fig = FigGridScatters()
`,3),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.lean.js b/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.lean.js new file mode 100644 index 00000000..6d9ebcd2 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatters_colormap.md.B_cGhug2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/scatters_colormap.CBgIju1G.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatters_colormap.md","filePath":"examples/2d/scatters/scatters_colormap.md","lastUpdated":null}'),n={name:"examples/2d/scatters/scatters_colormap.md"},t=h("",3),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.js b/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.js new file mode 100644 index 00000000..fdc1fce8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.js @@ -0,0 +1,6 @@ +import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/scatters_legend.DBmLYyeD.svg",y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatters_legend.md","filePath":"examples/2d/scatters/scatters_legend.md","lastUpdated":null}'),t={name:"examples/2d/scatters/scatters_legend.md"},l=e('

scatters and axislegend: Legend inside

julia
using GLMakie
+fig = Figure()
+ax = Axis(fig[1,1])
+lines!(ax, 1:10, rand(10); label = "uno")
+lg = axislegend(ax)
+fig
`,3),h=[l];function p(k,d,r,g,E,c){return a(),i("div",null,h)}const _=s(t,[["render",p]]);export{y as __pageData,_ as default}; diff --git a/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.lean.js b/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.lean.js new file mode 100644 index 00000000..dfe2db03 --- /dev/null +++ b/previews/PR54/assets/examples_2d_scatters_scatters_legend.md.8schuQYL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/scatters_legend.DBmLYyeD.svg",y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/scatters/scatters_legend.md","filePath":"examples/2d/scatters/scatters_legend.md","lastUpdated":null}'),t={name:"examples/2d/scatters/scatters_legend.md"},l=e("",3),h=[l];function p(k,d,r,g,E,c){return a(),i("div",null,h)}const _=s(t,[["render",p]]);export{y as __pageData,_ as default}; diff --git a/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.js b/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.js new file mode 100644 index 00000000..bf3d9256 --- /dev/null +++ b/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/series.B-ZYqLsg.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/series/series.md","filePath":"examples/2d/series/series.md","lastUpdated":null}'),n={name:"examples/2d/series/series.md"},l=h('

multiple lines at once: series

julia
using CairoMakie, Random, LaTeXStrings
+Random.seed!(123)
+m = 200
+function spiral(; a = 1, n = 100, h = 0, k = 0)
+    φ = LinRange(rand() + 1, , n)
+    h .+  rand(-1:2:1)*a*cos.(φ)./φ, k .+  rand(-1:2:1)*a*sin.(φ)./φ
+end
+x = raw"x=a\\,\\cos(\\varphi)/\\varphi,\\quad "
+y = raw"y=a\\,\\sin(\\varphi)/\\varphi,\\quad "
+curves = [spiral(; a = rand(), h = rand(-1:1)) for i in 1:m]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1])
+series!(curves; color = resample_cmap(:bone_1, m), linewidth = 1.5)
+text!(latexstring(x * y * "\\\\varphi>0"), position = (-1,-1))
+hidedecorations!(ax; grid = false)
+fig
`,3),t=[l];function p(e,E,r,d,F,g){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.lean.js b/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.lean.js new file mode 100644 index 00000000..8a73185f --- /dev/null +++ b/previews/PR54/assets/examples_2d_series_series.md.CHFXDNP8.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/series.B-ZYqLsg.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/series/series.md","filePath":"examples/2d/series/series.md","lastUpdated":null}'),n={name:"examples/2d/series/series.md"},l=h("",3),t=[l];function p(e,E,r,d,F,g){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.js b/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.js new file mode 100644 index 00000000..6c78d0fc --- /dev/null +++ b/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/stairs.3vyT-BGV.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/stairs/stairs.md","filePath":"examples/2d/stairs/stairs.md","lastUpdated":null}'),n={name:"examples/2d/stairs/stairs.md"},t=h('

stairs plot

julia
using CairoMakie, SpecialFunctions
+
+p(s, β) =+ 1)*a(β) * s^β * exp(-a(β)*s^+1))
+a(β) = gamma(((β + 2)/+ 1))^+ 1))
+s = LinRange(0,3,30)
+colors = ["#FF410D", "#6EE2FF", "#F7C530", "#95CC5E", "#D0DFE6", "#F79D1E"]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; palette = (; color = colors))
+for β in [0,1], step in [:pre, :center, :post]
+    stairs!(s, p.(s, β); linestyle = :solid, step = step, label = "$(β), :$(step)")
+end
+lines!(s, p.(s, 1), color = :grey30)
+lines!(s, p.(s, 0), color = :grey10)
+text!(L"p(s)=(\\beta+1)a_{\\beta}\\,s^{\\beta}\\exp(-a_{\\beta}s^{\\beta+1})",
+    position = (0.7, 0.95), color = :black)
+text!(L"a_{\\beta} = \\Gamma[(\\beta+2)/(\\beta+1)]^{\\beta + 1}",
+    position = (1.7, 0.25), color = :black)
+axislegend("β, step", position = :rt);
+fig
`,3),l=[t];function p(E,e,r,F,d,g){return a(),i("div",null,l)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.lean.js b/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.lean.js new file mode 100644 index 00000000..fc9aa4d7 --- /dev/null +++ b/previews/PR54/assets/examples_2d_stairs_stairs.md.CzCqlo1d.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/stairs.3vyT-BGV.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/stairs/stairs.md","filePath":"examples/2d/stairs/stairs.md","lastUpdated":null}'),n={name:"examples/2d/stairs/stairs.md"},t=h("",3),l=[t];function p(E,e,r,F,d,g){return a(),i("div",null,l)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.js b/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.js new file mode 100644 index 00000000..307902d3 --- /dev/null +++ b/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/stem.BMqGX-Bh.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/stem/stem.md","filePath":"examples/2d/stem/stem.md","lastUpdated":null}'),n={name:"examples/2d/stem/stem.md"},t=h('

stem plot

julia
using CairoMakie, Random
+Random.seed!(2)
+t = 0.3:0.3:
+my_markers = [:circle, :rect, :utriangle, :dtriangle, :diamond, :pentagon,
+    :cross, :xcross]
+
+fig, ax, = stem(t, 1.5exp.(-t/5).*cos.(t); color = 1:length(t),
+    colormap = :linear_wyor_100_45_c55_n256, stemcolor = 1:length(t),
+    stemcolormap = :linear_wcmr_100_45_c42_n256,
+    figure = (; size = (600,400)))
+stem!(t .+ 0.15, -cos.(t) ./ t .+ 0.25; color = :transparent,
+    stemwidth = 0.5, marker = :rect, markersize = 10, strokewidth = 1,
+    strokecolor = :black)
+stem!(1:8, 1.5randn(8); marker = my_markers,
+    color = tuple.(resample_cmap(:mk_12, 8), 0.65), stemlinestyle = :dash,
+    stemcolor = resample_cmap(:mk_12, 8), markersize = 15*rand(8) .+ 10,
+    strokewidth = 1.5, strokecolor = resample_cmap(:mk_12, 8))
+hidedecorations!(ax; grid = false)
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.lean.js b/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.lean.js new file mode 100644 index 00000000..5818f613 --- /dev/null +++ b/previews/PR54/assets/examples_2d_stem_stem.md.CtI1UuaV.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/stem.BMqGX-Bh.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/stem/stem.md","filePath":"examples/2d/stem/stem.md","lastUpdated":null}'),n={name:"examples/2d/stem/stem.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.js b/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.js new file mode 100644 index 00000000..0e47b81b --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/complex_polya_field.BUZCaNus.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/complex_polya_field.md","filePath":"examples/2d/streamplot/complex_polya_field.md","lastUpdated":null}'),l={name:"examples/2d/streamplot/complex_polya_field.md"},n=h('

streamplot: complex polya field

julia
using CairoMakie
+
+x = y = -2:0.005:2
+f(z) = 1 / (z * (z^2 - z - 1 - 3im))
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+polya(x, y) = Point2f(real(f(x + 1im * y)), -imag(f(x + 1im * y)))
+
+fig = Figure(size = (900, 400))
+axs = [Axis(fig[1, i], aspect = 1) for i in 1:2]
+cmap = :roma
+streamplot!(axs[1], polya, -2 .. 2, -2 .. 2, colormap = [:black, :red],
+        gridsize = (40, 40), arrow_size = 6, linewidth = 1)
+pltobj2 = heatmap!(axs[2], x, y, fargs, colorrange = (-π, π), colormap = cmap)
+streamplot!(axs[2], polya, -2 .. 2, -2 .. 2, colormap = [:black, :black],
+        gridsize = (40, 40), arrow_size = 6, linewidth = 1)
+Colorbar(fig[1, 3], pltobj2, ticks = ([-π, -π / 2, 0, π / 2, π],
+        [L"-\\pi", L"-\\pi/2", L"0", L"\\pi/2", L"\\pi"]))
+limits!(axs[1], -2, 2, -2, 2)
+limits!(axs[2], -2, 2, -2, 2)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colsize!(fig.layout, 2, Aspect(1, 1.0))
+fig
`,3),p=[n];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const B=s(l,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.lean.js b/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.lean.js new file mode 100644 index 00000000..93ad7310 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_complex_polya_field.md.DFSVan5e.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/complex_polya_field.BUZCaNus.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/complex_polya_field.md","filePath":"examples/2d/streamplot/complex_polya_field.md","lastUpdated":null}'),l={name:"examples/2d/streamplot/complex_polya_field.md"},n=h("",3),p=[n];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const B=s(l,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.js b/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.js new file mode 100644 index 00000000..ec869a19 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/field_heatmap.BZaGa3-3.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/field_heatmap.md","filePath":"examples/2d/streamplot/field_heatmap.md","lastUpdated":null}'),t={name:"examples/2d/streamplot/field_heatmap.md"},n=h('

streamplot over heatmap

julia
using CairoMakie
+
+testField(x, y) = Point2f(-x, 2y) # x'(t) = -x, y'(t) = 2y
+x = -2:0.1:4
+y = -2:0.1:2
+u2(x, y) = -x
+v2(x, y) = 2y
+z = [log10(sqrt(u2(x, y)^2 + v2(x, y)^2)) for x in x, y in y]
+
+fig = Figure(size = (600, 400), fontsize = 22, fonts = (;regular="CMU Serif"))
+ax = fig[1, 1] = Axis(fig, xlabel = L"x", ylabel = L"y")
+fs = heatmap!(ax, x, y, z, colormap = Reverse(:plasma))
+streamplot!(ax, testField, x, y, colormap = Reverse(:plasma),
+    gridsize = (32, 32), arrow_size = 10)
+Colorbar(fig[1, 2], fs, label = L"\\log_{10}[(u^2+v^2)^{1/2}]", width = 20,
+    labelsize = 14, ticklabelsize = 14)
+colgap!(fig.layout, 5)
`,3),l=[n];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(t,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.lean.js b/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.lean.js new file mode 100644 index 00000000..c544c612 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_field_heatmap.md.CBqALkfW.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/field_heatmap.BZaGa3-3.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/field_heatmap.md","filePath":"examples/2d/streamplot/field_heatmap.md","lastUpdated":null}'),t={name:"examples/2d/streamplot/field_heatmap.md"},n=h("",3),l=[n];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(t,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.js b/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.js new file mode 100644 index 00000000..8517afbb --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.js @@ -0,0 +1,8 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/ode_solution.Be2UqcdV.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/ode_solution.md","filePath":"examples/2d/streamplot/ode_solution.md","lastUpdated":null}'),k={name:"examples/2d/streamplot/ode_solution.md"},l=t('

streamplot ode solution

julia
using CairoMakie
+
+odeSol(x, y) = Point2f(-x, 2y) # x'(t) = -x, y'(t) = 2y
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y", backgroundcolor = :black)
+streamplot!(ax, odeSol, -2 .. 4, -2 .. 2, colormap = Reverse(:plasma),
+    gridsize = (32, 32), arrow_size = 10)
+fig
`,3),n=[l];function p(e,E,r,d,o,g){return a(),i("div",null,n)}const C=s(k,[["render",p]]);export{F as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.lean.js b/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.lean.js new file mode 100644 index 00000000..e1e91465 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_ode_solution.md.DV8Jque9.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/ode_solution.Be2UqcdV.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/ode_solution.md","filePath":"examples/2d/streamplot/ode_solution.md","lastUpdated":null}'),k={name:"examples/2d/streamplot/ode_solution.md"},l=t("",3),n=[l];function p(e,E,r,d,o,g){return a(),i("div",null,n)}const C=s(k,[["render",p]]);export{F as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.js b/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.js new file mode 100644 index 00000000..a1216fb8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/poincare_vander.BTIL6yX4.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/poincare_vander.md","filePath":"examples/2d/streamplot/poincare_vander.md","lastUpdated":null}'),n={name:"examples/2d/streamplot/poincare_vander.md"},t=h('

streamplot: Poincare and Van der Paul

julia
using CairoMakie
+
+nonStablePoincare(x, y) = Point2f(x * (x^2 + y^2 - 1) - y * (x^2 + y^2 + 1), y * (x^2 + y^2 - 1) + x * (x^2 + y^2 + 1))
+stableVanDerPaul(x, y) = Point2f(y, (1 - x^2) * y - x)
+semiStable(x, y) = Point2f(-y + x * (-1 + x^2 + y^2)^2, x + y * (-1 + x^2 + y^2)^2)
+titles = ["non-stable", "stable", "semi-stable"]
+functions = [nonStablePoincare, stableVanDerPaul, semiStable]
+cmaps = [:plasma, :viridis, :gnuplot2]
+
+fig = Figure(size = (1800, 600), fontsize = 24)
+axs = [Axis(fig[1, i], xlabel = "x", ylabel = "y", title = titles[i],
+    aspect = 1, backgroundcolor = :black) for i in 1:3]
+[streamplot!(axs[i], functions[i], -4 .. 4, -4 .. 4, colormap = Reverse(cmaps[i]),
+    gridsize = (32, 32), arrow_size = 10) for i in 1:3]
+[hideydecorations!(axs[2], grid = false, ticks = false) for i in 2:3]
+[limits!(axs[i], -4, 4, -4, 4) for i in 1:3]
+fig
`,3),l=[t];function p(E,e,r,d,y,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.lean.js b/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.lean.js new file mode 100644 index 00000000..2697bd18 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_poincare_vander.md.Dc3-O8im.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/poincare_vander.BTIL6yX4.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/poincare_vander.md","filePath":"examples/2d/streamplot/poincare_vander.md","lastUpdated":null}'),n={name:"examples/2d/streamplot/poincare_vander.md"},t=h("",3),l=[t];function p(E,e,r,d,y,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.js b/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.js new file mode 100644 index 00000000..de3864b8 --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.js @@ -0,0 +1,42 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/streamplot.DJW6qdmF.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/streamplot.md","filePath":"examples/2d/streamplot/streamplot.md","lastUpdated":null}'),n={name:"examples/2d/streamplot/streamplot.md"},l=h('

streamplot: Electric field lines

julia
using CairoMakie, LinearAlgebra
+
+function E(q, rx, ry, x, y)
+    d = sqrt((x-rx)^2 + (y-ry)^2)^3
+    return (q * (x - rx) / d, q * (y - ry) / d)
+end
+function charges(; nq = 2)
+    qs = []
+    for i in 1:nq
+        q = i % 2 * 2 - 1
+        push!(qs, (q, cos( * i / nq), sin( * i / nq)))
+    end
+    qs
+end
+function fieldE(x,y)
+    Ex, Ey = 0, 0
+    for q in qs
+        ex, ey = E(q..., x, y)
+        Ex += ex
+        Ey += ey
+    end
+    Point(Ex, Ey)
+end
+
+fig = Figure(size = (600,400))
+ax1 = Axis(fig[1,1]; aspect = DataAspect())
+ax2 = Axis(fig[1,2]; aspect = DataAspect())
+
+qs = charges()
+streamplot!(ax1, fieldE, -2..2, -2..2; arrow_size = 6, linewidth = 0.5,
+    colorrange = (-3,3), colormap = ([:black, :black, :orange, :red]))
+[scatter!(ax1, Point(qs[i][2:3]), color = qs[i][1] > 0 ? :red : :dodgerblue,
+    markersize = 10) for i in eachindex(qs)]
+qs = charges(; nq = 4)
+streamplot!(ax2, fieldE, -2..2, -2..2; arrow_size = 6, linewidth = 0.5,
+    colorrange = (-3,3), colormap = ([:black, :black, :orange, :red]))
+[scatter!(ax2, Point(qs[i][2:3]), color = qs[i][1] > 0 ? :red : :dodgerblue,
+    markersize = 10) for i in eachindex(qs)]
+limits!(ax2, -2,2,-2,2)
+hidedecorations!(ax1; grid = false)
+hidedecorations!(ax2; grid = false)
+fig
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.lean.js b/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.lean.js new file mode 100644 index 00000000..1d4ac5ea --- /dev/null +++ b/previews/PR54/assets/examples_2d_streamplot_streamplot.md.Tmb4Rpvh.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/streamplot.DJW6qdmF.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/streamplot/streamplot.md","filePath":"examples/2d/streamplot/streamplot.md","lastUpdated":null}'),n={name:"examples/2d/streamplot/streamplot.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.js b/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.js new file mode 100644 index 00000000..5305f113 --- /dev/null +++ b/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.js @@ -0,0 +1,16 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/your_name.1VbU99KO.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/text/your_name.md","filePath":"examples/2d/text/your_name.md","lastUpdated":null}'),h={name:"examples/2d/text/your_name.md"},k=n('

text: rich text

julia
using GLMakie
+using CairoMakie
+CairoMakie.activate!(type = "svg")
+#GLMakie.activate!()
+
+fig = Figure(figure_padding= 0, size = (320, 48),
+    backgroundcolor=:transparent,
+    fontsize = 48)
+ax = Axis(fig[1,1], backgroundcolor=:transparent)
+text!(ax, [0], [0],
+    text= rich(rich("Your", font="Bold"), " Name", font =:regular),
+    align = (:center, :center), color = :white)
+hidedecorations!(ax)
+hidespines!(ax)
+fig
┌ Warning: Could not find font Bold, using TeX Gyre Heros Makie
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:1353
`,4),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const F=s(h,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.lean.js b/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.lean.js new file mode 100644 index 00000000..cff21ef1 --- /dev/null +++ b/previews/PR54/assets/examples_2d_text_your_name.md.DPJGT4hc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/your_name.1VbU99KO.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/text/your_name.md","filePath":"examples/2d/text/your_name.md","lastUpdated":null}'),h={name:"examples/2d/text/your_name.md"},k=n("",4),l=[k];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const F=s(h,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.js b/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.js new file mode 100644 index 00000000..d05f9984 --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.js @@ -0,0 +1,15 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/airquality.D2xjY-DN.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/airquality.md","filePath":"examples/2d/violins/airquality.md","lastUpdated":null}'),n={name:"examples/2d/violins/airquality.md"},l=h('

violin plot: airquality data

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+airquality = dataset("datasets", "airquality")
+categories = ["Ozone", "Solar.R", "Wind", "Temp"]
+colors = categorical_colors(:Set1, length(categories))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xticks = (1:length(categories), categories))
+for (indx, f) in enumerate(categories)
+    datam = filter(x -> x !== missing, airquality[:, f])
+    a = fill(indx, length(datam))
+    violin!(ax, a, datam; width = 0.35, color = (colors[indx], 0.45),
+        strokecolor = colors[indx], show_median = true, mediancolor = :black)
+end
+fig
`,3),k=[l];function p(e,E,r,d,g,y){return a(),i("div",null,k)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.lean.js b/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.lean.js new file mode 100644 index 00000000..a229331e --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_airquality.md.DKQc4rjP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/airquality.D2xjY-DN.svg",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/airquality.md","filePath":"examples/2d/violins/airquality.md","lastUpdated":null}'),n={name:"examples/2d/violins/airquality.md"},l=h("",3),k=[l];function p(e,E,r,d,g,y){return a(),i("div",null,k)}const c=s(n,[["render",p]]);export{F as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.js b/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.js new file mode 100644 index 00000000..4b83343f --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/collection_violins.CmSUemjd.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/collection_violins.md","filePath":"examples/2d/violins/collection_violins.md","lastUpdated":null}'),n={name:"examples/2d/violins/collection_violins.md"},l=h('

several violins: Normal distributions

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+n = 4
+colors = resample_cmap(:seaborn_colorblind, 8)
+sides = [:left, :right, :right]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; #palette = (; patchcolor = colors)
+    )
+for i in [-5,5], j in 1:n
+    violin!(fill(j, 1000), rand(Normal(i,rand()+0.5), 1000),
+    side = i >-3 ? sides[rand(1:3)] : :both
+    )
+end
+violin!(fill(2.5, 1000), rand(Normal(0,2.5), 1000); color = :transparent,
+    strokewidth = 0.85, strokecolor = :grey10, show_median = true,
+    mediancolor = :black)
+violin!(fill(4.5, 1000), rand(Normal(2,2), 1000); color = (:dodgerblue,0.1),
+    strokewidth = 0.85, strokecolor = :dodgerblue, show_median = true,
+    medianlinewidth = 3)
+ax.xticks = (1:n, string.('A':'D'))
+hideydecorations!(ax; grid = false)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.lean.js b/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.lean.js new file mode 100644 index 00000000..28be2dcd --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_collection_violins.md.C10RTrqP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/collection_violins.CmSUemjd.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/collection_violins.md","filePath":"examples/2d/violins/collection_violins.md","lastUpdated":null}'),n={name:"examples/2d/violins/collection_violins.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.js b/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.js new file mode 100644 index 00000000..62ba3693 --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/single.Cm0DRmEN.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/single.md","filePath":"examples/2d/violins/single.md","lastUpdated":null}'),k={name:"examples/2d/violins/single.md"},l=n('

single violin

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+a = fill(1, n)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values",
+    xticks = ([1], ["normal Distribution"]))
+violin!(ax, a, data; width = 0.35, color = (:orangered, 0.45),
+    show_median = true, mediancolor = :navy, strokecolor = :black,
+    strokewidth = 1, label = "vertical")
+limits!(ax, 0, 2, -5, 5)

axislegend(ax, position = :rt)

julia
fig
`,5),t=[l];function p(e,E,d,r,g,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.lean.js b/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.lean.js new file mode 100644 index 00000000..4fd613cc --- /dev/null +++ b/previews/PR54/assets/examples_2d_violins_single.md.CtDW_ULK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/single.Cm0DRmEN.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/2d/violins/single.md","filePath":"examples/2d/violins/single.md","lastUpdated":null}'),k={name:"examples/2d/violins/single.md"},l=n("",5),t=[l];function p(e,E,d,r,g,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.js b/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.js new file mode 100644 index 00000000..ce6e3b8a --- /dev/null +++ b/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/contour_v.BGZUvj0r.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/contour3d/contour_v.md","filePath":"examples/3d/contour3d/contour_v.md","lastUpdated":null}'),k={name:"examples/3d/contour3d/contour_v.md"},t=h('

contour in 3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1..10 # start, stop, intervl
+x_r = y_r = z_r = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+vol = [f(ix, iy, iz) for ix in x_r, iy in y_r, iz in z_r]
+# now the figure
+fig = Figure(; size = (800,800))
+ax = Axis3(fig[1,1]; perspectiveness = 0.5, azimuth = 2.19,
+    elevation = 0.57, aspect = (1, 1, 1))
+contour!(ax, x, y, z, vol; levels = 10, colormap = :Egypt, transparency = true)
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.lean.js b/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.lean.js new file mode 100644 index 00000000..d6bfa598 --- /dev/null +++ b/previews/PR54/assets/examples_3d_contour3d_contour_v.md.8oLtoGAU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/contour_v.BGZUvj0r.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/contour3d/contour_v.md","filePath":"examples/3d/contour3d/contour_v.md","lastUpdated":null}'),k={name:"examples/3d/contour3d/contour_v.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.js b/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.js new file mode 100644 index 00000000..ba776786 --- /dev/null +++ b/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.js @@ -0,0 +1,29 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contourf_contour3d.B06UVVCs.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/contour3d/contourf_contour3d.md","filePath":"examples/3d/contour3d/contourf_contour3d.md","lastUpdated":null}'),n={name:"examples/3d/contour3d/contourf_contour3d.md"},p=h('

contourf and contour3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function peaks(; n = 49)
+    x = LinRange(-3, 3, n)
+    y = LinRange(-3, 3, n)
+    a = 3 * (1 .- x').^2 .* exp.(-(x'.^2) .- (y .+ 1).^2)
+    b = 10 * (x' / 5 .- x'.^3 .- y.^5) .* exp.(-x'.^2 .- y.^2)
+    c = 1 / 3 * exp.(-(x' .+ 1).^2 .- y.^2)
+    return (x, y, a .- b .- c)
+end
+x, y, z = peaks()
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200,800))
+    ax1 = Axis(fig[1,1], aspect = 1)
+    ax2 = Axis3(fig[1,2]; aspect = (1,1,0.7), perspectiveness = 0.5)
+    axs = [ax1, ax2]
+    cmap =  :diverging_bkr_55_10_c35_n256
+    contourf!(axs[1], x, y, z; levels = 0.1:0.08:0.9, mode = :relative,
+        colormap = cmap)
+    # bug, colormap cannot be transparent
+    contourf!(axs[2], x, y, z; levels = 14, colormap = cmap)
+    contour3d!(axs[2], x, y, z; levels = 14, colormap = cmap,
+        transparency = true, linewidth = 5)
+    limits!(axs[1], -3,3,-3,3)
+    hidedecorations!.(axs; grid = false)
+    fig
+end
`,3),l=[p];function t(E,e,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.lean.js b/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.lean.js new file mode 100644 index 00000000..85284795 --- /dev/null +++ b/previews/PR54/assets/examples_3d_contour3d_contourf_contour3d.md.BMI3Jk1x.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/contourf_contour3d.B06UVVCs.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/contour3d/contourf_contour3d.md","filePath":"examples/3d/contour3d/contourf_contour3d.md","lastUpdated":null}'),n={name:"examples/3d/contour3d/contourf_contour3d.md"},p=h("",3),l=[p];function t(E,e,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.js b/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.js new file mode 100644 index 00000000..768f1b3d --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.js @@ -0,0 +1,28 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/archimedean_spiral.Bci0qTsR.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/archimedean_spiral.md","filePath":"examples/3d/lines3d/archimedean_spiral.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/archimedean_spiral.md"},l=h('

line: archimedean spiral

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+a, m, z₀ = 1, 2.1, 0
+φ = range(0,20π,length=500)
+r = a*φ
+x, y, z = r .* cos.(φ), r .* sin.(φ), m .* r .+ z₀;
+
+with_theme(theme_black()) do
+    fig = Figure(size = (1200, 800))
+    ax = LScene(fig[1,1])
+    line3d = lines!(x, y, z, color = z, colormap = :viridis)
+    lines!(x, y, 0*z, color = z, colormap = (:viridis, 0.65))
+
+    axis = ax.scene[OldAxis]
+    axis[:names, :axisnames] = ("x", "y", "z")
+    tstyle = axis[:names] #  get the nested attributes and work directly with them
+    tstyle[:fontsize] = 10
+    tstyle[:textcolor] = (:red, :green, :white)
+    tstyle[:font] = "helvetica"
+    tstyle[:gap] = 5
+    axis[:ticks][:textcolor] = :white
+    axis[:ticks][:fontsize] = 5
+    Colorbar(fig[1,2], line3d, label = "z",ticklabelsize = 14,
+        width = 12, height = Relative(2/4), tickalign=0)
+    fig
+end
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.lean.js b/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.lean.js new file mode 100644 index 00000000..0639ac78 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_archimedean_spiral.md.ISnhd9yg.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/archimedean_spiral.Bci0qTsR.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/archimedean_spiral.md","filePath":"examples/3d/lines3d/archimedean_spiral.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/archimedean_spiral.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.js b/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.js new file mode 100644 index 00000000..e0e84271 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ekdflso.DmuncBAR.jpeg",n="/previews/PR54/assets/jqaimhg.qD1NqCDj.jpeg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/filled3d_curve.md","filePath":"examples/3d/lines3d/filled3d_curve.md","lastUpdated":null}'),l={name:"examples/3d/lines3d/filled3d_curve.md"},t=h(`

Filled curve in 3d

From: https://discourse.julialang.org/t/fill-a-curve-in-3d/37890/8

julia
using GLMakie
+GLMakie.activate!()
+
+x = 0:0.05:3;
+y = 0:0.05:3;
+z = @. sin(x) * exp(-(x+y))
+
+fig = Figure(; size=(600, 400))
+ax = Axis3(fig[1,1]; limits=((0,3), (0,3), (0,0.2)),
+    perspectiveness = 0.5,
+    azimuth = -0.5,
+    elevation = 0.3,)
+lines!(Point3f.(x, 0, z), transparency=true)
+lines!(Point3f.(0, y, z), transparency=true)
+band!(Point3f.(x, y, 0), Point3f.(x, y, z);
+    color=(:orangered, 0.25), transparency=true)
+lines!(Point3f.(x, y, z); color=(:orangered, 0.9), transparency=true)
+fig

Filled gradient under 3D curve

julia
fig = Figure(; size=(600, 400))
+ax = Axis3(fig[1,1]; limits=((0,3), (0,3), (0,0.2)),
+    perspectiveness = 0.5,
+    azimuth = -0.5,
+    elevation = 0.3,)
+
+band!(Point3f.(x, y, 0), Point3f.(x, y, z); color = z,
+    colormap = (:Spectral, 0.85), transparency=true)
+lines!(Point3f.(x, y, z); color=(:black, 0.9), transparency=true)
+fig

',7),p=[t];function e(E,r,d,g,y,F){return a(),i("div",null,p)}const o=s(l,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.lean.js b/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.lean.js new file mode 100644 index 00000000..420b1375 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_filled3d_curve.md.BdEI3RxW.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ekdflso.DmuncBAR.jpeg",n="/previews/PR54/assets/jqaimhg.qD1NqCDj.jpeg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/filled3d_curve.md","filePath":"examples/3d/lines3d/filled3d_curve.md","lastUpdated":null}'),l={name:"examples/3d/lines3d/filled3d_curve.md"},t=h("",7),p=[t];function e(E,r,d,g,y,F){return a(),i("div",null,p)}const o=s(l,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.js b/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.js new file mode 100644 index 00000000..74ee8cdc --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const l="/previews/PR54/assets/line3d.B-B_MeBF.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/line3d.md","filePath":"examples/3d/lines3d/line3d.md","lastUpdated":null}'),h={name:"examples/3d/lines3d/line3d.md"},t=n('

single 3d line

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+t = 0:0.1:15
+# and now a simple 3d line
+fig = Figure()
+ax = LScene(fig[1,1])
+lines!(ax, sin.(t), cos.(t), t/4; color = t/4, linewidth = 4,
+    colormap = :plasma)
+fig
`,3),k=[t];function p(e,d,E,r,g,y){return a(),i("div",null,k)}const o=s(h,[["render",p]]);export{F as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.lean.js b/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.lean.js new file mode 100644 index 00000000..a08543d4 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_line3d.md.CuD5-UEv.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const l="/previews/PR54/assets/line3d.B-B_MeBF.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/line3d.md","filePath":"examples/3d/lines3d/line3d.md","lastUpdated":null}'),h={name:"examples/3d/lines3d/line3d.md"},t=n("",3),k=[t];function p(e,d,E,r,g,y){return a(),i("div",null,k)}const o=s(h,[["render",p]]);export{F as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.js b/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.js new file mode 100644 index 00000000..ee99a7c6 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.js @@ -0,0 +1,30 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/lines_wire_contour_3d.CS7nDR_K.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/lines_wire_contour_3d.md","filePath":"examples/3d/lines3d/lines_wire_contour_3d.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/lines_wire_contour_3d.md"},l=h('

lines, wireframe and contour in 3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function peaks(; n = 49)
+    x = LinRange(-3, 3, n)
+    y = LinRange(-3, 3, n)
+    a = 3 * (1 .- x').^2 .* exp.(-(x'.^2) .- (y .+ 1).^2)
+    b = 10 * (x' / 5 .- x'.^3 .- y.^5) .* exp.(-x'.^2 .- y.^2)
+    c = 1 / 3 * exp.(-(x' .+ 1).^2 .- y.^2)
+    return (x, y, a .- b .- c)
+end
+x, y, z = peaks(; n=30)
+with_theme(theme_dark()) do
+    fig =  Figure(size = (1200,800))
+    axs = [Axis3(fig[1,i]; aspect = :data) for i in 1:3]
+    contour3d!(axs[1], x, y, z; levels = 20, transparency = true)
+    contour!(axs[1], x, y, z; levels = 20, transformation = (:xy, minimum(z)),
+        transparency = true)
+    lines!(axs[2], cat(x, NaN, dims=1), y, vcat(z, fill(NaN,30)'),
+        color = repeat(maximum(z, dims=1)[1,:], inner=31),
+        transparency = false)
+    lines!(axs[2], cat(x, NaN, dims=1), y,
+        vcat(z, fill(NaN,30)')*0 .+ minimum(z); color = repeat(maximum(z, dims=1)[1,:], inner=31), transparency = true)
+    wireframe!(axs[3], x, y, z; color = :grey90, transparency = true)
+    wireframe!(axs[3], x, y, z*0 .+ minimum(z); color = :grey90,
+        transparency = true)
+    hidedecorations!.(axs; grid = false)
+    fig
+end
`,3),p=[l];function t(E,e,r,d,y,g){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.lean.js b/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.lean.js new file mode 100644 index 00000000..ba6bc1f8 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_lines_wire_contour_3d.md.rFyE931g.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/lines_wire_contour_3d.CS7nDR_K.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/lines_wire_contour_3d.md","filePath":"examples/3d/lines3d/lines_wire_contour_3d.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/lines_wire_contour_3d.md"},l=h("",3),p=[l];function t(E,e,r,d,y,g){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.js b/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.js new file mode 100644 index 00000000..a2ca58e0 --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/wireframe_torus.DgQopLNp.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/wireframe_torus.md","filePath":"examples/3d/lines3d/wireframe_torus.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/wireframe_torus.md"},l=h('

wireframe torus

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+# let's define the ranges and calculate the grid points on every direction
+U = LinRange(-pi, pi, 100)
+V = LinRange(-pi, pi, 20)
+x1 = [cos(u) + .5 * cos(u) * cos(v)      for u in U, v in V]
+y1 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+z1 = [.5 * sin(v)                        for u in U, v in V]
+x2 = [1 + cos(u) + .5 * cos(u) * cos(v)  for u in U, v in V]
+y2 = [.5 * sin(v)                        for u in U, v in V]
+z2 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V];
+
+# and now we plot the figure
+fig = Figure(; size =(600,600))
+ax = LScene(fig[1,1], show_axis = true)
+wireframe!(ax, x1, y1, z1; transparency = true)
+# some control over axis names.
+# A lot more options are available in ax.scene[OldAxis]
+axis = ax.scene[OldAxis]
+tstyle = axis[:names]
+tstyle[:fontsize] = 16
+tstyle[:gap] = 8
+axis[:ticks][:textcolor] = :black
+axis[:ticks][:fontsize] = 10
+fig
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.lean.js b/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.lean.js new file mode 100644 index 00000000..1ead537b --- /dev/null +++ b/previews/PR54/assets/examples_3d_lines3d_wireframe_torus.md.UlMfCois.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/wireframe_torus.DgQopLNp.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/lines3d/wireframe_torus.md","filePath":"examples/3d/lines3d/wireframe_torus.md","lastUpdated":null}'),n={name:"examples/3d/lines3d/wireframe_torus.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.js b/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.js new file mode 100644 index 00000000..7ae9d8a7 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.js @@ -0,0 +1,28 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/Earth_planes.Dzx3IiJC.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/Earth_planes.md","filePath":"examples/3d/meshes/Earth_planes.md","lastUpdated":null}'),n={name:"examples/3d/meshes/Earth_planes.md"},l=h('

Earth on sphere surrounded by planes

julia
using GLMakie, Colors, LinearAlgebra
+using GeometryBasics, Downloads, FileIO
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+link = "https://www.solarsystemscope.com/textures/download/8k_earth_daymap.jpg"
+earth_img = load(Downloads.download(link))
+function SphereTess(; o=Point3f(0), r=1, tess=64)
+    return uv_normal_mesh(Tesselation(Sphere(o, r), tess))
+end
+
+function ssaoplanes()
+    fig = Figure()
+    ssao = Makie.SSAO(radius = 5.0, blur = 3)
+    ax = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax.scene.ssao.bias[] = 0.025
+    mesh!(ax, SphereTess(; o=Point3f(0.1, 0, 0), r=0.95);
+        color=circshift(earth_img, (0, 3000)), ssao=true)
+    # box
+    mesh!(ax, Rect3(Vec3f(-1, -1, -1.1), Vec3f(2, 2, 0.1));
+        color=RGB(0.082, 0.643, 0.918), ssao=true)
+    mesh!(ax, Rect3(Vec3f(-1, -1.1, -1.1), Vec3f(2, 0.1, 2.1));
+        color=RGB(0.929, 0.773, 0.0), ssao=true)
+    mesh!(ax, Rect3(Vec3f(-1, -1, -1.0), Vec3f(0.1, 2, 2.0));
+        color=RGB(0.91, 0.122, 0.361),
+        ssao=true)
+    fig
+end
+fig = with_theme(ssaoplanes, theme_dark())
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.lean.js b/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.lean.js new file mode 100644 index 00000000..84a283d3 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_Earth_planes.md.C_nc2zfm.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/Earth_planes.Dzx3IiJC.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/Earth_planes.md","filePath":"examples/3d/meshes/Earth_planes.md","lastUpdated":null}'),n={name:"examples/3d/meshes/Earth_planes.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.js b/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.js new file mode 100644 index 00000000..b3e590bc --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.js @@ -0,0 +1,95 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/sionpux.ulF-J_Yn.png",n="/previews/PR54/assets/uemcozo.B9U7qvTF.png",t="/previews/PR54/assets/tutsyhk.Bkb_nmiM.jpeg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/cpunkCube.md","filePath":"examples/3d/meshes/cpunkCube.md","lastUpdated":null}'),l={name:"examples/3d/meshes/cpunkCube.md"},p=h(`
julia
using GLMakie, FileIO
+using GeometryBasics
+using Downloads
+import Cascadia: Selector
+import Gumbo: parsehtml
+import HTTP
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen

Download images from twitter

julia
lucy = Downloads.download("https://pbs.twimg.com/media/FbbZqWTXkAA8KTo?format=jpg&name=large")
+lucy = load(lucy)
+lucy = lucy[1:1000,1:1000]
+
+david = Downloads.download("https://pbs.twimg.com/media/FdGmKklXEAAkdG1?format=jpg&name=large")
+david = load(david)
+david = david[1:1000,1:1000]
+
+faraday = Downloads.download("https://pbs.twimg.com/media/Fdq1ev-X0AM-tXv?format=jpg&name=large")
+faraday = load(faraday)
+faraday = faraday[1:1000,1:1000]
+
+lucydavid = Downloads.download("https://pbs.twimg.com/media/FdAs55qXoAAyG9l?format=jpg&name=large")
+lucydavid = load(lucydavid)
+
+luda = Downloads.download("https://pbs.twimg.com/media/Fcs-pGSX0AIdzWs?format=jpg&name=large")
+luda = load(luda)
+luda = luda[201-40:1240,end:-1:1]
+
+poster = Downloads.download("https://pbs.twimg.com/media/FZFjXDAWIAE-vAT?format=jpg&name=large")
+poster = load(poster)
+poster = poster[1+80:1080+80,end:-1:1]

Set images into the right (your) order

julia
imgs = [rotr90(lucydavid), lucy, rotl90(david),
+    rotr90(faraday), rotr90(rotr90(poster)), rotr90(rotr90(luda))]
+
+fig = Figure(figure_padding=0, size =(600,400))
+axs = [Axis(fig[i,j], aspect=1) for i in 1:2 for j in 1:3]
+[heatmap!(axs[i], imgs[i]) for i in 1:6]
+hidedecorations!.(axs)
+hidespines!.(axs)
+colgap!(fig.layout,0)
+rowgap!(fig.layout,0)
+imgcpunk = Makie.colorbuffer(fig)

Do the meshed cube

julia
function meshcube(o=Vec3f(0), sizexyz = Vec3f(1))
+    uvs = map(v -> v ./ (3, 2), Vec2f[
+    (0, 0), (0, 1), (1, 1), (1, 0),
+    (1, 0), (1, 1), (2, 1), (2, 0),
+    (2, 0), (2, 1), (3, 1), (3, 0),
+    (0, 1), (0, 2), (1, 2), (1, 1),
+    (1, 1), (1, 2), (2, 2), (2, 1),
+    (2, 1), (2, 2), (3, 2), (3, 1),
+    ])
+    m = normal_mesh(Rect3f(Vec3f(-0.5) .+ o, sizexyz))
+    m = GeometryBasics.Mesh(meta(coordinates(m);
+        uv = uvs, normals = normals(m)), faces(m))
+end
+
+m = meshcube();

Get stats

julia
function getstats()
+    r = HTTP.get("https://myanimelist.net/anime/42310/Cyberpunk__Edgerunners/stats")
+    h = parsehtml(String(r.body))
+    helm_table = eachmatch(Selector(".score-stats"), h.root)
+
+    htxt = helm_table[1].children[1]
+    rating = Float32[]
+    votes = Float32[]
+    for child in htxt.children
+        ele = eachmatch(Selector("td"), child)
+        echild = ele[1].children
+        push!(rating, parse(Float32, echild[1].text))
+        ediv = ele[2].children[1]
+        push!(votes, parse(Float32, split(ediv.children[2][2][1].text)[1][2:end]))
+        #parse(Float32, strip(split(ediv.children[2][1].text, "%")[1]))
+    end
+    return (rating, votes)
+end
getstats (generic function with 1 method)

Plot all together

julia
cmap_cpunk = ["#5479B8", "#CD38D1", "#8295A6", "#9EA4A4","#03B0F5",
+    "#2BDB52", "#BACBCF", "#F1F016", "#EEF9E4", "#FAF4FD"]
+
+rating, votes = getstats()
+percent = round.(votes/sum(votes)*100, digits=1)
+
+with_theme(theme_black()) do
+    fig = Figure(size= (1200,700), fontsize = 18)
+    ax1 = LScene(fig[1,1], show_axis=false)
+    ax2 = Axis(fig[1,2]; xlabel = "Rating score")
+    mesh!(ax1, m; color = imgcpunk, interpolate=false)
+    barplot!(ax2, rating, votes; color =reverse(cmap_cpunk))
+    text!(ax2, string.(percent).*"%", position = Point2f.(rating, votes),
+        align = (:center, :bottom))
+    text!(ax2, Point2f(1, 3maximum(votes)/4); text="Total votes: $(sum(votes))",
+        color=cmap_cpunk[8], fontsize= 28)
+    hideydecorations!(ax2; grid=false)
+    hidespines!(ax2, :l, :t, :r)
+    ax2.xticks = 1:10
+    Label(fig[2,1], "Source: https://www.cyberpunk.net/en/edgerunners\\nImages: https://twitter.com/edgerunners",
+        fontsize = 14, tellwidth=false, halign=:left, color = cmap_cpunk[9])
+    Label(fig[2,2], "Stats: https://myanimelist.net/anime/42310/Cyberpunk__Edgerunners/stats",
+        fontsize = 14, tellwidth=false, halign=:right, color = cmap_cpunk[9])
+    colgap!(fig.layout,1)
+    fig
+end

',15),E=[p];function e(r,d,g,y,F,C){return a(),i("div",null,E)}const B=s(l,[["render",e]]);export{c as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.lean.js b/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.lean.js new file mode 100644 index 00000000..393818ec --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_cpunkCube.md.Dy-h-Eqw.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/sionpux.ulF-J_Yn.png",n="/previews/PR54/assets/uemcozo.B9U7qvTF.png",t="/previews/PR54/assets/tutsyhk.Bkb_nmiM.jpeg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/cpunkCube.md","filePath":"examples/3d/meshes/cpunkCube.md","lastUpdated":null}'),l={name:"examples/3d/meshes/cpunkCube.md"},p=h("",15),E=[p];function e(r,d,g,y,F,C){return a(),i("div",null,E)}const B=s(l,[["render",e]]);export{c as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.js b/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.js new file mode 100644 index 00000000..8818245f --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.js @@ -0,0 +1,78 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gfield.DnZEoprq.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/gfield.md","filePath":"examples/3d/meshes/gfield.md","lastUpdated":null}'),n={name:"examples/3d/meshes/gfield.md"},l=h('

Fake gravitation field, spheres and wireframes

julia
using GLMakie, LaTeXStrings, Colors, ColorSchemes
+using FileIO
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function alpha_colorbuffer(scene)
+    bg = scene.backgroundcolor[]
+    scene.backgroundcolor[] = RGBAf(0, 0, 0, 1)
+    b1 = copy(Makie.colorbuffer(scene))
+    scene.backgroundcolor[] = RGBAf(1, 1, 1, 1)
+    b2 = Makie.colorbuffer(scene)
+    scene.backgroundcolor[] = bg
+    return map(infer_alphacolor, b1, b2)
+end
+
+function infer_alphacolor(rgb1, rgb2)
+    rgb1 == rgb2 && return RGBAf(rgb1.r, rgb1.g, rgb1.b, 1)
+    c1 = Float64.((rgb1.r, rgb1.g, rgb1.b))
+    c2 = Float64.((rgb2.r, rgb2.g, rgb2.b))
+    alpha = @. 1 - (c1 - c2) * -1 # ( / (0 - 1))
+    meanalpha = clamp(sum(alpha) / 3, 0, 1)
+    meanalpha == 0 && return RGBAf(0, 0, 0, 0)
+    c = @. clamp((c1 / meanalpha), 0, 1)
+    return RGBAf(c..., meanalpha)
+end
+
+xx = 10 .^ (range(-1.5, stop = log10(4), length = 20))
+xx = vcat([0], xx)
+x = y = vcat(-xx[end:-1:1], xx)
+x3 = -4:0.25:4
+y3 = -4:0.25:4
+r(i, j) = sqrt(i^2 + j^2)
+
+z3 = [-1.5 / (1 + r(i, j))^(1 / 2) for i in x3, j in y3]
+x2 = -10:0.25:10
+y2 = -10:0.25:10
+z2 = [0 for i in x2, j in y2]
+
+pot(i, j) = -1.5 / (1 + r(i, j))^(1 / 2)
+xx = 10 .^ (range(-1.5, stop = log10(4), length = 50))
+xx = vcat([0], xx)
+θ = collect(range(0, , length = 50))
+
+x2 = xx .* cos.(θ)'
+y2 = xx .* sin.(θ)'
+z2 = pot.(x2, y2)
+vol = [-1.5 / (1 + r(i, j))^(1 / 2) for i in x, j in y]
+
+n = 101
+cmap = :cyclic_tritanopic_wrwc_70_100_c20_n256
+g(x) = exp(-x^2)
+alphas = [g(x) for x in range(-2, 3, 101)]
+cmap = resample_cmap(cmap, n; alpha=alphas)
+s = 8.0
+
+set_theme!(theme_dark())
+fig = Figure(size = (1200, 1200))
+axs = LScene(fig[1, 1], show_axis = false)
+surface!(axs, x2, y2, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2 .+ s, y2, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2 .+ s, y2 .+ s, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2, y2 .+ s, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+wireframe!(axs, x2, y2, z2, color = (:grey65, 0.1), transparency = true)
+wireframe!(axs, x2 .+ s, y2, z2, color = (:grey65, 0.15), transparency = true)
+wireframe!(axs, x2 .+ s, y2 .+ s, z2, color = (:grey65, 0.35), transparency = true)
+wireframe!(axs, x2, y2 .+ s, z2, color = (:grey65, 0.15), transparency = true)
+
+meshscatter!(axs, Point3f(0, 0, 0.2); color = "#e4c92a", markersize = 1.2)
+meshscatter!(axs, Point3f(0 + s, 0, 0.2); color = :white, markersize = 1.0)
+meshscatter!(axs, Point3f(0 + s, 0 + s, 0.2); color = "#dd3365", markersize = 1.0)
+meshscatter!(axs, Point3f(0, 0 + s, 0.2); color = "#3782b9", markersize = 1.0)
+#zoom!(axs.scene, cameracontrols(axs.scene), 0.87)
+center!(axs.scene)
+save("gfield.png", alpha_colorbuffer(fig.scene))
`,3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.lean.js b/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.lean.js new file mode 100644 index 00000000..3ecd029e --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_gfield.md.Df00j-Ui.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gfield.DnZEoprq.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/gfield.md","filePath":"examples/3d/meshes/gfield.md","lastUpdated":null}'),n={name:"examples/3d/meshes/gfield.md"},l=h("",3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.js b/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.js new file mode 100644 index 00000000..80893283 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.js @@ -0,0 +1,57 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ygrshga.CVesJuTl.jpeg",n="/previews/PR54/assets/glbllbq.DT4knYOH.jpeg",l="/previews/PR54/assets/bxxzaqu.CndvdfoT.jpeg",p="/previews/PR54/assets/hfqhyjp.J15-B7rN.jpeg",t="/previews/PR54/assets/hcltfbw.ivXtw0gS.jpeg",e="/previews/PR54/assets/ibfpfss.CVI-3PhA.jpeg",E="/previews/PR54/assets/aehqbew.C3DxtXjN.jpeg",A=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/how_to_cube.md","filePath":"examples/3d/meshes/how_to_cube.md","lastUpdated":null}'),r={name:"examples/3d/meshes/how_to_cube.md"},d=h(`
julia
using GLMakie, TestImages, FileIO
+using GeometryBasics, Colors
+using Downloads
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen

Simple cubed mesh

julia
mr = Rect3f(Vec3f(-0.5), Vec3f(1))
+
+fig, ax, obj = mesh(mr; color = :white, transparency=true,
+    figure = (; size = (1200,600)))
+wireframe!(ax, mr; color = :black, transparency=true)
+mesh(fig[1,2], mr; color = [v[3] for v in coordinates(mr)],
+    colormap = :Spectral_11)
+fig

Adding some colours at random

julia
fig, ax, obj = mesh(mr; color = rand(length(coordinates(mr))),
+    colormap = :sunset, figure = (; size = (1200,600)))
+mesh(fig[1,2], mr; color = 1:length(coordinates(mr)),
+    colormap = :sunset)
+fig

A matrix (image) as colors

julia
img = testimage("chelsea")
+fig, ax, obj = mesh(mr; color =rand(10,10), interpolate=false,
+    colormap = :seaborn_icefire_gradient,
+    figure = (; size = (1200,600)))
+mesh(fig[1,2], mr; color = img, interpolate=false)
+fig

Note that the image is simple wrap around the mesh, and not in a goog way.

Wrap individual colors around mesh

Solution by ffreyer, define new uvs

julia
function meshcube(o=Vec3f(0), sizexyz = Vec3f(1))
+    uvs = map(v -> v ./ (3, 2), Vec2f[
+    (0, 0), (0, 1), (1, 1), (1, 0),
+    (1, 0), (1, 1), (2, 1), (2, 0),
+    (2, 0), (2, 1), (3, 1), (3, 0),
+    (0, 1), (0, 2), (1, 2), (1, 1),
+    (1, 1), (1, 2), (2, 2), (2, 1),
+    (2, 1), (2, 2), (3, 2), (3, 1),
+    ])
+    m = normal_mesh(Rect3f(Vec3f(-0.5) .+ o, sizexyz))
+    m = GeometryBasics.Mesh(meta(coordinates(m);
+        uv = uvs, normals = normals(m)), faces(m))
+end
+m = meshcube();
+
+# +z, +x, +y,
+# -x, -y, -z
+img = rand(RGBf, 2, 3)
+fig, ax, obj = mesh(m; color = img, interpolate=false,
+    figure = (; size = (1200,600)))
+mesh(fig[1,2], m; color = img)
+fig

Increasing the number of colours

julia
img = rand(RGBf, 2*6, 3*6)
+mesh(m; color = img, interpolate=false)

Putting an image

julia
img = testimage("chelsea");
+mesh(m; color = img, interpolate=false)

Now the image is splitted all around, hence, something else will be needed. I found the following work around. Where, an image with ratio (2,3) is pre-process, and where each entry corresponds to a different face.

Remember again, the position for each one of them are: +z, +x, +y, -x, -y, -z

Individual images per face

julia
timgs = ["bark_512", "bark_he_512", "brick_wall_he_512",
+    "woolen_cloth_he_512", "wood_grain_he_512", "straw_he_512"];
+
+
+fig = Figure(figure_padding=0, size =(600,400))
+axs = [Axis(fig[i,j], aspect=1) for i in 1:2 for j in 1:3]
+[heatmap!(axs[i], testimage(timgs[i])) for i in 1:6]
+hidedecorations!.(axs)
+hidespines!.(axs)
+colgap!(fig.layout,0)
+rowgap!(fig.layout,0)
+imgOut = Makie.colorbuffer(fig.scene)
+
+mesh(m; color = imgOut, interpolate=false)

',26),g=[d];function y(F,C,o,c,B,m){return a(),i("div",null,g)}const D=s(r,[["render",y]]);export{A as __pageData,D as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.lean.js b/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.lean.js new file mode 100644 index 00000000..fc952418 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_how_to_cube.md.NIfvvzom.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ygrshga.CVesJuTl.jpeg",n="/previews/PR54/assets/glbllbq.DT4knYOH.jpeg",l="/previews/PR54/assets/bxxzaqu.CndvdfoT.jpeg",p="/previews/PR54/assets/hfqhyjp.J15-B7rN.jpeg",t="/previews/PR54/assets/hcltfbw.ivXtw0gS.jpeg",e="/previews/PR54/assets/ibfpfss.CVI-3PhA.jpeg",E="/previews/PR54/assets/aehqbew.C3DxtXjN.jpeg",A=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/how_to_cube.md","filePath":"examples/3d/meshes/how_to_cube.md","lastUpdated":null}'),r={name:"examples/3d/meshes/how_to_cube.md"},d=h("",26),g=[d];function y(F,C,o,c,B,m){return a(),i("div",null,g)}const D=s(r,[["render",y]]);export{A as __pageData,D as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.js b/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.js new file mode 100644 index 00000000..e6a53d44 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.js @@ -0,0 +1,76 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/isosurfaces.Bj_BRZD7.png",n="/previews/PR54/assets/aarqlva.ByWakPlv.jpeg",l="/previews/PR54/assets/rhpspfi.-LYb1hLB.jpeg",p="/previews/PR54/assets/mddrjde.wJ3MszmR.jpeg",t="/previews/PR54/assets/yebacdj.LXn84W5N.jpeg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/isosurfaces.md","filePath":"examples/3d/meshes/isosurfaces.md","lastUpdated":null}'),e={name:"examples/3d/meshes/isosurfaces.md"},E=h('

Isosurfaces

by Ashton Bradley

julia
using GLMakie
+using Meshing, GeometryBasics
+GLMakie.activate!()
+
+function show_isosurface(f,h,ξ; color=(:dodgerblue,0.5), isoval=100)
+  algo = MarchingCubes(; iso=isoval)
+
+  s = [h(x,y,z) for x in ξ, y in ξ, z in ξ] .+ isoval
+
+  # generate the mesh using marching cubes
+
+  vts, fcs = Meshing.isosurface(s, algo)
+  mc = GeometryBasics.Mesh(Point3f.(vts), GeometryBasics.TriangleFace.(fcs))
+
+  return mesh(f, normal_mesh(mc);
+      color,
+      diffuse = Vec3f0(0.8),
+      specular = Vec3f0(1.1),
+      shininess = 30f0,
+      backlight = 5f0,
+      transparency=true,
+      axis = (; show_axis = false)
+      )
+end
show_isosurface (generic function with 1 method)

Torus

Isosurfaces for $h(x,y,z)=0$

julia
torus(x,y,z; c=20, a=15) = ((hypot(x,y)-c)^2+z^2-a^2)
+
+with_theme(theme_dark()) do
+  ξ = -40:0.5:40
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], torus, ξ; color = (:orangered, 0.5))
+  f
+end

Entzensberger star

julia
estar(x,y,z) = 100*(x^2*y^2 + y^2*z^2 + x^2*z^2) - (1 - x^2 - y^2 - z^2)^3
+
+with_theme(theme_dark()) do
+  Xm = 1
+  ξ = -Xm:0.01:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], estar, ξ);
+  f
+end

Tetrahedron

julia
tetra(x,y,z) = x^4 + 2*x^2*y^2 + 2*x^2*z^2 + y^4 + 2*y^2*z^2 + z^4 + 8*x*y*z - 10*x^2 - 10*y^2 - 10*z^2 + 20
+
+with_theme(theme_dark()) do
+  Xm = 10
+  ξ = -Xm:0.05:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], tetra, ξ; color = (:gold, 0.35));
+  f
+end

Decocube

julia
deco(x,y,z; b=1,c=2.2,t=1.2) = ((x^2 + y^2 - c^2)^2 + (z - 1)^2*(z + 1)^2)*((y^2 + z^2 - c^2)^2 +
+(x - 1)^2*(x + 1)^2)*((z^2 + x^2 - c^2)^2 + (y - 1)^2*(y + 1)^2) -
+t*(1 + b*(x^2 + y^2 + z^2))
+
+with_theme(theme_dark()) do
+  Xm = 2.5
+  ξ = -Xm:0.025:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], deco, ξ; color = (:silver, 0.65));
+  f
+end

All together

julia
with_theme(theme_dark()) do
+  Xm = [1, 10, 2.5]
+
+  ξ1 = -40:0.5:40
+  ξ2 = -Xm[1]:0.01:Xm[1]
+  ξ3 = -Xm[2]:0.05:Xm[2]
+  ξ4 = -Xm[3]:0.025:Xm[3]
+
+  f = Figure(size=(600, 600))
+  show_isosurface(f[1,1], torus, ξ1; color = (:orangered, 0.5))
+  show_isosurface(f[1,2], estar, ξ2);
+  show_isosurface(f[2,1], tetra, ξ3; color = (:gold, 0.35));
+  show_isosurface(f[2,2], deco, ξ4; color = (:silver, 0.65));
+  f
+  save("isosurfaces.png", f)
+end
`,20),r=[E];function d(g,y,F,C,c,A){return a(),i("div",null,r)}const B=s(e,[["render",d]]);export{o as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.lean.js b/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.lean.js new file mode 100644 index 00000000..c3e16577 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_isosurfaces.md.Bnee8gGc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/isosurfaces.Bj_BRZD7.png",n="/previews/PR54/assets/aarqlva.ByWakPlv.jpeg",l="/previews/PR54/assets/rhpspfi.-LYb1hLB.jpeg",p="/previews/PR54/assets/mddrjde.wJ3MszmR.jpeg",t="/previews/PR54/assets/yebacdj.LXn84W5N.jpeg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/isosurfaces.md","filePath":"examples/3d/meshes/isosurfaces.md","lastUpdated":null}'),e={name:"examples/3d/meshes/isosurfaces.md"},E=h("",20),r=[E];function d(g,y,F,C,c,A){return a(),i("div",null,r)}const B=s(e,[["render",d]]);export{o as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.js b/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.js new file mode 100644 index 00000000..172805f4 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.js @@ -0,0 +1,44 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/meshes.BHwbSZVB.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/meshes.md","filePath":"examples/3d/meshes/meshes.md","lastUpdated":null}'),n={name:"examples/3d/meshes/meshes.md"},l=h('

Meshes: Cylinder, Pyramid, Cone, Cube

julia
using GLMakie, Random, Colors, LinearAlgebra
+using GeometryBasics: Cylinder, Pyramid
+using Makie
+import GeometryBasics
+GLMakie.closeall() # close any open screen
+
+Random.seed!(3)
+
+cyl = Cylinder(Point{3, Float64}(1,2,3), Point{3, Float64}(2,3,4), 1.0)
+pyr = Pyramid(Point3f(0), 1f0, 1f0)
+rectmesh = Rect3(Point3f(-0.5), Vec3f(1))
+rectthin = Rect3(Point3f(-1), Vec3f(2,2,0.25))
+sphere = Sphere(Point3f(-0.5), 1)
+Cone(; quality = 10) = merge([
+    Makie._circle(Point3f(0), 0.5f0, Vec3f(0,0,-1), quality),
+    Makie._mantle(Point3f(0), Point3f(0,0,1), 0.5f0, 0f0, quality)])
+cone = Cone()
+rectMesh = GeometryBasics.mesh(rectmesh)
+rectThin = GeometryBasics.mesh(rectthin)
+cyL = GeometryBasics.mesh(cyl)
+
+cmap = resample_cmap(:Spectral_11, length(rectMesh.position))
+colors1 = [cmap[i] for (i,v) in enumerate(rectMesh.position)]
+colors2 = [RGBA(rand(4)...) for v in rectThin.position]
+colors3 = [norm(v) for v in cyL.position]
+markers = [sphere, rectmesh, cyl, pyr, cone]
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200,800))
+    axs = [Axis3(fig[i,j]; aspect = :data, perspectiveness = 0.5)
+        for j in 1:3, i in 1:2]
+    mesh!(axs[1], sphere, color = :white)
+    mesh!(axs[2], rectmesh, color = colors1)
+    mesh!(axs[3], pyr; color = (:dodgerblue, 0.85))
+    wireframe!(axs[3], pyr; color = :grey90)
+    mesh!(axs[4], cyl; color = colors3,
+        colormap = :diverging_tritanopic_cwr_75_98_c20_n256)
+    mesh!(axs[5], cone; transparency = true)
+    wireframe!(axs[5], cone; color = :grey90, linewidth = 0.5)
+    mesh!(axs[6], rectthin; color = colors2, shading = NoShading)
+    [meshscatter!(axs[6], Point3f(1.5rand(3) .- 0.5); marker = markers[i],
+        markersize = 0.25) for i in 1:5]
+    fig
+end
`,3),p=[l];function t(E,e,r,d,y,g){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.lean.js b/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.lean.js new file mode 100644 index 00000000..f6faea74 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_meshes.md.Bi_3X-hK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/meshes.BHwbSZVB.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/meshes.md","filePath":"examples/3d/meshes/meshes.md","lastUpdated":null}'),n={name:"examples/3d/meshes/meshes.md"},l=h("",3),p=[l];function t(E,e,r,d,y,g){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.js b/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.js new file mode 100644 index 00000000..c94877d5 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.js @@ -0,0 +1,46 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/simplex.BjtV2VkM.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/simplex.md","filePath":"examples/3d/meshes/simplex.md","lastUpdated":null}'),n={name:"examples/3d/meshes/simplex.md"},l=h('

simplex

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+vertices = [
+    0 0 0
+    1 0 0
+    0 1 0
+    0 0 1
+    ]
+faces = [
+    3 2 1
+    4 1 2
+    4 3 1
+    4 2 3
+    ]
+# m = GLMakie.GeometryBasics.Mesh(GLMakie.Makie.to_vertices(vertices), GLMakie.Makie.to_triangles(faces))
+# mesh(m)
+
+marker = Sphere(Point3f(0), 1) # 0 -> -0.5, fully inside, 0 -> 0.5 fully outside
+
+fig = Figure(size = (600,600))
+ax = LScene(fig[1,1], show_axis=false)
+m = mesh!(ax, vertices, faces; color = :white, transparency=true,)
+poly!(ax, vertices, faces; color = :transparent,
+    transparency=true, strokewidth = 1.0)
+meshscatter!(ax,
+    Point3f(1/3, 1/3,1/3),  # you need to calculate this for your use case
+    marker = marker, markersize = 0.025, transparency=true)
+# the following are not over the plane nither perpendicular.
+arrows!(ax,
+    [Point3f(1/3, 1/3,1/3)],  # you need to calculate this for your use case
+    [Point3f(0.2, 0.1,0.3)],  # you need to calculate this for your use case
+    arrowsize = Vec3f(0.05, 0.05, 0.08),
+    color = :red,
+    arrowcolor = :black)
+arrows!(ax,
+    [Point3f(1/3, 1/3,1/3)],  # you need to calculate this for your use case
+    [Point3f(-0.1, -0.1,0.3)],  # you need to calculate this for your use case
+    arrowsize = Vec3f(0.08, 0.08, 0.08),
+    linewidth = 0.02,
+    color = :dodgerblue,
+    arrowcolor = :orange)
+zoom!(ax.scene, cameracontrols(ax.scene), 0.9)
+rotate!(ax.scene, -0.1)
+fig
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.lean.js b/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.lean.js new file mode 100644 index 00000000..e8be7513 --- /dev/null +++ b/previews/PR54/assets/examples_3d_meshes_simplex.md.Dbe5wsub.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/simplex.BjtV2VkM.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/meshes/simplex.md","filePath":"examples/3d/meshes/simplex.md","lastUpdated":null}'),n={name:"examples/3d/meshes/simplex.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.js b/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.js new file mode 100644 index 00000000..d498bd04 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.js @@ -0,0 +1,15 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/RGBAcube.Bpn9PdG2.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/RGBAcube.md","filePath":"examples/3d/mscatters/RGBAcube.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/RGBAcube.md"},t=h('

RGBAcube

julia
using GLMakie, Colors
+using GeometryBasics: Rect3f
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+positions = vec([Point3f(i / 5, j / 5, k / 5) for i = 1:7, j = 1:7, k = 1:7]) ## note 7 > 5 [factor in each i,j,k], whichs is misleading
+
+fig, ax, obj = meshscatter(positions;
+    marker = Rect3f(Vec3f(-0.5), Vec3f(1.8)),
+    transparency = true,
+    color = [RGBA(positions[i]..., 0.5) for i in eachindex(positions)],
+    figure = (;
+        size = (1200, 800))
+)
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.lean.js b/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.lean.js new file mode 100644 index 00000000..a6a9863a --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_RGBAcube.md.B9k2cvVF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/RGBAcube.Bpn9PdG2.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/RGBAcube.md","filePath":"examples/3d/mscatters/RGBAcube.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/RGBAcube.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.js b/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.js new file mode 100644 index 00000000..6f42ab21 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.js @@ -0,0 +1,75 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/RRGraph3D.DeZc8NnB.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/RRGraph3D.md","filePath":"examples/3d/mscatters/RRGraph3D.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/RRGraph3D.md"},p=n('

Random Rectangular Graph

julia
# Adaptation from:
+# L Alonso, et. al. https://doi.org/10.1093/comnet/cnx053
+
+using LinearAlgebra, Random, GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function RRGAdjacencyM3D(; radius = 0.17, nodes = 500, rseed = 123)
+    Random.seed!(rseed)
+    xy = rand(nodes, 3)
+    x = xy[:, 1]
+    y = xy[:, 2]
+    z = xy[:, 3]
+
+    matrixAdjDiag = Diagonal(2 * randn(nodes))
+    matrixAdj = zeros(nodes, nodes)
+    for point in 1:nodes-1
+        xseps = (x[point+1:end] .- x[point]) .^ 2
+        yseps = (y[point+1:end] .- y[point]) .^ 2
+        zseps = (z[point+1:end] .- z[point]) .^ 2
+
+        distance = sqrt.(xseps .+ yseps .+ zseps)
+        dindx = findall(distance .<= radius) .+ point
+        if length(dindx) > 0
+            rnd = randn(length(dindx))
+            matrixAdj[point, dindx] = rnd
+            matrixAdj[dindx, point] = rnd
+        end
+    end
+    return (matrixAdj .+ matrixAdjDiag, x, y, z)
+end
+adjacencyM3D, x, y, z = RRGAdjacencyM3D()
+
+function getGraphEdges3D(adjMatrix3D, x, y, z)
+    xyzos = []
+    weights = []
+    for i in eachindex(x), j in i+1:length(x)
+        if adjMatrix3D[i, j] != 0.0
+            push!(xyzos, [x[i], y[i], z[i]])
+            push!(xyzos, [x[j], y[j], z[j]])
+            push!(weights, adjMatrix3D[i, j])
+            push!(weights, adjMatrix3D[i, j])
+        end
+    end
+    return (Point3f.(xyzos), Float32.(weights))
+end
+
+function plotGraph3D(adjacencyM3D, x, y, z)
+    cmap = (:Hiroshige, 0.75)
+    adjmin = minimum(adjacencyM3D)
+    adjmax = maximum(adjacencyM3D)
+    diagValues = diag(adjacencyM3D)
+    segm, weights = getGraphEdges3D(adjacencyM3D, x, y, z)
+
+    fig, ax, pltobj = linesegments(segm; color = weights, colormap = cmap,
+        linewidth = abs.(weights),
+        colorrange = (adjmin, adjmax),
+        figure = (;
+            size = (1200, 800),
+            fontsize = 24),
+        axis = (;
+            type = Axis3,
+            aspect = (1, 1, 1),
+            perspectiveness = 0.5))
+    meshscatter!(ax, x, y, z; color = diagValues,
+        markersize = abs.(diagValues) ./ 90,
+        colorrange = (adjmin, adjmax),
+        colormap = cmap)
+    Colorbar(fig[1, 2], pltobj, label = "weights", height = Relative(0.5))
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+with_theme(theme_dark()) do
+    plotGraph3D(adjacencyM3D, x, y, z)
+end
`,3),l=[p];function t(E,e,d,r,g,y){return a(),i("div",null,l)}const C=s(k,[["render",t]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.lean.js b/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.lean.js new file mode 100644 index 00000000..a564ee2c --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_RRGraph3D.md.DDrPFdiY.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/RRGraph3D.DeZc8NnB.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/RRGraph3D.md","filePath":"examples/3d/mscatters/RRGraph3D.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/RRGraph3D.md"},p=n("",3),l=[p];function t(E,e,d,r,g,y){return a(),i("div",null,l)}const C=s(k,[["render",t]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.js b/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.js new file mode 100644 index 00000000..8e110847 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.js @@ -0,0 +1,22 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/SSAO_meshscatter.BKHiKm97.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/SSAO_meshscatter.md","filePath":"examples/3d/mscatters/SSAO_meshscatter.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/SSAO_meshscatter.md"},t=h('

SSAO and meshscatters

julia
# from https://makie.juliaplots.org/v0.15/documentation/lighting/#examples
+using GLMakie, Colors, LinearAlgebra
+using Random: seed!
+seed!(1313)
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+
+function ssaom()
+    positions = [Point3f(x, y, rand()) for x in -7:7 for y in -5:5]
+    fig = Figure(size=(1200, 800))
+    ssao = Makie.SSAO(radius = 6.0, blur = 3)
+    ax = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax.scene.ssao.bias[] = 0.025
+    meshscatter!(ax, positions; marker=Rect3(Point3f(-0.5), Vec3f(1)),
+        markersize=1, color=norm.(positions),
+        colormap=Reverse(:tol_light),
+        ssao=true
+    )
+    zoom!(ax.scene, cameracontrols(ax.scene), 0.65)
+    fig
+end
+fig = ssaom()
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(n,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.lean.js b/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.lean.js new file mode 100644 index 00000000..563279e6 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_SSAO_meshscatter.md.BlFd7w4X.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/SSAO_meshscatter.BKHiKm97.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/SSAO_meshscatter.md","filePath":"examples/3d/mscatters/SSAO_meshscatter.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/SSAO_meshscatter.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(n,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.js b/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.js new file mode 100644 index 00000000..427443af --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.js @@ -0,0 +1,47 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/SSAO_mgrid.BObk24OV.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/SSAO_mgrid.md","filePath":"examples/3d/mscatters/SSAO_mgrid.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/SSAO_mgrid.md"},l=h('

SSAO meshscatters grid

julia
using GLMakie
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+positions = vec([(i, j, k) for i in x, j in y, k in z])
+vals = [f(ix, iy, iz) for ix in x, iy in y, iz in z]
+
+function ssaomeshscatter()
+    colormap = :starrynight
+    fig = Figure(size=(1800, 600))
+    ssao = Makie.SSAO(radius = 6.0, blur = 3)
+    ax11 = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax11.scene.ssao.bias[] = 0.025
+    ax12 = LScene(fig[1, 2]; show_axis=false, scenekw=(ssao=ssao,))
+    ax13 = LScene(fig[1, 3]; show_axis=false, scenekw=(ssao=ssao,))
+    meshscatter!(ax11, positions, color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap=(colormap, 0.5),
+        colorrange=(minimum(vals), maximum(vals)),
+        backlight=4.0f0,
+        ssao=true,
+    )
+    meshscatter!(ax12, positions; color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap,
+        colorrange=(minimum(vals), maximum(vals)),
+        ssao=true
+    )
+    meshscatter!(ax13, positions; color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap,
+        colorrange=(minimum(vals), maximum(vals)),
+        backlight=2.0f0,
+        ssao=true,
+        transparency=true
+    )
+    zoom!(ax11.scene, cameracontrols(ax11.scene), 1.2)
+    zoom!(ax12.scene, cameracontrols(ax12.scene), 1.2)
+    zoom!(ax13.scene, cameracontrols(ax13.scene), 1.2)
+    fig
+end
+with_theme(ssaomeshscatter, theme_dark())
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.lean.js b/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.lean.js new file mode 100644 index 00000000..3f32cf83 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_SSAO_mgrid.md.DIluXjJB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/SSAO_mgrid.BObk24OV.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/SSAO_mgrid.md","filePath":"examples/3d/mscatters/SSAO_mgrid.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/SSAO_mgrid.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.js b/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.js new file mode 100644 index 00000000..a6bb2dea --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.js @@ -0,0 +1,35 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/cube_mscatters.CDu4vjJR.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/cube_mscatters.md","filePath":"examples/3d/mscatters/cube_mscatters.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/cube_mscatters.md"},l=h('

Assembled cube with smaller cubes: meshscatters

julia
using GLMakie, ColorSchemes
+using GeometryBasics: Rect3f
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+positions = vec([(i, j, k) for i in x, j in y, k in z])
+vals = [f(ix, iy, iz) for ix in x, iy in y, iz in z]
+m = Rect3f(Vec3f(-0.5), Vec3f(1))
+
+fig, ax, pltobj = meshscatter(positions;
+    color = vec(vals),
+    marker = m, markersize = 0.9,
+    colormap = (:Egypt, 0.75),
+    colorrange = (minimum(vals), maximum(vals)),
+    transparency = true,
+    shading = NoShading,
+    figure = (;
+        size = (1200, 800)
+        ),
+    axis = (;
+        type = Axis3,
+        perspectiveness = 0.5,
+        azimuth = 2.19,
+        elevation = 0.57,
+        xlabel = "x label",
+        ylabel = "y label",
+        zlabel = "z label",
+        aspect = (1, 1, 1))
+        )
+Colorbar(fig[1, 2], pltobj; label = "f values", height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+limits!(ax, -1, 11, -1, 11, -1, 11)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.lean.js b/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.lean.js new file mode 100644 index 00000000..6fd2fd76 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_cube_mscatters.md.UqnGlyj6.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/cube_mscatters.CDu4vjJR.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/cube_mscatters.md","filePath":"examples/3d/mscatters/cube_mscatters.md","lastUpdated":null}'),n={name:"examples/3d/mscatters/cube_mscatters.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const C=s(n,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.js b/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.js new file mode 100644 index 00000000..225cff5b --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.js @@ -0,0 +1,43 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/gauss2d.DyL4MPwL.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/gauss2d.md","filePath":"examples/3d/mscatters/gauss2d.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/gauss2d.md"},l=h('

meshscatters and distributions

julia
using GLMakie, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+Random.seed!(13)
+x = -6:0.5:6
+y = -6:0.5:6
+z = 6exp.( -(x.^2 .+ y' .^ 2)./4)
+
+box = Rect3(Point3f(-0.5), Vec3f(1))
+n = 100
+g(x) = x^(1/10)
+alphas = [g(x) for x in range(0,1,length=n)]
+cmap_alpha = resample_cmap(:linear_worb_100_25_c53_n256, n, alpha = alphas)
+
+with_theme(theme_dark()) do
+    fig, ax, = meshscatter(x, y, z;
+        marker=box,
+        markersize = 0.5,
+        color = vec(z),
+        colormap = cmap_alpha,
+        colorrange = (0,6),
+        axis = (;
+            type = Axis3,
+            aspect = :data,
+            azimuth = 7.3,
+            elevation = 0.189,
+            perspectiveness = 0.5),
+        figure = (;
+            size =(1200,800)))
+    meshscatter!(ax, x .+ 7, y, z./2;
+        markersize = 0.25,
+        color = vec(z./2),
+        colormap = cmap_alpha,
+        colorrange = (0, 6),
+        #ambient = Vec3f(0.85, 0.85, 0.85), # lights?
+        backlight = 1.5f0)
+    xlims!(-5.5,10)
+    ylims!(-5.5,5.5)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.lean.js b/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.lean.js new file mode 100644 index 00000000..bd196ae5 --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_gauss2d.md.DBL9BpGK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/gauss2d.DyL4MPwL.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/gauss2d.md","filePath":"examples/3d/mscatters/gauss2d.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/gauss2d.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.js b/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.js new file mode 100644 index 00000000..512e0c5e --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/lscene_limits.hwPokA7Q.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/lscene_limits.md","filePath":"examples/3d/mscatters/lscene_limits.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/lscene_limits.md"},t=h('

Sets limits on a LScene

julia
using GLMakie
+using Random
+Random.seed!(1618)
+GLMakie.activate!()
+
+fig = Figure()
+ax = LScene(fig[1, 1], scenekw = (;
+    limits=Rect3f(Vec3f(0,0,0),Vec3f(1.5, 1.5, 2.5)))
+    )
+meshscatter!(ax, rand(Point3f, 10); color = :orangered)
+meshscatter!(ax, rand(Point3f, 10) .+ Point3f(0,0,1);
+    color = :grey25, marker=Rect3f(Vec3f(-0.5), Vec3f(1)))
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.lean.js b/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.lean.js new file mode 100644 index 00000000..cb39ec8c --- /dev/null +++ b/previews/PR54/assets/examples_3d_mscatters_lscene_limits.md.ChThjSh-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/lscene_limits.hwPokA7Q.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/mscatters/lscene_limits.md","filePath":"examples/3d/mscatters/lscene_limits.md","lastUpdated":null}'),k={name:"examples/3d/mscatters/lscene_limits.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.js b/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.js new file mode 100644 index 00000000..cc488e8d --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.js @@ -0,0 +1,35 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/band3d.DEcXPdpU.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/band3d.md","filePath":"examples/3d/surfaces/band3d.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/band3d.md"},l=h('

band in 3d

julia
using GLMakie, LaTeXStrings, SpecialFunctions, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+Random.seed!(13)
+with_theme(theme_black()) do
+    fig = Figure(size = (1200,800))
+    ax = Axis3(fig;
+        aspect = (1,0.5,0.5),
+        azimuth = 10.42,
+        elevation = 0.027,
+        perspectiveness=0.5)
+    x = 0:0.1:15
+    y = -1:0.1:7
+    horizontal = Point3f.(tuple.(15, y, 3exp.(-(y .-3).^2/3)))
+    for ν in 0:7
+        lines!(ax, x, x*0 .+ ν, besselj.(ν, x) .+ ν/3;
+            linewidth = 2,
+            color = :grey90,
+            label = latexstring("J_{$(ν)}(x)"))
+        band!(ax, Point3f.(tuple.(x, ν, ν/3)),
+            Point3f.(tuple.(x, ν, besselj.(ν, x) .+ ν/3));
+            color = 1:length(x),
+            colormap = :plasma)
+        text!(ax, latexstring("J_{$(ν)}(x)"), position = Point3f(15.2,ν, ν/3))
+    end
+    band!(ax, Point3f.(tuple.(0, y, 0.0)),
+        Point3f.(tuple.(0, y, 3exp.(-(y .-3).^2/3))); color = rand(length(y)))
+    band!(ax, horizontal[1:40], reverse(horizontal[42:end]); color = 1:40,
+        colormap = :bone_1)
+    lines!(ax, horizontal; color= :white, linewidth = 2)
+    hidedecorations!(ax; grid = false)
+    fig[1,1] = ax
+    fig
+end
`,3),p=[l];function t(E,e,d,r,g,y){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.lean.js b/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.lean.js new file mode 100644 index 00000000..5ca70e5e --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_band3d.md.CnF7a0MP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/band3d.DEcXPdpU.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/band3d.md","filePath":"examples/3d/surfaces/band3d.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/band3d.md"},l=h("",3),p=[l];function t(E,e,d,r,g,y){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.js b/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.js new file mode 100644 index 00000000..c50d0d0e --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/branching.B1Gitfaz.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/branching.md","filePath":"examples/3d/surfaces/branching.md","lastUpdated":null}'),k={name:"examples/3d/surfaces/branching.md"},t=h('

branching

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+t = 0:0.1:15
+u = -1:0.1:1
+x = [u * sin(t) for t in t, u in u]
+y = [u * cos(t) for t in t, u in u]
+z = [t / 4 for t in t, u in u]
+fig = surface(x, y, z; colormap = [:orangered, :orangered],
+    #lightposition = Vec3f(0, 0, 0), ambient = Vec3f(0.65, 0.65, 0.65),
+    backlight = 5.0f0, figure = (; size = (1200, 800)))
+wireframe!(x, y, z, overdraw = false, linewidth = 0.1) # try overdraw = true
+fig
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.lean.js b/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.lean.js new file mode 100644 index 00000000..6b957530 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_branching.md.CSpBHYrT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/branching.B1Gitfaz.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/branching.md","filePath":"examples/3d/surfaces/branching.md","lastUpdated":null}'),k={name:"examples/3d/surfaces/branching.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(k,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.js b/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.js new file mode 100644 index 00000000..467e38b3 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/complex_function.BbxBpwFP.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/complex_function.md","filePath":"examples/3d/surfaces/complex_function.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/complex_function.md"},l=h('

complex function surface

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = -2:0.005:2
+y = -2:0.005:2
+f(z) = (z^2 + 1) / (z^2 - 1)
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+indxCut = fvalues .> 3
+fvalues[indxCut] .= 3.01
+
+fig, ax, pltobj = surface(x, y, fvalues, color = fargs,
+    colormap = :roma, colorrange = (-π, π),
+    backlight = 1.0f0, highclip = :black,
+    figure = (; size = (1200, 800), fontsize = 22))
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.lean.js b/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.lean.js new file mode 100644 index 00000000..aa855206 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_complex_function.md.Dds7wsJd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/complex_function.BbxBpwFP.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/complex_function.md","filePath":"examples/3d/surfaces/complex_function.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/complex_function.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const C=s(n,[["render",t]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.js b/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.js new file mode 100644 index 00000000..d8187957 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.js @@ -0,0 +1,37 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/constraints.CnJdvksP.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/constraints.md","filePath":"examples/3d/surfaces/constraints.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/constraints.md"},l=h('

constraints: split surfaces

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = LinRange(-2, 0.5, 501)
+y = LinRange(-2, 2, 501);
+# objective function
+z = 100 .* (y' .- x .^ 2) .^ 2 .+ (1 .- x) .^ 2;
+# build constraints
+zin = copy(z)
+zout1 = copy(z)
+zout2 = copy(z)
+for (i, x) in enumerate(x), (j, y) in enumerate(y)
+    if x * y >= 1
+        zin[i, j] = NaN
+        zout1[i, j] = z[i, j]
+        zout2[i, j] = NaN
+    elseif (x + y^2) >= 1
+        zin[i, j] = NaN
+        zout1[i, j] = NaN
+        zout2[i, j] = z[i, j]
+    else
+        zin[i, j] = z[i, j]
+        zout1[i, j] = NaN
+        zout2[i, j] = NaN
+    end
+end
+fig = Figure(size = (1200, 800), fontsize = 22)
+ax = Axis3(fig[1, 1], aspect = (1, 1, 1), perspectiveness = 0.5, elevation = π / 9,
+    azimuth = 0.2π, zgridcolor = :grey, ygridcolor = :grey, xgridcolor = :grey)
+pltobj = surface!(ax, x, y, zin; colormap = Reverse(:viridis))
+surface!(ax, x, y, zout1; colormap = [(:orangered, 0.5), (:orangered, 0.5)])
+surface!(ax, x, y, zout2; colormap = [(:dodgerblue, 0.5), (:dodgerblue, 0.5)])
+Colorbar(fig[1, 2], pltobj, label = "xy <=1 & x + y^2<=1",
+    height = Relative(0.5), width = 20)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.lean.js b/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.lean.js new file mode 100644 index 00000000..96ffb027 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_constraints.md.CLJ3VWjE.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/constraints.CnJdvksP.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/constraints.md","filePath":"examples/3d/surfaces/constraints.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/constraints.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.js b/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.js new file mode 100644 index 00000000..695c8c51 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gabriels_horn.DQuxM7BK.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/gabriels_horn.md","filePath":"examples/3d/surfaces/gabriels_horn.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/gabriels_horn.md"},l=h('

gabriels horn: surface revolution

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(0.8, 6, 50)
+v = LinRange(0, , 50)
+X1 = [u for u in u, v in v]
+Y1 = [(1/u) * cos(v) for u in u, v in v]
+Z1 = [(1/u) * sin(v) for u in u, v in v]
+
+fig = Figure(size=(1200, 800))
+ax = LScene(fig[1, 1], show_axis=false)
+pltobj = surface!(ax, -X1, -Y1, Z1; shading = FastShading,
+    #ambient=Vec3f(0.65, 0.65, 0.65),
+    backlight=1.0f0, color=sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap=Reverse(:bone_1), transparency=true,
+    )
+wireframe!(ax, -X1, -Y1, Z1; transparency = true,
+    color = :gray, linewidth = 0.5)
+zoom!(ax.scene, cameracontrols(ax.scene), 0.98)
+Colorbar(fig[1, 2], pltobj, height=Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.lean.js b/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.lean.js new file mode 100644 index 00000000..6d2702c8 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_gabriels_horn.md.DRmZxjMJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gabriels_horn.DQuxM7BK.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/gabriels_horn.md","filePath":"examples/3d/surfaces/gabriels_horn.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/gabriels_horn.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.js b/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.js new file mode 100644 index 00000000..bda9614f --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/klein_bottle.DPxnqpCz.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/klein_bottle.md","filePath":"examples/3d/surfaces/klein_bottle.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/klein_bottle.md"},l=h('

klein bottle

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+# The bottle
+u = LinRange(0, π, 100)
+v = LinRange(0, , 100)
+x = [-2 / 15 * cos(u) * (3 * cos(v) - 30 * sin(u) + 90 * cos(u)^4 * sin(u)
+    - 60 * cos(u)^6 * sin(u) + 5 * cos(u) * cos(v) * sin(u)) for u in u, v in v]
+y = [-1 / 15 * sin(u) * (3 * cos(v) - 3 * cos(u)^2 * cos(v) - 48 * cos(u)^4 * cos(v) + 48 * cos(u)^6 * cos(v)
+    - 60 * sin(u) + 5 * cos(u) * cos(v) * sin(u) - 5 * cos(u)^3 * cos(v) * sin(u)
+    - 80 * cos(u)^5 * cos(v) * sin(u) + 80 * cos(u)^7 * cos(v) * sin(u)) for u in u, v in v]
+z = [2 / 15 * (3 + 5 * cos(u) * sin(u)) * sin(v) for u in u, v in v]
+
+fig = Figure(size = (1200, 800))
+ax = LScene(fig[1, 1], show_axis = false)
+surface!(ax, x, y, z; color = sqrt.(x.^2 .+ y.^2), colormap = (:Spectral_11, 0.8))
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const A=s(n,[["render",p]]);export{C as __pageData,A as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.lean.js b/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.lean.js new file mode 100644 index 00000000..cd28dc15 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_klein_bottle.md.BnGsXz6R.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/klein_bottle.DPxnqpCz.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/klein_bottle.md","filePath":"examples/3d/surfaces/klein_bottle.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/klein_bottle.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const A=s(n,[["render",p]]);export{C as __pageData,A as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.js b/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.js new file mode 100644 index 00000000..cb9e25a2 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/onecolor.V21L7jHy.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/onecolor.md","filePath":"examples/3d/surfaces/onecolor.md","lastUpdated":null}'),k={name:"examples/3d/surfaces/onecolor.md"},l=h('

surface with one color

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+t = range(0, , length = 50)
+u = -1:0.1:1
+x = [u * sin(t) for t in t, u in u]
+y = [u * cos(t) for t in t, u in u]
+z = [u for t in t, u in u]
+fig = surface(x, y, z, colormap = [:dodgerblue, :dodgerblue],
+    #lightposition = Vec3f(0, 0, 0.8), ambient = Vec3f(0.6, 0.6, 0.6),
+    backlight = 2.0f0)
+wireframe!(x, y, z; overdraw = false, linewidth = 0.1) # try overdraw = true
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const F=s(k,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.lean.js b/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.lean.js new file mode 100644 index 00000000..10480448 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_onecolor.md.DkEw32tW.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/onecolor.V21L7jHy.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/onecolor.md","filePath":"examples/3d/surfaces/onecolor.md","lastUpdated":null}'),k={name:"examples/3d/surfaces/onecolor.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const F=s(k,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.js b/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.js new file mode 100644 index 00000000..db283a51 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/revolution_surface.B6nj6I9L.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/revolution_surface.md","filePath":"examples/3d/surfaces/revolution_surface.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/revolution_surface.md"},l=h('

revolution surface

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(0, 1, 50)
+v = LinRange(0, , 50)
+X1 = [u for u in u, v in v]
+Y1 = [(u^4 - u^2) * cos(v) for u in u, v in v]
+Z1 = [(u^4 - u^2) * sin(v) for u in u, v in v]
+
+fig, ax, pltobj = surface(X1, Y1, Z1; shading = FastShading,
+    #ambient = Vec3f(0.65, 0.65, 0.65),
+    backlight = 1.0f0, color = sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap = :viridis, transparency = true,
+    figure = (; size = (1200, 800), fontsize = 22))
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.lean.js b/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.lean.js new file mode 100644 index 00000000..0945a504 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_revolution_surface.md.DKqYytjP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/revolution_surface.B6nj6I9L.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/revolution_surface.md","filePath":"examples/3d/surfaces/revolution_surface.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/revolution_surface.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.js b/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.js new file mode 100644 index 00000000..0d072eae --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/revolution_surface_s.ClclkFj3.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/revolution_surface_s.md","filePath":"examples/3d/surfaces/revolution_surface_s.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/revolution_surface_s.md"},l=h('

revolution surface s

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(-1.5, 2, 50)
+v = LinRange(0, 2 * pi, 50)
+X1 = [u for u in u, v in v]
+Y1 = [(u^2 + 1) * cos(v) for u in u, v in v]
+Z1 = [(u^2 + 1) * sin(v) for u in u, v in v]
+
+fig, ax, pltobj = surface(X1, Y1, Z1; shading = FastShading,
+    #ambient = Vec3f(0.95, 0.95, 0.95),
+    backlight = 1.0f0, color = sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap = :Isfahan2, transparency = true,
+    figure = (; size = (1200, 800), fontsize = 22))
+wireframe!(X1, Y1, Z1; linewidth = 0.2, transparency = true)
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.lean.js b/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.lean.js new file mode 100644 index 00000000..ddefd6a8 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_revolution_surface_s.md.Ba7b_Dkf.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/revolution_surface_s.ClclkFj3.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/revolution_surface_s.md","filePath":"examples/3d/surfaces/revolution_surface_s.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/revolution_surface_s.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.js b/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.js new file mode 100644 index 00000000..6f767340 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/surface.BfBjRaGB.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/surface.md","filePath":"examples/3d/surfaces/surface.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/surface.md"},l=h('

surface + contour + wireframe

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = LinRange(-2, 2, 51)
+z = (-x .* exp.(-x .^ 2 .- (y') .^ 2)) .* 4
+zmin, zmax = minimum(z), maximum(z)
+cmap = :viridis
+
+fig = Figure(size = (1200, 800), fontsize = 22)
+ax = Axis3(fig[1, 1], aspect = :data, perspectiveness = 0.5, elevation = π / 9,
+    xzpanelcolor = (:black, 0.75), yzpanelcolor = (:black, 0.75),
+    zgridcolor = :grey, ygridcolor = :grey, xgridcolor = :grey)
+sm = surface!(ax, x, y, z; colormap = cmap, colorrange = (zmin, zmax),
+    transparency = true)
+xm, ym, zm = minimum(ax.finallimits[])
+contour!(ax, x, y, z; levels = 20, colormap = cmap, linewidth = 2,
+    colorrange = (zmin, zmax), transformation = (:xy, zmin),
+    transparency = true)
+wireframe!(ax, x, y, z; overdraw = true, transparency = true,
+    color = (:black, 0.1))
+Colorbar(fig[1, 2], sm, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.lean.js b/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.lean.js new file mode 100644 index 00000000..5555dcf0 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_surface.md.DfxrdlLp.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/surface.BfBjRaGB.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/surface.md","filePath":"examples/3d/surfaces/surface.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/surface.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.js b/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.js new file mode 100644 index 00000000..2fc89db6 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.js @@ -0,0 +1,104 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/taqfmoq._tcF1pNd.jpeg",k="/previews/PR54/assets/nazyshg.COdl-5rO.jpeg",p="/previews/PR54/assets/pihnwup.B2KdkOLz.jpeg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/surface_filled_sides.md","filePath":"examples/3d/surfaces/surface_filled_sides.md","lastUpdated":null}'),l={name:"examples/3d/surfaces/surface_filled_sides.md"},t=h(`
julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = range(-3, 3, length=100)
+y = range(-2, 2, length=100)
+z = [sin(x + y^2) for x in x, y in y]
+xpt = [x for x in x, y in y]
+ypt = [y for x in x, y in y];
+
+function boundary_values(a)
+    return [a[1,:]..., a[2:end,end]..., a[end,end-1:-1:1]...,a[end-1:-1:1,1]...]
+end
+
+bxpt = boundary_values(xpt)
+bypt = boundary_values(ypt)
+bzpt = boundary_values(z)
+
+upper = Point3f.(bxpt, bypt, bzpt)
+lower = Point3f.(bxpt, bypt, bzpt*0.0 .+ minimum(bzpt))
+lower_colors = bzpt*0.0 .+ minimum(bzpt);

Plotting sides

julia
with_theme(theme_dark()) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    ax  = Axis3(fig[1,1]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+
+    surface!(ax, xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(ax, upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(ax, lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(ax, lower, upper; color = bzpt, colormap)
+    fig
+end

Sides, colour gradient bottom to top

julia
with_theme(theme_dark()) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    ax  = Axis3(fig[1,1]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+
+    surface!(ax, xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(ax, upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(ax, lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(ax, lower, upper; color = [lower_colors..., bzpt...], colormap)
+    fig
+end

Different views and options

julia
with_theme(theme_dark(), size = (1250,1200)) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    axs  = [Axis3(fig[i,j]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+        for i in 1:2 for j in 1:2
+    ]
+    surface!(axs[1], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=false,
+        )
+    surface!(axs[2], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=true)
+    lines!(axs[2], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[2], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+
+    surface!(axs[3], xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(axs[3], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[3], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(axs[3], lower, upper; color = bzpt, colormap)
+
+    surface!(axs[4], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=false
+        )
+    lines!(axs[4], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[4], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(axs[4], lower, upper; color = bzpt, colormap)
+    fig
+end

',10),E=[t];function e(r,d,g,y,F,C){return a(),i("div",null,E)}const B=s(l,[["render",e]]);export{o as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.lean.js b/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.lean.js new file mode 100644 index 00000000..19b3424f --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_surface_filled_sides.md.CxiWrG0i.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/taqfmoq._tcF1pNd.jpeg",k="/previews/PR54/assets/nazyshg.COdl-5rO.jpeg",p="/previews/PR54/assets/pihnwup.B2KdkOLz.jpeg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/surface_filled_sides.md","filePath":"examples/3d/surfaces/surface_filled_sides.md","lastUpdated":null}'),l={name:"examples/3d/surfaces/surface_filled_sides.md"},t=h("",10),E=[t];function e(r,d,g,y,F,C){return a(),i("div",null,E)}const B=s(l,[["render",e]]);export{o as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.js b/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.js new file mode 100644 index 00000000..782245f6 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.js @@ -0,0 +1,43 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/tesseralSphericalH.CSLdP6us.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/tesseralSphericalH.md","filePath":"examples/3d/surfaces/tesseralSphericalH.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/tesseralSphericalH.md"},l=h('

Tesseral Spherical Harmonics

julia
using GLMakie
+using AssociatedLegendrePolynomials
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function Y(θ, ϕ, l, m)
+    if m < 0
+        return (-1)^m *2 * Nlm(l, abs(m)) * Plm(l, abs(m), cos(θ)) * sin(abs(m) * ϕ)
+    elseif m == 0
+        return sqrt((2 * l + 1) /) * Plm(l, m, cos(θ))
+    else
+        return (-1)^m *2 * Nlm(l, m) * Plm(l, m, cos(θ)) * cos(m * ϕ)
+    end
+end
+# Grids of polar and azimuthal angles
+θ = LinRange(0, π, 200)
+ϕ = LinRange(0, , 200)
+x = [sin(θ) * sin(ϕ) for θ in θ, ϕ in ϕ]
+y = [sin(θ) * cos(ϕ) for θ in θ, ϕ in ϕ]
+z = [cos(θ) for θ in θ, ϕ in ϕ]
+l = 10
+m = 1
+Ygrid = [Y(θ, ϕ, l, m) for θ in θ, ϕ in ϕ]
+Ylm = abs.(Ygrid)
+cmap = [:dodgerblue, :white, :orangered]
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200, 800), fontsize = 22)
+    axs = [Axis3(fig[1, j], aspect = :data) for j in 1:2]
+    pltobj = surface!(axs[1], x, y, z; color = Ygrid,
+        colormap = cmap,
+        shading = NoShading)
+    surface!(axs[2], Ylm .* x, Ylm .* y, Ylm .* z;
+        color = Ygrid,
+        colormap = cmap,
+        shading = NoShading)
+    Colorbar(fig[1, 3], pltobj, label = "Yₗₘ(θ,ϕ)", tickwidth = 2, tickalign = 1,
+        width = 25, ticksize = 25, height = Relative(0.5))
+    fig[0, 1:2] = Label(fig, "Tesseral Spherical Harmonics l = $(l), m = $(m)",
+        fontsize = 30, color = (:white, 0.85))
+    hidedecorations!.(axs; grid = false)
+    fig
+end
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.lean.js b/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.lean.js new file mode 100644 index 00000000..886a4d1c --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_tesseralSphericalH.md.BjQkJZ8e.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/tesseralSphericalH.CSLdP6us.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/tesseralSphericalH.md","filePath":"examples/3d/surfaces/tesseralSphericalH.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/tesseralSphericalH.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.js b/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.js new file mode 100644 index 00000000..d00c3de0 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.js @@ -0,0 +1,41 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/torus.BY9ffpSY.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/torus.md","filePath":"examples/3d/surfaces/torus.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/torus.md"},l=h('

Torus surfaces

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+U = LinRange(-pi, pi, 100)
+V = LinRange(-pi, pi, 20)
+x1 = [cos(u) + 0.5 * cos(u) * cos(v) for u in U, v in V]
+y1 = [sin(u) + 0.5 * sin(u) * cos(v) for u in U, v in V]
+z1 = [0.5 * sin(v) for u in U, v in V]
+x2 = [1 + cos(u) + 0.5 * cos(u) * cos(v) for u in U, v in V]
+y2 = [0.5 * sin(v) for u in U, v in V]
+z2 = [sin(u) + 0.5 * sin(u) * cos(v) for u in U, v in V]
+
+fig = Figure(; size = (1200, 800))
+ax = LScene(fig, show_axis = true)
+tori1 = surface!(ax, x1, y1, z1; colormap = :viridis, shading = NoShading,
+    transparency = true)
+tori2 = surface!(ax, x2, y2, z2; colormap = :plasma, shading = NoShading,
+    transparency = false)
+wireframe!(ax, x1, y1, z1; linewidth = 0.5, transparency = true)
+
+axis = ax.scene[OldAxis]
+axis[:names, :axisnames] = ("x", "y", "z")
+tstyle = axis[:names] #  get the nested attributes and work directly with them
+
+tstyle[:fontsize] = 15
+tstyle[:textcolor] = (:red, :green, :black)
+tstyle[:font] = "helvetica"
+tstyle[:gap] = 10
+axis[:ticks][:textcolor] = :black
+axis[:ticks][:fontsize] = 10
+cbar1 = Colorbar(fig, tori1, label = "z", width = 25, ticklabelsize = 20,
+    labelsize = 20, ticksize = 25, tickalign = 1, height = Relative(0.5))
+cbar2 = Colorbar(fig, tori2, label = "z", width = 25, flipaxis = false,
+    labelsize = 20, ticklabelsize = 20, ticksize = 25, tickalign = 1,
+    height = Relative(0.5))
+fig[1, 2] = ax
+fig[1, 3] = cbar1
+fig[1, 1] = cbar2
+colgap!(fig.layout, 2)
+fig
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.lean.js b/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.lean.js new file mode 100644 index 00000000..74eafec2 --- /dev/null +++ b/previews/PR54/assets/examples_3d_surfaces_torus.md.DIqhLVmu.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/torus.BY9ffpSY.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/surfaces/torus.md","filePath":"examples/3d/surfaces/torus.md","lastUpdated":null}'),n={name:"examples/3d/surfaces/torus.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.js b/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.js new file mode 100644 index 00000000..af1f46f7 --- /dev/null +++ b/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/volume.CFVym4Xy.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/volume/volume.md","filePath":"examples/3d/volume/volume.md","lastUpdated":null}'),e={name:"examples/3d/volume/volume.md"},p=n('

volume

julia
using GLMakie, ColorSchemes\nGLMakie.activate!()\nGLMakie.closeall() # close any open screen\n\nx = y = z = 1:10\nf(x, y, z) = x^2 + y^2 + z^2\nvol = [f(ix, iy, iz) for ix in x, iy in y, iz in z]\nfig, ax, _ = volume(x, y, z, vol;\n    colorrange = (minimum(vol), maximum(vol)),\n    colormap = :Egypt, transparency = true,\n    figure = (; size = (1200, 800)),\n    axis = (;\n        type = Axis3,\n        perspectiveness = 0.5,\n        azimuth = 2.19,\n        elevation = 0.57,\n        aspect = (1, 1, 1)\n        )\n    )\nfig
┌ Warning: Encountered an `AbstractVector` with value 1:10 on side x in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value 1:10 on side y in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value 1:10 on side z in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
',4),l=[p];function h(k,E,r,d,g,o){return a(),i("div",null,l)}const F=s(e,[["render",h]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.lean.js b/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.lean.js new file mode 100644 index 00000000..b88290bf --- /dev/null +++ b/previews/PR54/assets/examples_3d_volume_volume.md.BrOYgu8K.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/volume.CFVym4Xy.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/volume/volume.md","filePath":"examples/3d/volume/volume.md","lastUpdated":null}'),e={name:"examples/3d/volume/volume.md"},p=n("",4),l=[p];function h(k,E,r,d,g,o){return a(),i("div",null,l)}const F=s(e,[["render",h]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.js b/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.js new file mode 100644 index 00000000..99330c1d --- /dev/null +++ b/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/volume_contour_scatters.DVdPbS5F.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/volume/volume_contour_scatters.md","filePath":"examples/3d/volume/volume_contour_scatters.md","lastUpdated":null}'),k={name:"examples/3d/volume/volume_contour_scatters.md"},t=n('

volume, contour and scatters

julia
using GLMakie, ColorSchemes\nusing GeometryBasics: Rect3f\nGLMakie.closeall() # close any open screen\n\nx = y = z = -1:0.2:1\nvol1 = [ix * iy * iz for ix in x, iy in y, iz in z]\npoints3d = [Point3f(ix, iy, iz) for ix in x, iy in y, iz in z];\n# scale everything to the interval 0,1 (things don't seem to work with colorrange)\nvol2 = (vol1 .+ 1) ./ 2;\n# colormap with transparency in the middle\ncmap = :Hiroshige\nn = 101\ng(x) = x^2\nalphas = [g(x) for x in range(-1, 1, length = n)]\ncmap_alpha = resample_cmap(cmap, n; alpha = alphas)\n# the plot\nfig = Figure(size = (1200, 1200))\nax1 = Axis3(fig[1, 1], perspectiveness = 0.5, azimuth = 7.19,\n    elevation = 0.57, aspect = (1, 1, 1))\nax2 = Axis3(fig[1, 2], perspectiveness = 0.5, azimuth = 6.62,\n    elevation = 0.57, aspect = (1, 1, 1))\nax3 = Axis3(fig[2, 1], perspectiveness = 0.5, azimuth = 7.38,\n    elevation = 0.57, aspect = (1, 1, 1))\nax4 = Axis3(fig[2, 2], perspectiveness = 0.5, azimuth = 6.64,\n    elevation = 0.57, aspect = (1, 1, 1))\n\nvolume!(ax1, x, y, z, vol2; colormap = cmap, transparency = true)\ncontour!(ax2, x, y, z, vol1; colormap = cmap, alpha = 0.05,\n    levels = [collect(-1:0.01:-0.3)..., collect(0.3:0.01:1)...])\nmeshscatter!(ax3, vec(points3d); color = vec(vol1), colormap = cmap_alpha)\nmeshscatter!(ax4, vec(points3d); color = vec(vol1), colormap = cmap_alpha,\n    marker = Rect3f(Vec3f(-1), Vec3f(2)))\nlimits!(ax4, -1.2, 1.2, -1.2, 1.2, -1.2, 1.2)\nfig
┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side x in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side y in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side z in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side x in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side y in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405\n┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side z in `convert_arguments` for the `ImageLike` trait.\n│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.\n│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.\n└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
',4),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.lean.js b/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.lean.js new file mode 100644 index 00000000..d3ee454d --- /dev/null +++ b/previews/PR54/assets/examples_3d_volume_volume_contour_scatters.md.COcGzrPH.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/volume_contour_scatters.DVdPbS5F.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/3d/volume/volume_contour_scatters.md","filePath":"examples/3d/volume/volume_contour_scatters.md","lastUpdated":null}'),k={name:"examples/3d/volume/volume_contour_scatters.md"},t=n("",4),p=[t];function l(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.js b/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.js new file mode 100644 index 00000000..dfb67b5c --- /dev/null +++ b/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.js @@ -0,0 +1,131 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gravities.DLPLyucX.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/gravities.md","filePath":"examples/animations/gravities.md","lastUpdated":null}'),n={name:"examples/animations/gravities.md"},t=h('

Falling bodies in the Solar System.

julia
using GLMakie, FileIO
+GLMakie.activate!()
+# See following links for references:
+# https://twitter.com/AnsonBiggs/status/1444823816031510529/photo/1
+# https://github.com/JuliaAnimators/Javis.jl/blob/master/examples/gravities.jl
+diameters = Dict(
+    "Mercury" => 4879,
+    "Venus" => 12104,
+    "Earth" => 12756,
+    "Moon" => 3475,
+    "Mars" => 6792,
+    "Jupiter" => 142984,
+    "Saturn" => 120536,
+    "Uranus" => 51118,
+    "Neptune" => 49528,
+    "Pluto" => 2370)
+struct Body
+    position::Int
+    name::String
+    gravity::Real
+    color::String
+    radius::Real
+end
+Body(pos, name, grav, color) = Body(pos, name, grav, color, log(diameters[name]) * 2)
+bodies = [
+    Body(1, "Mercury", 3.7, "snow4")
+    Body(2, "Venus", 8.9, "navajowhite")
+    Body(3, "Earth", 9.8, "lightskyblue")
+    Body(4, "Moon", 1.6, "gainsboro")
+    Body(5, "Mars", 3.7, "orangered")
+    Body(6, "Jupiter", 23.1, "olive")
+    Body(7, "Saturn", 9, "burlywood")
+    Body(8, "Uranus", 8.7, "cyan3")
+    Body(9, "Neptune", 11, "dodgerblue")
+    Body(10, "Pluto", 0.7, "rosybrown4")
+]
+framerate = 24
+height = 1000 # meters
+
+frames = let
+    # Get planet with slowest acceleration
+    slowest = [p.gravity for p in bodies] |> minimum
+    # Kinematic equation to determine seconds to fall from height
+    time = 2 * height / slowest |> sqrt
+    # Calculate total frames and add a few seconds at the end to display final result
+    ceil(Int, time * framerate) + framerate * 5
+end
+
+fontsize = 12
+f = Observable(1)
+with_theme(theme_dark()) do
+    fig = Figure(; size=(900, 500))
+    axs = [Axis(fig[i, j]) for j in 1:11, i in 1:3]
+    for (idx, body) in enumerate(bodies)
+        # Kinematic equations to calculate how many frames each planet will be active
+        t_final = 2 * height / body.gravity |> sqrt
+        v_final = body.gravity * t_final
+        frame_final = ceil(Int, t_final * framerate)
+        # Calculate time of current frame for kinematic math
+        time = @lift($f / framerate)
+        # Calculate planets current position
+        body_y = @lift(height - 0.5 * body.gravity * $time^2)
+        sec = @lift($body_y <= 0 ? round(t_final, digits = 1) : round($time, digits = 1))
+        velocity = @lift($body_y <= 0 ? round(v_final, digits = 1) : round(body.gravity * $time, digits = 1))
+        body_y = @lift($body_y <= 0 ? 0 : $body_y)
+
+        # Set planet's position
+        scatter!(axs[idx+1, 2], @lift(Point2f(1, $body_y)), color = body.color, markersize = 25)
+        text!(axs[idx+1, 1], @lift(string($sec, "s")),
+            position = Point2f(1, 1),
+            fontsize = fontsize, color = @lift($body_y <= 0 ? "orange" : "grey90"),
+            align = (:left, :center))
+        text!(axs[idx+1, 1],
+            @lift(string($velocity, "m/s")),
+            position = Point2f(1, 0), fontsize = fontsize,
+            color = @lift($body_y <= 0 ? "orange" : "grey90"),
+            align = (:left, :center))
+
+        ylims!(axs[idx+1, 2], -30, height + 30)
+
+        scatter!(axs[idx+1,3], [Point2f(0,0)]; color = @lift($body_y <= 0 ? body.color : "grey9"),
+            strokecolor = :white, markersize = 85,
+            strokewidth = @lift($body_y <= 0 ? 2 : 0.25))
+        # Set text that is static during entire planet translation
+        text!(axs[idx+1, 1], body.name, position = Point2f(1, 3),
+            fontsize = fontsize, align = (:left, :center))
+        text!(axs[idx+1, 1], string(body.gravity, "m/s²"),
+            position = Point2f(1, 2), fontsize = fontsize,
+            align = (:left, :center))
+        limits!(axs[idx+1, 1], 0, 3, -0.5, 3.5)
+    end
+    ylims!(axs[1, 2], -15, height + 15)
+    text!(axs[1, 2], "\\n1 Km", position = Point2f(0, 1000),
+        color=:orangered, fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 2], "0 Km", position = Point2f(0, 0),
+        color=:dodgerblue, fontsize = fontsize, align = (:left, :center))
+
+    text!(axs[1, 1], "Body:", position = Point2f(0, 3),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Acceleration:", position = Point2f(0, 2),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Time:", position = Point2f(0, 1),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Velocity:", position = Point2f(0, 0),
+        fontsize = fontsize, align = (:left, :center))
+    limits!(axs[1, 1], 0, 3, -0.5, 3.5)
+
+    [hidedecorations!(axs[idx, k]) for idx in 1:11, k in 1:3]
+    [hidespines!(axs[idx, k]) for idx in 1:11, k in 1:3]
+
+    Label(fig[0, :], "Falling Bodies in the Solar System\\n ", font=:bold,
+        tellwidth = false, color = :grey70, fontsize=16)
+    Label(fig[0, :],
+        rich("Visualization by ",
+        rich("Lazaro Alonso\\n ", color=:dodgerblue)),
+        justification=:left,
+        halign=1.0
+        )
+    rowgap!(fig.layout, 0)
+    colgap!(fig.layout, 0)
+    rowsize!(fig.layout, 1, Auto(0.15))
+    rowsize!(fig.layout, 3, Auto(0.2))
+    fig
+
+    record(fig, "gravities.mp4", framerate = 2 * framerate) do io
+        for i in 1:frames
+            f[] = i
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
"gravities.mp4"
`,4),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.lean.js b/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.lean.js new file mode 100644 index 00000000..ed7f5931 --- /dev/null +++ b/previews/PR54/assets/examples_animations_gravities.md.MwYDoBr3.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/gravities.DLPLyucX.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/gravities.md","filePath":"examples/animations/gravities.md","lastUpdated":null}'),n={name:"examples/animations/gravities.md"},t=h("",4),l=[t];function p(E,e,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.js b/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.js new file mode 100644 index 00000000..b5eddc4f --- /dev/null +++ b/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/rotatingWithTime.BhUnf1Ht.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/rotating_with_time.md","filePath":"examples/animations/rotating_with_time.md","lastUpdated":null}'),n={name:"examples/animations/rotating_with_time.md"},t=h('

Rotating disc points

julia
using GLMakie
+GLMakie.activate!()
+# http://juliaplots.org/MakieReferenceImages/gallery//record_video/index.html
+
+f(t, v, s) = (sin(v + t) * s, cos(v + t) * s, (cos(v + t) + sin(v)) * s)
+t = Observable(time())
+pos1 = lift(t-> f.(t, range(0, stop = 2pi, length = 50), 1), t)
+pos2 = lift(t-> f.(t * 2.0, range(0, stop = 2pi, length = 50), 1.5), t)
+connectingLines = @lift(vcat([[$pos1[idx], $pos2[idx]] for idx in 1:length($pos1)]...))
+color = @lift(1:length($pos1)).val
+colorLines = @lift(1:length($connectingLines)).val
+markersize = 0.05
+
+limits = Rect3f(Vec3f(-1.5, -1.5, -3), Vec3f(3, 3, 6))
+fig = Figure(; size = (800,800))
+ax = LScene(fig[1,1]; scenekw=(limit=limits, ))
+meshscatter!(ax, pos1; color, markersize)
+meshscatter!(ax, pos2; color, markersize)
+linesegments!(ax, connectingLines, color = colorLines, linestyle = :dot)
+fig
+
+record(fig,  "rotatingWithTime.mp4", 1:120) do i
+    t[] = time()
+end
"rotatingWithTime.mp4"
`,4),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.lean.js b/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.lean.js new file mode 100644 index 00000000..d7b0004c --- /dev/null +++ b/previews/PR54/assets/examples_animations_rotating_with_time.md.BHXI2BnO.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/rotatingWithTime.BhUnf1Ht.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/rotating_with_time.md","filePath":"examples/animations/rotating_with_time.md","lastUpdated":null}'),n={name:"examples/animations/rotating_with_time.md"},t=h("",4),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.js b/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.js new file mode 100644 index 00000000..c205cd0b --- /dev/null +++ b/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.js @@ -0,0 +1,33 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/scatterAndLine.cqgAYWda.mp4",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/scatter_and_line.md","filePath":"examples/animations/scatter_and_line.md","lastUpdated":null}'),k={name:"examples/animations/scatter_and_line.md"},t=n('

Animate line and point: Projectile motion

julia
using GLMakie
+GLMakie.activate!()
+
+# let's define some trajectory equations:
+x(t; v₀ = 270, θ = 60) = v₀ * t * cos* π / 180)
+y(t; v₀ = 270, θ = 60, g = 9.8) = v₀ * t * sin* π / 180) - g * t^2 / 2
+
+# Define a point function
+loc_point(t) = Point2f(x(t), y(t))
+# and a time span to calculate some coordinates
+t = 0:0.5:50
+# initial point
+traj = Observable(loc_point.(t[1:2]))
+lead_point = Observable(loc_point(t[2]))
+
+# first frame, initial plot
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1]; xlabel = "x", ylabel = "y")
+lines!(ax, traj; color = :grey45, linewidth = 2)
+scatter!(lead_point; color = :orangered, markersize = 15)
+fig
+# the animation is done by updating the Observables
+record(fig, "scatterAndLine.mp4") do io
+    for t_i in t[3:end]
+        push!(traj[], loc_point(t_i)) # add new point to trajectory
+        lead_point[] = loc_point(t_i) # update leading point
+        ax.title = "t = $(t_i)"
+        autolimits!(ax)
+        ylims!(ax, -1000, 3000)
+        traj[] = traj[] #  trigger all updates for the new frame
+        recordframe!(io)  # record a new frame
+    end
+end
"scatterAndLine.mp4"
`,4),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.lean.js b/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.lean.js new file mode 100644 index 00000000..fb9ad5d9 --- /dev/null +++ b/previews/PR54/assets/examples_animations_scatter_and_line.md.B1ESDK7p.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/scatterAndLine.cqgAYWda.mp4",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/scatter_and_line.md","filePath":"examples/animations/scatter_and_line.md","lastUpdated":null}'),k={name:"examples/animations/scatter_and_line.md"},t=n("",4),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const C=s(k,[["render",p]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.js b/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.js new file mode 100644 index 00000000..a48edac4 --- /dev/null +++ b/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.js @@ -0,0 +1,25 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/animScatters.D-D47jZ5.mp4",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/scatter_size.md","filePath":"examples/animations/scatter_size.md","lastUpdated":null}'),k={name:"examples/animations/scatter_size.md"},t=n('

Animate markersize growth

julia
using GLMakie, Random
+GLMakie.activate!()
+
+Random.seed!(123)
+npts = 100
+initms = 8 * rand(npts)
+with_theme(theme_dark()) do
+    msize = Observable(initms) # this is the variable that will change
+    # first frame, initial plot
+    fig, ax = scatter(2 * rand(npts), rand(npts), markersize = msize,
+        color = initms, colormap = (:Greek, 0.75), strokewidth = 0.5,
+        strokecolor = :white,
+        figure = (size = (1200, 800), fontsize = 22),
+        axis = (xlabel = "x", ylabel = "y",))
+    limits!(ax, 0, 2, 0, 1)
+    # the animation is done by updating the Observable values
+    # change assets->(your folder) to make it work in your local env
+    record(fig, "animScatters.mp4",
+        framerate = 24, profile = "main") do io
+        for i in 1:0.1:8
+            msize[] = i * initms
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.lean.js b/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.lean.js new file mode 100644 index 00000000..e6935e00 --- /dev/null +++ b/previews/PR54/assets/examples_animations_scatter_size.md.C9OwcTrd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/animScatters.D-D47jZ5.mp4",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/scatter_size.md","filePath":"examples/animations/scatter_size.md","lastUpdated":null}'),k={name:"examples/animations/scatter_size.md"},t=n("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(k,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.js b/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.js new file mode 100644 index 00000000..25a5404d --- /dev/null +++ b/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.js @@ -0,0 +1,61 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/travellingSolarSystem.FvpMSGk-.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/travelling_solar_system.md","filePath":"examples/animations/travelling_solar_system.md","lastUpdated":null}'),n={name:"examples/animations/travelling_solar_system.md"},l=h('

The speed of light in the solar system

julia
using GLMakie
+GLMakie.activate!()
+
+# https://www.jpl.nasa.gov/edu/pdfs/scaless_reference.pdf
+# 1au = 149597870700 # meters
+distances = [0, 0.39, 0.72, 1, 1.52, 5.2, 9.54, 19.2, 30.06] * 149597870700 # meters
+speed = 299792458 # meters / second
+diameters = [696340 * 2, 4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528] # km
+colors = ["snow4", "navajowhite", "lightskyblue", "orangered", "olive",
+    "burlywood", "cyan3", "dodgerblue"]
+names = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
+
+point = Observable(Point2f(0, 0))
+tail = Observable(Point2f[(0, 0)])
+ms = Observable(20.0)
+tempo = Observable(0.0)
+msP = diameters / maximum(diameters) * 545
+
+with_theme(theme_dark()) do
+    fig = Figure(; size=(900, 400))
+    axS = Axis(fig[1, 1])
+    axP = Axis(fig[1, 2]; title = "The speed of light in the solar system", titlesize = 14)
+    scatter!(axS, [-3.9], [0]; markersize = msP[1], color = :white)
+    scatter!(axP, distances[2:end], fill(0, length(distances[2:end]));
+        markersize = msP[2:end], color = colors)
+    colsize!(fig.layout, 1, Auto(0.1))
+    colgap!(fig.layout, 0)
+    hidedecorations!.([axP, axS])
+    hidespines!.([axP, axS])
+    xlims!(axS, -1, 1)
+    ylims!(axS, -1, 1)
+    Label(fig[1, 2, Top()], "so fast! 😃", fontsize = 16, halign=1)
+    Label(fig[1, 2, Top()], "so slow 😢", fontsize = 16, halign=0.0)
+    Label(fig[1,1:2, Bottom()], rich("Visualization by ",
+        rich("Lazaro Alonso", color=:dodgerblue)),
+        color = :white, halign=1)
+    text!(axP, names, position = tuple.(distances[2:end], [1, -1, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5]))
+    stem!(axP, distances[2:end], [1, -1, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5]; color = colors,
+        stemcolor = colors, trunkcolor = :white, trunklinestyle = :dashdotdot,
+        trunkwidth = 1, stemwidth = 0.85, markersize = 8)
+
+    for i = 1:5
+        lines!(axP, @lift(length($tail) < 5 ? $tail : $tail[end:-1:end-Int64(round(0.01 * i * length($tail)))]);
+            linewidth = 4 - i * 0.7, color = (:white, 1 - 0.1 * i))
+    end
+    scatter!(axP, point; color = (:white, 0.85), markersize = 15, marker = '▶')
+    text!(axP, @lift("$($tempo) hours"), position = point; color = :gold,
+        align = (:center, :bottom))
+    fig
+    record(fig, "travellingSolarSystem.mp4", framerate = 48) do io
+        for frame in LinRange(0.001, distances[end] + distances[5], 1000)
+            new_point = Point2f(frame, 0.0)
+            push!(tail[], new_point)
+            point[] = new_point
+            tempo[] = round((frame / speed) / 60 / 60, digits = 2)
+            tail[] = tail[]
+            xlims!(axP, 0, frame + frame * 0.08)
+            recordframe!(io)
+        end
+    end
+end
"travellingSolarSystem.mp4"
`,4),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.lean.js b/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.lean.js new file mode 100644 index 00000000..ac1d465d --- /dev/null +++ b/previews/PR54/assets/examples_animations_travelling_solar_system.md.Bz7HSwCA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/travellingSolarSystem.FvpMSGk-.mp4",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/animations/travelling_solar_system.md","filePath":"examples/animations/travelling_solar_system.md","lastUpdated":null}'),n={name:"examples/animations/travelling_solar_system.md"},l=h("",4),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.js b/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.js new file mode 100644 index 00000000..9113997c --- /dev/null +++ b/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.js @@ -0,0 +1,21 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/market_data1.KcxeCovJ.svg",k="/previews/PR54/assets/market_data2.CBL9Na3Z.svg",n="/previews/PR54/assets/market_data3.DBn7hDN6.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/MarketData.md","filePath":"examples/aog/MarketData.md","lastUpdated":null}'),l={name:"examples/aog/MarketData.md"},p=h(`
julia
using MarketData, DataFrames
+using AlgebraOfGraphics, CairoMakie
+using Statistics

Close Price

julia
plt = data(cl)*mapping(:timestamp, :Close)*visual(Lines)
+
+with_theme(theme_ggplot2(), size = (600,400)) do
+    plt |> draw
+end

Prices

julia
labels = [:Open, :High, :Low, :Close]
+plt = data(ohlc)
+plt *= mapping(:timestamp, labels .=> "value", color =dims(1)=>renamer(labels) => "series ")
+
+with_theme(theme_light(), size = (600,400)) do
+    plt * visual(Lines) |> draw
+end

StockChart

julia
df = DataFrame(ohlc)
+pltd = data(df[200:280,:])
+plt = pltd * mapping(:timestamp, :Open => "StockChart")
+plt *= mapping(color = (:Open, :Close) => isless => "Open<Close") # fillto=:Close, because of this, the plot is wrong
+plt *= visual(BarPlot)
+
+with_theme(theme_dark(), size = (800,500)) do
+    draw(plt, scales(Color = (; palette = [:deepskyblue, :firebrick3])))
+end

',10),e=[p];function E(r,d,g,y,F,o){return a(),i("div",null,e)}const u=s(l,[["render",E]]);export{c as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.lean.js b/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.lean.js new file mode 100644 index 00000000..c9a8d3dd --- /dev/null +++ b/previews/PR54/assets/examples_aog_MarketData.md.BgNHr28j.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/market_data1.KcxeCovJ.svg",k="/previews/PR54/assets/market_data2.CBL9Na3Z.svg",n="/previews/PR54/assets/market_data3.DBn7hDN6.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/MarketData.md","filePath":"examples/aog/MarketData.md","lastUpdated":null}'),l={name:"examples/aog/MarketData.md"},p=h("",10),e=[p];function E(r,d,g,y,F,o){return a(),i("div",null,e)}const u=s(l,[["render",E]]);export{c as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.js b/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.js new file mode 100644 index 00000000..f9706e3f --- /dev/null +++ b/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/ablines1.Cf3RR05q.svg",k="/previews/PR54/assets/ablines2.RZJMpC4p.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/ablines.md","filePath":"examples/aog/ablines.md","lastUpdated":null}'),t={name:"examples/aog/ablines.md"},l=h(`
julia
using CairoMakie, AlgebraOfGraphics

Following the syntax from https://docs.makie.org/v0.18.0/examples/plotting_functions/ablines/index.html for ablines, we reproduce that plot with AoG

julia
p_1to1 =  mapping([0],[1]) * visual(ABLines) # declare data-arguments and visual layer
+# declare the dataset
+p_not1to1  = data((; intercepts = [1,2,3], slopes=[1,1.5,2]))
+# declare the arguments of the analysis
+p_not1to1 *= mapping(:intercepts, :slopes, color=:intercepts => nonnumeric)
+# define your visual layer, what kind of plot do you want?
+p_not1to1 *= visual(ABLines, color = [:red, :blue, :orange], linestyle=:dash)
+
+with_theme(theme_ggplot2(), size = (600,400)) do
+    p_1to1 + p_not1to1 |> draw
+end

julia
with_theme(theme_ggplot2(), size = (600,400)) do
+    fig = Figure()
+    ax = Axis(fig[1,1])
+    aog = draw!(ax, p_1to1 + p_not1to1)
+    scatter!(ax, 10*rand(10), 10*rand(10); color=:red, label = "scatter")
+    limits!(ax, 0, 10, 0, 10)
+    legend!(fig[1, 2], aog)
+    Legend(fig[1,2], ax, valign = 0.2)
+    fig
+end

',6),p=[l];function e(E,r,d,g,y,F){return a(),i("div",null,p)}const c=s(t,[["render",e]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.lean.js b/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.lean.js new file mode 100644 index 00000000..e976b0cc --- /dev/null +++ b/previews/PR54/assets/examples_aog_ablines.md.C4co5gbt.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/ablines1.Cf3RR05q.svg",k="/previews/PR54/assets/ablines2.RZJMpC4p.svg",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/ablines.md","filePath":"examples/aog/ablines.md","lastUpdated":null}'),t={name:"examples/aog/ablines.md"},l=h("",6),p=[l];function e(E,r,d,g,y,F){return a(),i("div",null,p)}const c=s(t,[["render",e]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.js b/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.js new file mode 100644 index 00000000..736506f5 --- /dev/null +++ b/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.js @@ -0,0 +1,45 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/datasaurus1.DVFfxS4I.svg",n="/previews/PR54/assets/datasaurus2.B_7MiuK7.svg",t="/previews/PR54/assets/datasaurus3.DP5ZkCrb.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/datasaurus.md","filePath":"examples/aog/datasaurus.md","lastUpdated":null}'),l={name:"examples/aog/datasaurus.md"},p=h(`
julia
using CSV, Downloads, DataFrames
+using AlgebraOfGraphics, CairoMakie
+using Statistics
+
+#https://github.com/jumpingrivers/datasauRus
+#https://www.autodesk.com/research/publications/same-stats-different-graphs
+link = "https://raw.githubusercontent.com/jumpingrivers/datasauRus/main/inst/extdata/DatasaurusDozen-Long.tsv"
+file = Downloads.download(link)
+dsaurus = CSV.read(file, DataFrame, delim = '\\t')
+
+plt = data(dsaurus) * mapping(:x => "", :y => "", layout=:dataset)
+with_theme(theme_light(), size = (1600,1200), fontsize = 24) do
+    draw(plt) ## palettes = (layout=wrap(cols=3),)
+end

ggplot2 theme

julia
with_theme(theme_ggplot2(), size = (1600,1200), fontsize = 24) do
+    fig = Figure()
+    g = GridLayout(fig[1,1])
+    wfacet = draw!(g, plt)
+    bxs = [Box(g[i,j, Top()], color = (:grey70, 0.95),
+        strokevisible = false) for i in 1:4 for j in 1:4]
+    [translate!(bxs[i].blockscene, 0,0,-1) for i in 1:15]
+    delete!.(bxs[14:end])
+    fig
+end

Adding some stats

julia
gdf = groupby(dsaurus, :dataset);
+stats = sort(combine(gdf, [:x, :y] .=> mean, [:x, :y] .=> std, [:x, :y] => cor));
+
+plt *= visual(strokewidth=0.95, strokecolor=:black, color =(:white,0.5));

dark theme

julia
with_theme(theme_dark(), size = (1600,1200), fontsize = 24) do
+
+    fig = Figure()
+    g = GridLayout(fig[1,1])
+    wfacet = draw!(g, plt) ## palettes = (layout=wrap(cols=3),)
+    # this should be also something automatic from AoG
+    bxs = [Box(g[i,j, Top()], color = (:grey30, 0.25),
+        strokevisible = false) for i in 1:4 for j in 1:4]
+    [translate!(bxs[i].blockscene, 0,0,-1) for i in 1:15]
+    delete!.(bxs[14:end])
+    # plot some stats
+    axstats = Axis(g[4, 2])
+    [text!(axstats, t, position = (0.05, 0.9 - (i-1)*0.15), align = (:left, :top))
+        for (i,t) in enumerate(names(stats)[2:end])]
+    [text!(axstats, ":  "*string(t), position = (0.3, 0.9 - (i-1)*0.15), align = (:left, :top))
+            for (i,t) in enumerate(values(stats[1,2:end]))]
+    limits!(0,1,0,1)
+    hidedecorations!(axstats)
+    fig
+end

',9),e=[p];function E(r,d,g,y,F,C){return a(),i("div",null,e)}const B=s(l,[["render",E]]);export{c as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.lean.js b/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.lean.js new file mode 100644 index 00000000..7d8c1f2b --- /dev/null +++ b/previews/PR54/assets/examples_aog_datasaurus.md.m4p58h1b.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/datasaurus1.DVFfxS4I.svg",n="/previews/PR54/assets/datasaurus2.B_7MiuK7.svg",t="/previews/PR54/assets/datasaurus3.DP5ZkCrb.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/datasaurus.md","filePath":"examples/aog/datasaurus.md","lastUpdated":null}'),l={name:"examples/aog/datasaurus.md"},p=h("",9),e=[p];function E(r,d,g,y,F,C){return a(),i("div",null,e)}const B=s(l,[["render",E]]);export{c as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.js b/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.js new file mode 100644 index 00000000..4f758fb7 --- /dev/null +++ b/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.js @@ -0,0 +1,31 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/densityridges1.DHQKmU8D.png",k="/previews/PR54/assets/densityridges2.BX0YM1lw.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/density_ridges.md","filePath":"examples/aog/density_ridges.md","lastUpdated":null}'),p={name:"examples/aog/density_ridges.md"},l=n(`
julia
using GLMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+import AlgebraOfGraphics as AoG
+
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+
+p_len  = data(penguins)
+p_len *= AoG.density()
+p_len *= mapping(:flipper_length_mm => (t -> t / 10), color=:species)
+
+with_theme(theme_light(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    p_len |> draw
+end

julia
p_len  = data(penguins)
+# p_len = AoG.density()
+p_len *= mapping(:flipper_length_mm, color=:species)
+p_len *= AoG.density()
+p_len *= visual(direction=:y, offset = 1.0, # direction is not working!
+    alpha = 0.2, strokewidth = 1.5, strokecolor = :grey20)
+draw(p_len)

',4),t=[l];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const o=s(p,[["render",e]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.lean.js b/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.lean.js new file mode 100644 index 00000000..ca4040e3 --- /dev/null +++ b/previews/PR54/assets/examples_aog_density_ridges.md.CIKDwVoo.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/densityridges1.DHQKmU8D.png",k="/previews/PR54/assets/densityridges2.BX0YM1lw.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/density_ridges.md","filePath":"examples/aog/density_ridges.md","lastUpdated":null}'),p={name:"examples/aog/density_ridges.md"},l=n("",4),t=[l];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const o=s(p,[["render",e]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.js b/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.js new file mode 100644 index 00000000..109cf6f4 --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.js @@ -0,0 +1,32 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguins.DCKScr4z.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguins.md","filePath":"examples/aog/penguins.md","lastUpdated":null}'),k={name:"examples/aog/penguins.md"},l=h(`
julia
using CairoMakie, PalmerPenguins, DataFrames
+using GLM: lm, @formula, predict
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+function plotPenguins()
+    penguins = getPenguins()
+    palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+        marker=[:circle, :utriangle, :rect])
+    cycle = Cycle([:color, :marker], covary=true)
+    with_theme(theme_light(), palette=palette, Scatter=(cycle=cycle,)) do
+        fig = Figure(size=(600, 400))
+        ax = Axis(fig[1, 1], title="Flipper and bill length",
+            xlabel="Flipper length (mm)", ylabel="Bill length (mm)")
+        for penguin in ["Adelie", "Chinstrap", "Gentoo"]
+            specie = filter(:species => ==(penguin), penguins)
+            x = specie[!, :flipper_length_mm]
+            y = specie[!, :bill_length_mm]
+            linearModel = lm(@formula(Y ~ X), DataFrame(X=x, Y=y))
+= predict(linearModel)
+            scatter!(ax, x, y; markersize=12, label=penguin)
+            lines!(ax, x, ŷ; label=penguin, linewidth=4)
+        end
+        axislegend("Penguin species", position=:rb, backgroundcolor=(:grey90, 0.15),
+            titlesize=12, labelsize=12, merge=true)
+        return fig
+    end
+end
+fig = plotPenguins()

',2),p=[l];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.lean.js b/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.lean.js new file mode 100644 index 00000000..974c5e09 --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguins.md.DgcZRG2f.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguins.DCKScr4z.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguins.md","filePath":"examples/aog/penguins.md","lastUpdated":null}'),k={name:"examples/aog/penguins.md"},l=h("",2),p=[l];function t(e,E,r,g,d,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.js b/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.js new file mode 100644 index 00000000..fbc23924 --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.js @@ -0,0 +1,45 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguins3d1.CYlOtVjy.png",k="/previews/PR54/assets/penguins3d2.Bmgeppdu.png",p="/previews/PR54/assets/penguins3d3.CPiNtLP2.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguins3d.md","filePath":"examples/aog/penguins3d.md","lastUpdated":null}'),l={name:"examples/aog/penguins3d.md"},t=h(`
julia
using PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+import AlgebraOfGraphics as AoG
+using GLMakie
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+p3d  = data(penguins)
+p3d *= AoG.density()
+p3d *= mapping(:bill_length_mm, :bill_depth_mm)
+p3d *= visual(Wireframe, linewidth=0.05, transparency=true)
+p3d *= mapping(color = :species);

Let's define 3 new default colors

julia
colors = tuple.([:grey10, :orange, :dodgerblue], 0.5)
+palstyle = (; color=colors, patchcolor = colors);

Penguins 3d Wireframe density

julia
with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    draw(p3d; axis = (type = Axis3, perspectiveness = 0.5, aspect=(1, 1, 1)))
+end

Penguins histogram

julia
phist = data(penguins)
+phist *= AoG.histogram(; bins = 28)
+phist *= mapping(:bill_length_mm => "bill length mm", color =:species, stack = :species);
+
+with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    phist |> draw
+end

AoG and plain Makie

Currently, density plots with direction=:y is not supported by AoG, but you can just do it with plain Makie and combine everything into a nice layout.

julia
with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    pnames = ["Chinstrap", "Adelie","Gentoo"]
+    bill_depths = [filter(:species => x -> x == n, penguins)[!,:bill_depth_mm] for n in pnames]
+
+    fig = Figure(; size = (700, 700))
+    draw!(fig[2,1], p3d; axis = (type = Axis3, perspectiveness = 0.5, aspect=(1, 1, 1)))
+    draw!(fig[1,1], phist)
+    # plain Makie
+    axd = Axis(fig[2,2], ylabel = "bill depth mm")
+    [density!(axd, b_depth, direction = :y, strokewidth = 1, label = pnames[i])
+        for (i,b_depth) in enumerate(bill_depths)]
+    Legend(fig[1,2], axd, tellheight = true)
+    # some extra tweaks
+    colsize!(fig.layout, 1, Relative(3/4))
+    rowsize!(fig.layout, 1, Relative(1/4))
+    rowgap!(fig.layout,0)
+    colgap!(fig.layout,0)
+    fig
+end

',13),e=[t];function E(d,r,g,y,F,C){return a(),i("div",null,e)}const u=s(l,[["render",E]]);export{c as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.lean.js b/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.lean.js new file mode 100644 index 00000000..d72a17bd --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguins3d.md.CgjnBrNM.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguins3d1.CYlOtVjy.png",k="/previews/PR54/assets/penguins3d2.Bmgeppdu.png",p="/previews/PR54/assets/penguins3d3.CPiNtLP2.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguins3d.md","filePath":"examples/aog/penguins3d.md","lastUpdated":null}'),l={name:"examples/aog/penguins3d.md"},t=h("",13),e=[t];function E(d,r,g,y,F,C){return a(),i("div",null,e)}const u=s(l,[["render",E]]);export{c as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.js b/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.js new file mode 100644 index 00000000..aeffb86b --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/penguinsAoG.D8fnwSWe.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsAoG.md","filePath":"examples/aog/penguinsAoG.md","lastUpdated":null}'),k={name:"examples/aog/penguinsAoG.md"},l=n(`
julia
using GLMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+# declare the dataset
+p_len  = data(penguins)
+# declare the arguments of the analysis
+p_len *= mapping(:flipper_length_mm => (t -> t / 10) => "flipper length (cm)",
+    :bill_length_mm => (t -> t / 10) => "bill length (cm)")
+# declare the grouping and the respective visual attribute
+p_len *= mapping(color=:species)
+
+with_theme(theme_ggplot2(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    draw(p_len * mapping(marker=:species) + p_len * linear();
+        axis = (; title="Flipper and bill length"))
+end

',2),t=[l];function p(e,E,r,g,d,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.lean.js b/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.lean.js new file mode 100644 index 00000000..d3a5d0ba --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsAoG.md.BSK9bNYj.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/penguinsAoG.D8fnwSWe.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsAoG.md","filePath":"examples/aog/penguinsAoG.md","lastUpdated":null}'),k={name:"examples/aog/penguinsAoG.md"},l=n("",2),t=[l];function p(e,E,r,g,d,y){return a(),i("div",null,t)}const C=s(k,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.js b/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.js new file mode 100644 index 00000000..6d1eda42 --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.js @@ -0,0 +1,47 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/penguinsBoxes.CXY6lJBy.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsBoxes.md","filePath":"examples/aog/penguinsBoxes.md","lastUpdated":null}'),n={name:"examples/aog/penguinsBoxes.md"},l=h(`
julia
using CairoMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+
+p_len  = data(penguins)
+p_len *= mapping(:flipper_length_mm => (t -> t / 10),
+    :bill_length_mm => (t -> t / 10))
+p_len *= mapping(color=:species, marker=:species)
+
+bpl = data(penguins)
+bpl *= mapping(:species, :bill_length_mm => (t -> t / 10), color = :species)
+bpl *= visual(Makie.BoxPlot)
+
+bplt = data(penguins)
+bplt *= mapping(:species, :flipper_length_mm => (t -> t / 10), color = :species)
+bplt *= visual(Makie.BoxPlot, orientation = :horizontal)
+
+with_theme(theme_light(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    fig = Figure()
+    axs = [Axis(fig[2,1], xlabel = "flipper length (cm)", ylabel = "bill length (cm)"),
+        Axis(fig[1,1]), Axis(fig[2,2])]
+    dots = draw!(axs[1], p_len)
+    draw!(axs[2], bplt)
+    draw!(axs[3], bpl)
+    # getting the right layout aspect
+    colsize!(fig.layout, 1, Auto(4.0))
+    rowsize!(fig.layout, 1, Auto(1/3))
+    colgap!(fig.layout,3)
+    rowgap!(fig.layout, 3)
+    linkxaxes!(axs[1], axs[2])
+    linkyaxes!(axs[1], axs[3])
+    hidedecorations!.(axs[2:3], grid=false)
+    legend!(fig[1,2], dots)
+    fig
+end

',2),p=[l];function t(E,e,g,r,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.lean.js b/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.lean.js new file mode 100644 index 00000000..26822567 --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsBoxes.md.Biyub_SK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/penguinsBoxes.CXY6lJBy.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsBoxes.md","filePath":"examples/aog/penguinsBoxes.md","lastUpdated":null}'),n={name:"examples/aog/penguinsBoxes.md"},l=h("",2),p=[l];function t(E,e,g,r,d,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.js b/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.js new file mode 100644 index 00000000..6ccc746e --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.js @@ -0,0 +1,49 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguinsViolins.CkS2d0dz.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsViolins.md","filePath":"examples/aog/penguinsViolins.md","lastUpdated":null}'),k={name:"examples/aog/penguinsViolins.md"},l=h(`
julia
using CairoMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+let
+    penguins = getPenguins()
+    # declare new plot attributes
+    palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+        marker=[:circle, :utriangle, :rect])
+    cycle = Cycle([:color, :marker], covary=true)
+
+    p_len  = data(penguins)
+    p_len *= mapping(:flipper_length_mm => (t -> t / 10),
+        :bill_length_mm => (t -> t / 10))
+    p_len *= mapping(color=:species, marker=:species)
+
+    bpl = data(penguins)
+    bpl *= mapping(:species, :bill_length_mm => (t -> t / 10), color = :species)
+    bpl *= visual(Violin)
+
+    bplt = data(penguins)
+    bplt *= mapping(:species, :flipper_length_mm => (t -> t / 10), color = :species)
+    bplt *= visual(Violin, orientation = :horizontal)
+
+    fig = with_theme(theme_light(), size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+        fig = Figure()
+        axs = [Axis(fig[2,1], xlabel = "flipper length (cm)", ylabel = "bill length (cm)"),
+            Axis(fig[1,1]), Axis(fig[2,2])]
+        dots = draw!(axs[1], p_len)
+        draw!(axs[2], bplt)
+        draw!(axs[3], bpl)
+        # getting the right layout aspect
+        colsize!(fig.layout, 1, Auto(4.0))
+        rowsize!(fig.layout, 1, Auto(1/3))
+        colgap!(fig.layout,3)
+        rowgap!(fig.layout, 3)
+        linkxaxes!(axs[1], axs[2])
+        linkyaxes!(axs[1], axs[3])
+        hidedecorations!.(axs[2:3], grid=false)
+        legend!(fig[1,2], dots)
+        fig
+    end
+
+end
CairoMakie.Screen{SVG}

',3),p=[l];function t(E,e,g,r,d,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.lean.js b/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.lean.js new file mode 100644 index 00000000..76d7a45a --- /dev/null +++ b/previews/PR54/assets/examples_aog_penguinsViolins.md.BjeH_i37.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/penguinsViolins.CkS2d0dz.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/penguinsViolins.md","filePath":"examples/aog/penguinsViolins.md","lastUpdated":null}'),k={name:"examples/aog/penguinsViolins.md"},l=h("",3),p=[l];function t(E,e,g,r,d,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.js b/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.js new file mode 100644 index 00000000..de2a8ba5 --- /dev/null +++ b/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatterlinesAoG.DYnVUmza.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/scatterlinesAoG.md","filePath":"examples/aog/scatterlinesAoG.md","lastUpdated":null}'),l={name:"examples/aog/scatterlinesAoG.md"},h=n(`
julia
using CairoMakie, AlgebraOfGraphics

Here I try to follow as much as possible the philosophy of AoG. from here

julia
# create some data
+x = range(-π, π, length=50)
+y = sin.(x)
+df = (; x, y)
+# declare the dataset
+xy  = data(df)
+# declare the arguments of the analysis
+xy *= mapping(:x, :y)
+# define your visual layer, what kind of plot do you want?
+xy *= visual(ScatterLines)
+# draw your figure
+with_theme(theme_ggplot2(), size = (600,400)) do
+    xy |> draw
+end

',4),e=[h];function p(k,r,d,E,g,y){return a(),i("div",null,e)}const F=s(l,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.lean.js b/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.lean.js new file mode 100644 index 00000000..e8e5f4c4 --- /dev/null +++ b/previews/PR54/assets/examples_aog_scatterlinesAoG.md.BQVEkQN_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const t="/previews/PR54/assets/scatterlinesAoG.DYnVUmza.svg",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/aog/scatterlinesAoG.md","filePath":"examples/aog/scatterlinesAoG.md","lastUpdated":null}'),l={name:"examples/aog/scatterlinesAoG.md"},h=n("",4),e=[h];function p(k,r,d,E,g,y){return a(),i("div",null,e)}const F=s(l,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.js b/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.js new file mode 100644 index 00000000..a0f0ef1f --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.js @@ -0,0 +1,30 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/colorschemes.CwILiGQj.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/colorschemes.md","filePath":"examples/dashboards/colorschemes.md","lastUpdated":null}'),n={name:"examples/dashboards/colorschemes.md"},l=h('

colorschemes options: Slider + volume

julia
using GLMakie, ColorSchemes, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function plotVolColormaps(; rseed = 123)
+    Random.seed!(rseed)
+    # all colormaps from colorschemes
+    cs = collect(keys(colorschemes))
+    cmapIdx = Observable(1)
+    cmap = @lift(cs[$cmapIdx])
+    # the actual figure
+    x = y = z = -1.7:0.05:1.7
+    xs = ys = zs = -1.7..1.7
+    r(i, j, k) = sqrt(i^2 + j^2 + k^2)
+    A = [rand() / r(i, j, k)^2 for i in x, j in y, k in z]
+
+    fig = Figure(size = (1200, 800))
+    ax = Axis3(fig[1, 1];
+        aspect = (1, 1, 1),
+        perspectiveness = 0.5,
+        elevation = π / 9
+        )
+    volume!(ax, xs, ys, zs, A; colormap = cmap, transparency = true, colorrange = (0,5))
+    fig[0, 1] = GLMakie.Label(fig, @lift("Colormap: $(cs[$cmapIdx]), id : $($cmapIdx)"), fontsize = 20,
+        tellheight = true, tellwidth = false)
+    sl = Slider(fig[1, 2], range = 1:length(cs), startvalue = 1021, horizontal = false)
+    connect!(cmapIdx, sl.value)
+    fig
+end
+fig = with_theme(plotVolColormaps, theme_dark())
`,3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.lean.js b/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.lean.js new file mode 100644 index 00000000..92cb2130 --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_colorschemes.md.BLSq65Dj.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/colorschemes.CwILiGQj.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/colorschemes.md","filePath":"examples/dashboards/colorschemes.md","lastUpdated":null}'),n={name:"examples/dashboards/colorschemes.md"},l=h("",3),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.js b/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.js new file mode 100644 index 00000000..aba94139 --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.js @@ -0,0 +1,57 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/matcap.CJApBI04.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/matcap.md","filePath":"examples/dashboards/matcap.md","lastUpdated":null}'),n={name:"examples/dashboards/matcap.md"},l=h('

Mesh with matcap: Slider

julia
using GLMakie
+using FileIO, Downloads, JSON
+using Makie.GeometryBasics: Pyramid
+using GeometryBasics
+using Colors, LinearAlgebra
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+pyr = Pyramid(Point3f(0), 1.0f0, 1.0f0)
+rectmesh = Rect3(Point3f(-0.5), Vec3f(1))
+sphere = Sphere(Point3f(-0.5), 1)
+Cone(; quality=10) = merge([
+    Makie._circle(Point3f(0), 0.5f0, Vec3f(0, 0, -1), quality),
+    Makie._mantle(Point3f(0), Point3f(0, 0, 1), 0.5f0, 0.0f0, quality)])
+cone = Cone()
+
+brain = load(Makie.assetpath("brain.stl"))
+matball = load(Makie.assetpath("matball_base.obj"))
+matball_inner = load(Makie.assetpath("matball_inner.obj"))
+matball_outer = load(Makie.assetpath("matball_outer.obj"))
+# download more ids from here:
+# https://raw.githubusercontent.com/MakieOrg/BeautifulMakie/main/data/
+#ids = JSON.parsefile("matcapIds.json")
+
+ids = ["F79686_FCCBD4_E76644_E76B56",
+    "F9E6C7_FCF7DF_EDD3AA_F1D4B4",
+    "FBB43F_FBE993_FB552E_FCDD65",
+    "FBB82D_FBEDBF_FBDE7D_FB7E05"]
+function plotmat()
+    idx = Observable(1)
+    idpng = @lift(ids[$idx])
+    matcap = @lift(load(Downloads.download("https://raw.githubusercontent.com/nidorx/matcaps/master/1024/$($idpng).png")))
+
+    shading = FastShading
+    fig = Figure(size=(900, 600))
+    axs = [LScene(fig[i, j]; show_axis=false)
+            for j in 1:3, i in 1:2]
+    mesh!(axs[5], sphere; matcap, shading)
+    mesh!(axs[3], rectmesh; matcap, shading, transparency=true)
+    mesh!(axs[4], pyr; matcap, shading)
+    mesh!(axs[2], matball; matcap, shading)
+    mesh!(axs[2], matball_inner; matcap, shading)
+    mesh!(axs[2], matball_outer; matcap, shading)
+    mesh!(axs[6], cone; matcap, shading)
+    mesh!(axs[1], brain; matcap, shading)
+    GLMakie.rotate!(axs[2].scene, 2.35)
+    center!(axs[2].scene)
+    zoom!(axs[2].scene, cameracontrols(axs[2].scene), 0.75)
+    zoom!(axs[3].scene, cameracontrols(axs[3].scene), 1.2)
+    zoom!(axs[4].scene, cameracontrols(axs[4].scene), 1.2)
+    sl = Slider(fig[1:2, 4], range=1:length(ids), startvalue=2, horizontal=false)
+    connect!(idx, sl.value)
+    fig[0, 1:3] = GLMakie.Label(fig, @lift("idnum [$(1*$idx)] png material : $(ids[$idx])"), fontsize=20,
+        tellheight=true, tellwidth=false)
+    fig
+end
+fig = with_theme(plotmat, theme_dark())
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.lean.js b/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.lean.js new file mode 100644 index 00000000..41261e91 --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_matcap.md.8ZN8FOnL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/matcap.CJApBI04.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/matcap.md","filePath":"examples/dashboards/matcap.md","lastUpdated":null}'),n={name:"examples/dashboards/matcap.md"},l=h("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.js b/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.js new file mode 100644 index 00000000..cd538ae9 --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.js @@ -0,0 +1,59 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/tesseral_spherical_harmonics.Jf30puEc.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/tesseral_spherical_harmonics.md","filePath":"examples/dashboards/tesseral_spherical_harmonics.md","lastUpdated":null}'),n={name:"examples/dashboards/tesseral_spherical_harmonics.md"},l=h('

Tesseral Spherical Harmonics: Slider + Menu

julia
using GLMakie, ColorSchemes
+using AssociatedLegendrePolynomials
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function Y(θ, ϕ, l, m)
+    if m < 0
+        return (-1)^m *2 * Nlm(l, abs(m)) * Plm(l, abs(m), cos(θ)) * sin(abs(m) * ϕ)
+    elseif m == 0
+        return sqrt((2 * l + 1) /) * Plm(l, m, cos(θ))
+    else
+        return (-1)^m *2 * Nlm(l, m) * Plm(l, m, cos(θ)) * cos(m * ϕ)
+    end
+end
+# Grids of polar and azimuthal angles
+θ = LinRange(0, π, 200)
+ϕ = LinRange(0, , 200)
+x = [sin(θ) * sin(ϕ) for θ in θ, ϕ in ϕ]
+y = [sin(θ) * cos(ϕ) for θ in θ, ϕ in ϕ]
+z = [cos(θ) for θ in θ, ϕ in ϕ]
+l = Observable(4)
+m = Observable(1)
+cmap = "Hiroshige"
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200, 800))
+    menu = Menu(fig, options = ["Hiroshige", "Spectral_11", "diverging_bkr_55_10_c35_n256",
+        "diverging_cwm_80_100_c22_n256", "diverging_gkr_60_10_c40_n256",
+        "diverging_linear_bjr_30_55_c53_n256",
+        "diverging_protanopic_deuteranopic_bwy_60_95_c32_n256"])
+    Ygrid = lift(l, m) do l, m
+        [Y(θ, ϕ, l, m) for θ in θ, ϕ in ϕ]
+    end
+    Ylm = @lift(abs.($Ygrid))
+    Ygrid2 = @lift(vec($Ygrid))
+
+    ax1 = Axis3(fig[1, 1], aspect = :data, perspectiveness = 0.5, elevation = π / 8, azimuth = 2.225π)
+    ax2 = Axis3(fig[1, 2], aspect = :data, perspectiveness = 0.5, elevation = π / 8, azimuth = 2.225π)
+    pltobj1 = surface!(ax1, x, y, z; color = Ygrid, colormap = cmap, shading = NoShading)
+    pltobj2 = surface!(ax2, @lift($Ylm .* x), @lift($Ylm .* y), @lift($Ylm .* z), color = Ygrid,
+        colormap = cmap, shading = NoShading)
+    limits!(ax2, -0.5, 0.5, -0.5, 0.5, -1, 1)
+    # cbar = Colorbar(fig[1, 3], pltobj1, label = "Yₗₘ(θ,ϕ)", width = 11, tickalign = 1, tickwidth = 1)
+    fig[0, 1:2] = GLMakie.Label(fig, @lift("Tesseral Spherical Harmonics l = $($l), m = $($m)"), fontsize = 20)
+    fig[1, 0] = vgrid!(
+        GLMakie.Label(fig, "Colormap", width = nothing),
+        menu; tellheight = false, width = 150)
+    on(menu.selection) do s
+        pltobj1.colormap = s
+        pltobj2.colormap = s
+    end
+    sl = Slider(fig[end+1, 1:2], range = 1:30, startvalue = 6)
+    sl2 = Slider(fig[end+1, 1:2], range = @lift(-$(sl.value):1:$(sl.value)))
+    connect!(l, sl.value)
+    connect!(m, sl2.value)
+    # tight_ticklabel_spacing!(cbar)
+    # display(fig)
+    fig
+end
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.lean.js b/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.lean.js new file mode 100644 index 00000000..c696057f --- /dev/null +++ b/previews/PR54/assets/examples_dashboards_tesseral_spherical_harmonics.md.DRV_plco.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/tesseral_spherical_harmonics.Jf30puEc.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/dashboards/tesseral_spherical_harmonics.md","filePath":"examples/dashboards/tesseral_spherical_harmonics.md","lastUpdated":null}'),n={name:"examples/dashboards/tesseral_spherical_harmonics.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.js b/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.js new file mode 100644 index 00000000..9bd5fe78 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.js @@ -0,0 +1,120 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/astronauts.DuyhzBuN.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/astronauts.md","filePath":"examples/datavis/astronauts.md","lastUpdated":null}'),n={name:"examples/datavis/astronauts.md"},l=h('

Astronauts

julia
using CairoMakie, HTTP, CSV, DataFrames, DataFramesMeta, Suppressor
+using Images, ColorSchemes, Colors, Statistics
+using Downloads
+using Lazy: @>
+CairoMakie.activate!(type = "png")
+
+function plotastro()
+    data_url = "https://bit.ly/3kmlGn2"
+    @suppress begin
+        global astronauts
+        astronauts = CSV.File(HTTP.download(data_url)) |> DataFrame
+    end
+    offhr, rPts, α = 3.5, 45, 35
+    astro = @> begin
+        astronauts
+        @orderby(:year_of_mission)
+        @subset(:total_eva_hrs .> 0.0)
+        @transform(:ntotEVA = :total_eva_hrs / maximum(:total_eva_hrs))
+        @transform( = LinRange(0,  - / length(:name), length(:name)))
+        @transform(:align = tuple.(ifelse.(π / 2 .< .< / 2, ^(:right), ^(:left)), ^(:center)))
+        @transform(:texttheta = ifelse.(π / 2 .< .< / 2,  .+ π, ))
+        @transform(:evaM = log10.((60 * :eva_hrs_mission / median(60 * :eva_hrs_mission)) .+ offhr))
+        @transform(:xM = rPts * :evaM .* cos.(), :yM = rPts * :evaM .* sin.())
+        @transform(:xMnm = rPts * (:evaM .- :total_number_of_missions .* :evaM ./ α) .* cos.())
+        @transform(:yMnm = rPts * (:evaM .- :total_number_of_missions .* :evaM ./ α) .* sin.())
+    end
+    valYear = @> begin
+        astro
+        @subset([true; :year_of_mission[2:end] .!= :year_of_mission[1:end-1]])
+    end
+    vehicles = @> begin
+        astro
+        @subset([true; :ascend_shuttle[2:end] .!= :ascend_shuttle[1:end-1]])
+    end
+    tierra = "https://eoimages.gsfc.nasa.gov/images/imagerecords/8000/8108/ipcc_bluemarble_west_front.jpg"
+    @suppress begin
+        global imgEarth
+        tierra = Downloads.download(tierra)
+        imgEarth = load(tierra)
+        imgEarth = imgEarth[:,120:end-120]
+    end
+
+    function getPoints(xi, yi, xf, yf)
+        xyos = []
+        for i in 1:length(xo)
+            push!(xyos, [xi[i], yi[i]])
+            push!(xyos, [xf[i], yf[i]])
+        end
+        xyos
+    end
+    x, y = astro.xM, astro.yM # end points
+    xs, ys = astro.xMnm, astro.yMnm # short lines starts
+    xo = yo = zeros(length(x)) # origin
+    xnb, ynb = 90 * cos.(astro.θ), 90 * sin.(astro.θ)
+    xne, yne = 100 * cos.(astro.θ), 100 * sin.(astro.θ)
+    ps, colorp = 0.5 .+ 3astro.ntotEVA, astro.total_eva_hrs # point size, color palette
+    gridLines = LinRange(log10(offhr), maximum(astro.evaM), 6)
+    horas = (10 .^ gridLines .- offhr) * median(60 * astro.eva_hrs_mission) / 60
+    xg = [rPts * gl .* cos.(astro.θ) for gl in gridLines]
+    yg = [rPts * gl .* sin.(astro.θ) for gl in gridLines]
+    # in order to use linesegments (faster to plot)
+    xyos = getPoints(xo, yo, xs, ys)
+    xys = getPoints(xs, ys, x, y)
+    xybe = getPoints(xnb, ynb, xne, yne)
+    cpDo = repeat(colorp, inner = 2)
+    psDo = repeat(ps, inner = 2)
+
+    with_theme(theme_black()) do
+        fig = Figure(size = (1200, 1200))
+        cmap = :rainbow2
+        ax = CairoMakie.Axis(fig[1, 1],
+            title = "ASTRONAUTS' EXTRAVEHICULAR ACTIVITIES",
+            autolimitaspect = 1)
+        hidespines!(ax)
+        hidedecorations!(ax)
+        image!(-20 .. 20, -20 .. 20, rotr90(imgEarth))
+        text!(astro.name, position = @.(Point2f(cos(astro.θ), sin(astro.θ)) * 85),
+            rotation = astro.texttheta, fontsize = 6, align = astro.align)
+        text!(string.(valYear.year_of_mission),
+            position = @.(Point2f(cos(valYear.θ), sin(valYear.θ)) * 65),
+            rotation = valYear.texttheta, fontsize = 10, align = valYear.align)
+        text!(vehicles.ascend_shuttle,
+            position = @.(Point2f(cos(vehicles.θ), sin(vehicles.θ)) * 73),
+            rotation = vehicles.texttheta, fontsize = 6, align = vehicles.align)
+
+        pltobj = scatter!(ax, astro[:, :xM], astro[:, :yM], color = colorp,
+            colormap = cmap, markersize = 3 * ps, strokewidth = 0)
+
+        linesegments!(Point2f.(xyos), color = cpDo, linewidth = psDo / 2, colormap = (cmap, 0.15))
+        linesegments!(Point2f.(xys), color = cpDo, linewidth = psDo / 2, colormap = cmap)
+        linesegments!(Point2f.(xybe), color = cpDo, linewidth = psDo / 3, colormap = (cmap, 0.5))
+
+        Colorbar(fig[1, 1], pltobj,
+            label = "Total duration of all extravehicular activities in hours",
+            tellheight = false, tellwidth = false, ticklabelsize = 12, flipaxis = true,
+            vertical = false, ticksize = 15, tickalign = 1, width = Relative(1.5 / 4),
+            halign = :right, valign = :bottom, labelsize = 12)
+
+        for (indx, gl) in enumerate(gridLines)
+            xg, yg = rPts * gl .* cos.(astro.θ), rPts * gl .* sin.(astro.θ)
+            hrs = Int64(round(horas[indx], digits = 0))
+            lines!(xg, yg, linewidth = 0.5, linestyle = :dash, color = :white)
+            text!(string.(hrs), position = (xg[1] + 0.5, y[1] + 0.5),
+                color = "#FFDD33", fontsize = 14)
+        end
+        lines!([rPts * gridLines[1], rPts * gridLines[end]], [0, 0], linestyle = :dash,
+            linewidth = 2, color = "#FFDD33")
+        text!("evaM (hrs)", position = Point2f(47, -3.5), color = "#FFDD33", fontsize = 16)
+        text!("evaM ≡ Duration of extravehicular \\n activities during the mission in hours",
+            position = Point2f(rPts * gridLines[end-2], 90), color = "#FFDD33", fontsize = 16)
+        text!("using Makie", position = Point2f(-99, -94), fontsize = 18, color = :white)
+        text!("Visualization by Lazaro Alonso and Julius Krumbiegel ",
+            position = Point2f(-99, -97), fontsize = 12, color = "#61AFEF")
+        text!("Data - Astronaut Database - Mariya Stavnichuk and Tatsuya Corlett",
+            position = Point2f(-99, -99), fontsize = 10)
+        limits!(ax, -100, 100, -100, 100)
+        fig
+    end
+end
+fig = plotastro()
`,3),t=[l];function p(E,e,r,g,d,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.lean.js b/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.lean.js new file mode 100644 index 00000000..60d1f330 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_astronauts.md.BqZB_ViY.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/astronauts.DuyhzBuN.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/astronauts.md","filePath":"examples/datavis/astronauts.md","lastUpdated":null}'),n={name:"examples/datavis/astronauts.md"},l=h("",3),t=[l];function p(E,e,r,g,d,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.js b/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.js new file mode 100644 index 00000000..db7f28f3 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.js @@ -0,0 +1,30 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/candlestick.BEcnkkX3.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/candlestick.md","filePath":"examples/datavis/candlestick.md","lastUpdated":null}'),n={name:"examples/datavis/candlestick.md"},l=h('

candlestick

julia
using CairoMakie, Random, TimeSeries, MarketData, Dates
+
+tempo = string.(timestamp(ohlc))
+lentime = length(tempo)
+slice_dates = range(1,lentime, step = lentime÷20)
+
+colors = values(ohlc.Close) .> values(ohlc.Open)
+lowV = values(ohlc.Low)
+highV = values(ohlc.High)
+linesegs = []
+for i in 1:lentime
+    push!(linesegs, Point2f(i, lowV[i]))
+    push!(linesegs, Point2f(i, highV[i]))
+end
+linesegs = Point2f.(linesegs)
+cmap = ["#f64325", "#78f518"]
+with_theme(theme_dark()) do
+    fig = Figure(; size = (1200, 700), font = "sans", fontsize = 20)
+    ax = Axis(fig; ygridcolor = "#65866b",
+        xgridcolor = "#65866b", xgridstyle=:dash, ygridstyle=:dash)
+    barplot!(ax, 1:lentime, values(ohlc.Open), fillto = values(ohlc.Close),
+        color = colors,strokewidth = 0.5, strokecolor = colors, colormap = cmap)
+    linesegments!(ax, linesegs, color = colors, colormap = cmap)
+    xlims!(ax, 200, 300)
+    ylims!(ax, 13,24)
+    ax.xticks = (slice_dates, tempo[slice_dates])
+    ax.xticklabelrotation = π/4
+    fig[1,1] = ax
+    fig
+end
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.lean.js b/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.lean.js new file mode 100644 index 00000000..b153cdf3 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_candlestick.md.CjaGAGaQ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/candlestick.BEcnkkX3.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/candlestick.md","filePath":"examples/datavis/candlestick.md","lastUpdated":null}'),n={name:"examples/datavis/candlestick.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.js b/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.js new file mode 100644 index 00000000..3fbc034b --- /dev/null +++ b/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.js @@ -0,0 +1,69 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/earthquakes.q7R5Nq1-.mp4",n="/previews/PR54/assets/earthquakes.C5Ro3n32.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/earthquakes.md","filePath":"examples/datavis/earthquakes.md","lastUpdated":null}'),l={name:"examples/datavis/earthquakes.md"},t=h('

Earthquakes

julia
using CSV, DataFrames
+using GLMakie, Colors, ColorSchemes
+using FileIO, Downloads
+GLMakie.activate!()
+# Original reference: https://glowy-earthquakes.glitch.me
+
+urlimg = "https://upload.wikimedia.org/wikipedia/commons/9/96/NASA_bathymetric_world_map.jpg"
+earth_img = load(Downloads.download(urlimg))
+function sphere(; r = 1.0, n = 32)
+    θ = LinRange(0, π, n)
+    φ = LinRange(-π, π, 2 * n)
+    x = [r * cos(φ) * sin(θ) for θ in θ, φ in φ]
+    y = [r * sin(φ) * sin(θ) for θ in θ, φ in φ]
+    z = [r * cos(θ) for θ in θ, φ in φ]
+    return (x, y, z)
+end
+
+# https://earthquake.usgs.gov/earthquakes/map/?extent=-68.39918,-248.90625&extent=72.60712,110.74219
+urldata = "https://raw.githubusercontent.com/MakieOrg/BeautifulMakie/main/data/"
+file1 = Downloads.download(urldata * "2021_01_2021_05.csv")
+file2 = Downloads.download(urldata * "2021_06_2022_01.csv")
+earthquakes1 = CSV.read(file1, DataFrame)
+earthquakes2 = CSV.read(file2, DataFrame)
+earthquakes = vcat(earthquakes1, earthquakes2)
+
+# depth unit, km
+function toCartesian(lon, lat; r = 1.02, cxyz = (0, 0, 0))
+    x = cxyz[1] + (r + 1500_000) * cosd(lat) * cosd(lon)
+    y = cxyz[2] + (r + 1500_000) * cosd(lat) * sind(lon)
+    z = cxyz[3] + (r + 1500_000) * sind(lat)
+    return (x, y, z) ./ 1500_000
+end
+
+lons, lats = earthquakes.longitude, earthquakes.latitude
+depth = earthquakes.depth
+mag = earthquakes.mag
+
+toPoints3D = [Point3f([toCartesian(lons[i], lats[i];
+    r = -depth[i] * 1000)...]) for i in eachindex(lons)]
+ms = (exp.(mag) .- minimum(exp.(mag))) ./ maximum(exp.(mag) .- minimum(exp.(mag)))
+
+with_theme(theme_black()) do
+    fig = Figure(size = (900, 900), fontsize = 20)
+    ax = LScene(fig[1, 1], show_axis = false)
+    pltobj = meshscatter!(ax, toPoints3D; markersize = ms / 20 .+ 0.001, color = mag,
+        colormap = resample_cmap(:afmhot, 256)[10:end], shading = FastShading)
+    surface!(ax, sphere(; r = 1.0)..., color = tuple.(earth_img, 0.1),
+        shading = FastShading, transparency = true)
+    Colorbar(fig[1, 2], pltobj, label = "Magnitude", height = Relative(1.5 / 4))
+    Label(fig[1, 1, Top()],
+        rich("Visualization by ",
+        rich("Lazaro Alonso\\n", color=:dodgerblue),
+        rich("using Makie", color=:orangered)),
+        justification=:left,
+        halign=1.0
+        )
+    Label(fig[1, 1, Top()], "Earthquakes on Earth. Jan-2021 to Jan-2022\\nOriginal data from USGS",
+        halign=0.0, justification=:left)
+    zoom!(ax.scene, cameracontrols(ax.scene), 0.55)
+    rotate!(ax.scene, 3.0)
+    save("earthquakes.png", fig; update=false)
+    ##run this to get a smooth animation
+    record(fig, "earthquakes.mp4", framerate = 24, update=false) do io
+        for i in 3.0:0.015:9.5
+            rotate!(ax.scene, i)
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
"earthquakes.mp4"

',5),p=[t];function E(e,r,d,g,y,F){return a(),i("div",null,p)}const c=s(l,[["render",E]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.lean.js b/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.lean.js new file mode 100644 index 00000000..e1523fce --- /dev/null +++ b/previews/PR54/assets/examples_datavis_earthquakes.md.Bj4gs_LC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/earthquakes.q7R5Nq1-.mp4",n="/previews/PR54/assets/earthquakes.C5Ro3n32.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/earthquakes.md","filePath":"examples/datavis/earthquakes.md","lastUpdated":null}'),l={name:"examples/datavis/earthquakes.md"},t=h("",5),p=[t];function E(e,r,d,g,y,F){return a(),i("div",null,p)}const c=s(l,[["render",E]]);export{o as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.js b/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.js new file mode 100644 index 00000000..670f2789 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.js @@ -0,0 +1,99 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bakjqfs.CVggQmmU.png",n="/previews/PR54/assets/ijnfkvz.CgsBI9P2.png",l="/previews/PR54/assets/hkkcgev.BebzF6wl.png",p="/previews/PR54/assets/kvmbvhh.CMrTmJMG.png",t="/previews/PR54/assets/hnwpnuu.D3B7DZwm.png",e="/previews/PR54/assets/fmlnuia.Bf7H0gvx.png",D=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/eigenvals_densities.md","filePath":"examples/datavis/eigenvals_densities.md","lastUpdated":null}'),E={name:"examples/datavis/eigenvals_densities.md"},r=h(`
julia
using CairoMakie
+using StatsBase, LinearAlgebra
+using Interpolations, OnlineStats
+using Distributions
+CairoMakie.activate!(type = "png")
+
+function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
+
+function getcounts!(h, fn; n = 100)
+    for _ in 1:n
+        vals = eigvals(fn())
+        x0 = real.(vals)
+        y0 = imag.(vals)
+        fit!(h, zip(x0,y0))
+    end
+end
getcounts! (generic function with 1 method)

See http://www.bohemianmatrices.com/gallery/ for more info and inspiration!

4x4 random

julia
m(;a=10rand()-5, b=10rand()-5) = [0 0 0 a; -1 -1 1 0; b 0 0 0; -1 -1 -1 -1]
+
+h = HeatMap(range(-3.5,3.5,length=1200), range(-3.5,3.5, length=1200))
+getcounts!(h, m; n=500_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax,-3.5..3.5, -3.5..3.5, eq_hist(h.counts); colormap = :bone_1)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Tridiagonal

julia
mtri() = Array(Tridiagonal(2rand(19) .-1, 2rand(20) .-1, 2rand(19) .-1))
+
+h = HeatMap(range(-3,3,length=1200÷2),range(-2,2,length=1200÷2))
+getcounts!(h, mtri; n=250_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -3..3, -2..2, eq_hist(h.counts); colormap = :bone_1)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Beta distribution

julia
(; n = 6) = 2rand(Beta(0.01,0.01), n,n) .-1
+h = HeatMap(range(-3,3,length=1200),range(-2,2,length=1200))
+getcounts!(h, mβ; n=500_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -3..3, -2..2,eq_hist(h.counts);
+        colormap = [:black, :white, :white])
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

3x3 random

julia
m3(;a=9rand()-5,b=9rand()-5) = [a 1 -1; -1 b 0; 1 -1 -1]
+h = HeatMap(range(-4,4,length=1200),range(-2,2,length=1200))
+getcounts!(h, m3; n = 500_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -4..4, -2..2,eq_hist(h.counts);
+        colormap = :CMRmap)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Tridiagonal 30x30 [-1,1]

julia
mtrin(; n =30) = Array(Tridiagonal(rand([-1.0,1.0],n-1), zeros(n), rand([-1.0,1.0],n-1)))
+
+h = HeatMap(range(-2,2,length=1200),range(-2,2,length=1200))
+
+getcounts!(h, mtrin; n = 50_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -2..2, -2..2, eq_hist(h.counts);
+        colormap = :linear_kry_5_95_c72_n256)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

8x8 random [-1, -1/f, 0, 1/f, 1]

julia
mrand(; f=1000,n=8) = rand([-1.0, -1/f, 0, 1/f, 1.0],n,n)
+h = HeatMap(range(-2,2,length=800), range(-2,2,length=800))
+getcounts!(h, mrand; n = 250_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -2..2, -2..2, eq_hist(h.counts);
+        colormap = :hot)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

',21),d=[r];function g(y,F,C,B,c,o){return a(),i("div",null,d)}const m=s(E,[["render",g]]);export{D as __pageData,m as default}; diff --git a/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.lean.js b/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.lean.js new file mode 100644 index 00000000..ebf80932 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_eigenvals_densities.md.yeekZ650.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/bakjqfs.CVggQmmU.png",n="/previews/PR54/assets/ijnfkvz.CgsBI9P2.png",l="/previews/PR54/assets/hkkcgev.BebzF6wl.png",p="/previews/PR54/assets/kvmbvhh.CMrTmJMG.png",t="/previews/PR54/assets/hnwpnuu.D3B7DZwm.png",e="/previews/PR54/assets/fmlnuia.Bf7H0gvx.png",D=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/eigenvals_densities.md","filePath":"examples/datavis/eigenvals_densities.md","lastUpdated":null}'),E={name:"examples/datavis/eigenvals_densities.md"},r=h("",21),d=[r];function g(y,F,C,B,c,o){return a(),i("div",null,d)}const m=s(E,[["render",g]]);export{D as __pageData,m as default}; diff --git a/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.js b/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.js new file mode 100644 index 00000000..b6abda14 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.js @@ -0,0 +1,58 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/dixuuuw.C1nbqwAx.png",k="/previews/PR54/assets/iolovqf.BYZPzpbw.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/eigenvals_evolution.md","filePath":"examples/datavis/eigenvals_evolution.md","lastUpdated":null}'),l={name:"examples/datavis/eigenvals_evolution.md"},p=n(`
julia
using CairoMakie
+using StatsBase, LinearAlgebra
+CairoMakie.activate!(type = "png")

Let M1 and M2 be two complex valued random matrices nxn. How do eigenvalues of M1 (1-t) + M2 t move in ℂ when t ranges in [0,1]? Inspired by https://twitter.com/S_Conradi/status/1571205148914995200

julia
function xy(a,b; n = 500)
+    xs= Float64[]
+    ys = Float64[]
+    for t in range(0,1, length=n)
+        vals = eigvals(a *(1-t) .+ b*t)
+        x0 = real.(vals)
+        y0 = imag.(vals)
+        push!(xs, x0...)
+        push!(ys, y0...)
+    end
+    return (xs, ys)
+end
xy (generic function with 1 method)

Unitary matrices

julia
function m12u(n=10)
+    U = randn(n, n) .+ 2im * randn(n, n)
+    u1 = eigvecs(U .+ transpose(conj(U)))
+    U = randn(n, n) + 1im * randn(n, n)
+    u2 = eigvecs(U .+ transpose(conj(U)))
+    return u1, u2
+end
+
+n = 100
+a, b =  m12u(100)
+xs, ys = xy(a,b)
+colors = repeat(1:n,inner=500)
+
+with_theme(theme_black()) do
+    fig=Figure(size=(800,800))
+    ax = Axis(fig[1,1])
+    scatter!(Point2f.(xs,ys); color=colors, markersize = 1,
+        colormap=[:yellow, :white, :orangered]
+        )
+    limits!(ax, -0.7,0.7,-0.7,0.7)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Complex valued random matrices

https://twitter.com/S_Conradi/status/1571205148914995200

julia
function m12(n=10)
+    a = ((2rand(n,n) .-1) .+ (2im*rand(n,n) .-1))
+    b = ((2rand(n,n) .-1) .+ (2im*rand(n,n) .-1))
+    return a, b
+end
+
+n = 100
+a, b =  m12(n)
+xs, ys = xy(a,b)
+colors = repeat(1:n,inner=500)
+
+with_theme(theme_black()) do
+    fig=Figure(size=(800,800))
+    ax = Axis(fig[1,1])
+    scatter!(Point2f.(xs,ys); color=colors, markersize = 1,
+        colormap=[:yellow, :white, :orangered]
+        )
+    limits!(ax, -8,8,-8,8)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

',11),t=[p];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const o=s(l,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.lean.js b/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.lean.js new file mode 100644 index 00000000..fab9558b --- /dev/null +++ b/previews/PR54/assets/examples_datavis_eigenvals_evolution.md.C1f_CNKB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/dixuuuw.C1nbqwAx.png",k="/previews/PR54/assets/iolovqf.BYZPzpbw.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/eigenvals_evolution.md","filePath":"examples/datavis/eigenvals_evolution.md","lastUpdated":null}'),l={name:"examples/datavis/eigenvals_evolution.md"},p=n("",11),t=[p];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const o=s(l,[["render",e]]);export{c as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.js b/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.js new file mode 100644 index 00000000..354f824c --- /dev/null +++ b/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.js @@ -0,0 +1,115 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/imvitmb.B5XNrER3.png",k="/previews/PR54/assets/ccfsjgl.GmHGyjMT.png",l="/previews/PR54/assets/pnrxsup.ChkpM9QF.png",p="/previews/PR54/assets/vjuseoy.DHQRTKsK.png",B=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/fractals.md","filePath":"examples/datavis/fractals.md","lastUpdated":null}'),t={name:"examples/datavis/fractals.md"},e=h(`
julia
using CairoMakie
+using StatsBase
+using LinearAlgebra
+using Interpolations
+CairoMakie.activate!(type = "png")

We use the following function to do histogram equalization over our fractals. This helps a lot with color instensities.

julia
function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
eq_hist (generic function with 1 method)

Also, a smoothing function over the iterations is defined as

julia
function normIterations(n, zn, b)
+    return n - (log(log(abs(zn))) - log(log(b)))/log(2.0)
+end
normIterations (generic function with 1 method)

Mandelbrot definitions

julia
function mandelbrot(c, b, itmap)
+    z = c
+    for n in 1:b
+        if z.re * z.re + z.im * z.im > 4
+            return itmap(n, z, b)
+        end
+        z = z^2 + c
+    end
+    return 0.0
+end
+
+function mandelbrot_set!(img, xi, xf, yi, yf, npoints; b=1024)
+    for (i,x) in enumerate(range(xi, xf, length=npoints))
+        for (j,y) in enumerate(range(yi, yf, length=npoints))
+            color = mandelbrot(x + 1im*y, b, normIterations)
+            img[i,j] = color
+        end
+    end
+end
mandelbrot_set! (generic function with 1 method)

Mandelbrot plot

julia
npoints = 600
+img = zeros(npoints, npoints)
+mandelbrot_set!(img, -2.0,0.5,-1.25,1.25, npoints)
+
+fig = Figure(figure_padding=0,size=(600,600))
+ax = Axis(fig[1,1]; aspect = DataAspect())
+heatmap!(ax, eq_hist(img); colormap=:inferno)
+hidedecorations!(ax)
+hidespines!(ax)
+fig

A few more awesome examples can be done with the following parameters:

julia
xyrange=[
+    [ -0.74877,-0.74872,0.06505,0.06510],
+    [0.32642717997233067, 0.3265289052327473,-0.05451000956418885, -0.05443371561887635],
+    [-1.9963806954442953, -1.996380695443582,2.628704923646517e-7, 2.62871027270105e-7],
+    [0.3476108223238668926295, 0.3476108223245338122665,0.0846794087369283253550, 0.0846794087374285150830],
+    [-0.650790400000000001192,-0.648844800000000001192,0.44539837880859369792, 0.44685757880859369792],
+    [-0.9548899408372031, -0.9548896813770819,0.2525416487455764, 0.2525418433406673],
+    [0.254828857465066226270, 0.254828889245416226270,-0.000605561881950000235, -0.000605538046687500235],
+    [-0.882297664710767940063, -0.882297662380940440063,0.235365461981556923486,0.235365463728927548486],
+    [-0.6534376561891502063520, -0.6534376520406489856480,0.3635691455538367401120, 0.3635691486652126556400],
+    [0.25740289813988496306, 0.25740289814296891154,0.49283797442018109421, 0.49283797442249278541]]
+
+bs = [2500,3000,1000,10_000, 10_000,10_000, 50_000, 10_000,10_000,50_000]
+cmaps = [:plasma, :bone_1, :viridis, :CMRmap, :gist_stern,
+    :linear_bmy_10_95_c78_n256, :Hiroshige, :seaborn_icefire_gradient,
+    :sunset, :sun]
+
+fig = Figure(size=(1200,900))
+axs = [Axis(fig[i,j]; aspect = DataAspect()) for i in 1:3 for j in 1:4]
+npoints = 300
+img = zeros(npoints, npoints)
+for idx in 1:10
+    mandelbrot_set!(img,xyrange[idx]..., npoints; b=bs[idx])
+    heatmap!(axs[idx], eq_hist(img); colormap=cmaps[idx])
+end
+hidedecorations!.(axs)
+colgap!(fig.layout, 1)
+rowgap!(fig.layout,1)
+hidespines!.(axs)
+fig

Julia set definitions

julia
function juliamap(x, y, c, b, itmap)
+    z = (x + 1im*y)^2 + c
+    for k in 1:b
+        if z.re * z.re + z.im * z.im > 4
+            return itmap(k, z, b)
+        end
+        z = z^2 + c
+    end
+    return 0.0
+end
+function julia_set!(img, xi, xf, yi, yf, npoints; b=1024, c=-0.835 - 1im*0.2321)
+    for (i,x) in enumerate(range(xi, xf, length=npoints))
+        for (j,y) in enumerate(range(yi, yf, length=npoints))
+            color = juliamap(x, y, c, b, normIterations)
+            img[i,j] = color
+        end
+    end
+end
julia_set! (generic function with 1 method)

Julia set plot

julia
npoints = 600
+img = zeros(npoints, npoints)
+julia_set!(img, -1.7, 1.7, -1.7, 1.7, npoints)
+
+fig = Figure(figure_padding=0,size=(600,600))
+ax = Axis(fig[1,1]; aspect = DataAspect())
+heatmap!(ax, log10.(img); colormap=:bone_1)
+hidedecorations!(ax)
+hidespines!(ax)
+fig

Julia set examples

julia
cvalues = [0.274 - 0.008 * 1im, 0.285 + 0.01*1im,
+    -0.70176 - 0.3842*1im, -0.8 + 0.156*1im,
+    -0.7269 + 0.1889*1im, -0.1 + 0.65*1im,
+    -0.382 + 0.618*1im, -0.449 + 0.571*1im]
+
+fig = Figure(size=(1200,600))
+axs = [Axis(fig[i,j]; aspect = DataAspect()) for i in 1:2 for j in 1:4]
+npoints = 300
+img = zeros(npoints, npoints)
+for idx in 1:8
+    julia_set!(img,-1.7, 1.7, -1.7, 1.7, npoints; b=1000, c=cvalues[idx])
+    heatmap!(axs[idx], log10.(img); colormap=cmaps[idx])
+end
+hidedecorations!.(axs)
+colgap!(fig.layout, 1)
+rowgap!(fig.layout,1)
+hidespines!.(axs)
+fig

',25),E=[e];function d(r,g,y,F,C,c){return a(),i("div",null,E)}const A=s(t,[["render",d]]);export{B as __pageData,A as default}; diff --git a/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.lean.js b/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.lean.js new file mode 100644 index 00000000..fd5655ac --- /dev/null +++ b/previews/PR54/assets/examples_datavis_fractals.md.B1EKLIWm.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/imvitmb.B5XNrER3.png",k="/previews/PR54/assets/ccfsjgl.GmHGyjMT.png",l="/previews/PR54/assets/pnrxsup.ChkpM9QF.png",p="/previews/PR54/assets/vjuseoy.DHQRTKsK.png",B=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/fractals.md","filePath":"examples/datavis/fractals.md","lastUpdated":null}'),t={name:"examples/datavis/fractals.md"},e=h("",25),E=[e];function d(r,g,y,F,C,c){return a(),i("div",null,E)}const A=s(t,[["render",d]]);export{B as __pageData,A as default}; diff --git a/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.js b/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.js new file mode 100644 index 00000000..2830b3aa --- /dev/null +++ b/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.js @@ -0,0 +1,98 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/leos.BnTHRQ-6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/leos.md","filePath":"examples/datavis/leos.md","lastUpdated":null}'),n={name:"examples/datavis/leos.md"},l=h('

Leos

julia
using Downloads, GLMakie
+using Colors, Statistics
+using FileIO
+GLMakie.activate!()
+# some data
+names = ["Leonardo Dicaprio", "Gisele Bundchen", "Bar Refaeli",
+        "Blake Lively", "Erin Heatherton", "Toni Garrn", "Kelly Rohrbach",
+        "Nina Agdal", "Camila Morrone"]
+namesfiles = join.(split.(lowercase.(names)), "_")
+
+y_xticks = 1998:2022
+ys_xticks = string.(1998:2022)
+yd_xticks = ["'"*t[3:4] for t in ys_xticks]
+age_leo = 24 .+ collect(1:length(y_xticks)) .- 1
+
+age_gf = [18:23, 20:25, 23, 22, 20:21,25, 24:25, 20:25]
+years = [1998:2003, 2004:2009, 2010, 2011, 2012:2013, 2014,
+    2015:2016, 2017:2022]
+# helper functions
+# Inspired by https://github.com/tashapiro/tanya-data-viz/tree/main/dicaprio-gfs
+function getPicture(; name = "leonardo_dicaprio",
+        imgs_link = "https://raw.githubusercontent.com/tashapiro/tanya-data-viz/main/dicaprio-gfs/images/")
+    load(Downloads.download(joinpath(imgs_link, name * ".png")))
+end
+function poly3(t, p0, p1, p2, p3)
+    Point2f((1-t)^3 .* p0 .+ t*p1*(3*(1-t)^2) + p2*(3*(1-t)*t^2) .+ p3*t^3)
+end
+function BezierPath(o, f, co, cf; t = range(0,1, length=30))
+    return [poly3(t, o, co, cf, f) for t in t]
+end
+function posFig(ax, x; yoff=100, ylow = 15)
+    o = ax.scene.viewport[].origin - Point2f(0, yoff)
+    return Makie.project(ax.scene, Point2f(x, ylow)) + o
+end
+function supLine(p1, p2; x=0,y=8)
+    [p1 .+ Point2f(x,y), p1, p2, p2 .+ Point2f(x,y)]
+end
+
+pictures = [getPicture(; name = n) for n in namesfiles]
+cmap = resample_cmap(Reverse(:Hiroshige), 9)
+blue = colorant"#6EE2FFFF";
+grey = colorant"#D0DFE699";
+# αcolors = [blue, grey, (grey, 0.1), (blue,0.65)] # try this one 😄
+αcolors = [blue, blue, (grey, 0.0), (grey,0.0)]
+αcolorsLeg = [blue, (grey, 0.0), (grey,0.0), blue]
+
+legleo = MarkerElement(color =1.2cmap[2:3:end], marker = :circle, markersize = 20,
+        points = Point2f[(0, 0.5), (1, 0.5), (2, 0.5)])
+leggirl = PolyElement(color = αcolorsLeg, strokecolor = :white, strokewidth = 0.85,
+    points = Point2f[(-0.2, 0), (2.2, 0), (2.2,1), (-0.2, 1)])
+
+with_theme(theme_black()) do
+    fig = Figure(; size = (1200,800))
+    ax = Axis(fig[1,1:9], ylabel = "Age [Years]", xlabel = "")
+    lines!(ax, y_xticks, age_leo; label = "Leo's age", color = age_leo,
+        linestyle = :dot, colormap = 1.2cmap[2:end])
+    scatter!(ax, y_xticks, age_leo; label = "Leo's age", color = age_leo,
+        markersize = 10, colormap = 1.2cmap[2:end])
+    [barplot!.(years[i], age_gf[i]; color = αcolors,label = "Girlfriend's age",
+        strokewidth=0.85, strokecolor= (:white,1)) for i in eachindex(years)]
+    [scatter!(ax, [2009,2014, 2016, 2022], fill(25 +1,4);
+        color = (blue, 0.1), markersize = 50-3i) for i in 1:10]
+    lines!(ax,supLine(Point2f(2009,29), Point2f(2022,29); x=0,y=-3); color=blue)
+    lines!(ax,supLine(Point2f(2014,29), Point2f(2016,29); x=0,y=-3); color=blue)
+    text!(ax, "Threshold", position = (2014,30))
+    [text!(string.(age_gf[i]), position = Point2f.(years[i], age_gf[i] .+0.5),
+        align = (:center, :bottom), fontsize = 16) for i in eachindex(age_gf)]
+    text!(string.(age_leo), position = Point2f.(y_xticks, age_leo .+0.5),
+        align = (:center, :bottom), fontsize = 16)
+    ax.xticks = (y_xticks, yd_xticks)
+    ax.yticks = 0:5:55
+    ylims!(ax,15,52)
+    xlims!(ax,1997,2023)
+    hidespines!.(ax)
+    # pictures
+    aximgs = [Axis(fig[2,i], aspect = 1, xlabel = join(split(names[i]), "\\n"),
+        xlabelcolor = blue) for i in 1:9]
+    [image!(aximgs[i], rotr90(pictures[i])) for i in eachindex(pictures)]
+    hidedecorations!.(aximgs; label =false)
+    hidespines!.(aximgs)
+    aximgs[1].xlabelcolor = "#F79D1EFF"
+    limits!.(aximgs,1,78,1,78)
+    # connecting lines in fig space!
+    ops = [posFig(ax, mean(years[i]); yoff=250, ylow = 15) for i in 1:8]
+    fps = [posFig(aximgs[i], 39; yoff=120, ylow = 78) for i in 2:9]
+    supls = [supLine(posFig(ax, years[i][begin]; yoff=250, ylow = 15),
+        posFig(ax, years[i][end], yoff=250, ylow = 15)) for i in 1:8]
+    [lines!(fig.scene, supls[k], color = 1.2cmap[k+1]) for k in 1:8]
+    [lines!(fig.scene, BezierPath(ops[k], fps[k], [ops[k][1],ops[k][2]-30],
+        [fps[k][1],fps[k][2]+30]); color = 1.2cmap[k+1]) for k in 1:8]
+    rowsize!(fig.layout,2,Auto(0.2))
+    rowgap!(fig.layout, 60)
+    Legend(fig[1,1], [legleo, leggirl], ["      Leo's age", "      Girlfriend's age"],
+        halign = :left, valign = :top,tellheight=false,tellwidth=false,
+        margin = (30, 10, 10, 10), framecolor = (:white,0.2))
+    Label(fig[0,:], "Leo's Syndrome", color = "#F79D1EFF", fontsize = 32)
+    fig
+end
`,3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.lean.js b/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.lean.js new file mode 100644 index 00000000..9d719394 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_leos.md._efLa6bX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/leos.BnTHRQ-6.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/leos.md","filePath":"examples/datavis/leos.md","lastUpdated":null}'),n={name:"examples/datavis/leos.md"},l=h("",3),p=[l];function t(E,e,r,g,d,y){return a(),i("div",null,p)}const B=s(n,[["render",t]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.js b/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.js new file mode 100644 index 00000000..20253361 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.js @@ -0,0 +1,51 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/multipleTitles.Bj6LD-Ct.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/multipleTitles.md","filePath":"examples/datavis/multipleTitles.md","lastUpdated":null}'),n={name:"examples/datavis/multipleTitles.md"},l=h('

Multiple Titles

julia
using CairoMakie
+using Random

from this post

julia
Random.seed!(1234)
+
+x = range(2007, 2035, length = 1000)
+
+function randdata(n)
+    data = cumsum(randn(1000))
+    data .-= range(first(data), last(data), length = 1000)
+    data .* 0.1
+end
+euro = randdata(1000)
+japan = randdata(1000) .+ 1
+uk = randdata(1000) .- 2
+emerging = randdata(1000) .- 6
+
+with_theme(theme_dark(), size = (650, 450)) do
+    fig = Figure()
+    ax = Axis(fig[1, 1], xgridvisible = false, ygridvisible = false, xticksvisible = false, alignmode = Outside(), xticks = 2007:4:2031, ytrimspine = true,
+        palette = (; color = [:deepskyblue, :firebrick3, :dodgerblue4, :goldenrod1]))
+
+    hidespines!(ax, :b, :t, :r)
+    hlines!(ax, 0, color = :grey90, linewidth = 1)
+
+    for (label, data) in ["Euro" => euro, "Japan" => japan, "UK" => uk, "Emerging markets" => emerging]
+        lines!(ax, x, data; label, linewidth = 2)
+    end
+
+    titlelayout = GridLayout(fig[0, 1], halign = :left, tellwidth = false)
+    Label(titlelayout[1, 1], "Interest rate differentials", halign = :left, fontsize = 30, font="TeX Gyre Heros Bold Makie")
+    Label(titlelayout[2, 1], "Differences in monetary policy are a key driver of the strong dollar.", halign = :left, fontsize = 20)
+    Label(titlelayout[3, 1], "(versus US interest rate, percent)", halign = :left)
+    rowgap!(titlelayout, 0)
+
+    for (label, (year, y)) in ["Global\\nfinancial\\ncrisis" => (2008, 8), "Taper\\ntantrum" => (2013, 8), "China\\n2015\\ncrisis" => (2015.4, 6), "Russia invasion\\nof Ukraine" => (2022.1, 8)]
+        lines!(ax, [year, year], [-10, y], color = :grey90, linestyle = :dash)
+        text!(ax, year, y, text = label, align = (:left, :top), offset = (10, 0), fontsize = 14)
+    end
+
+    ylims!(ax, -11, 11)
+    xlims!(ax, 2007, 2035)
+
+    axislegend(position = (0.5, 1.05), orientation = :horizontal,
+        framevisible = false)
+
+    Label(fig[2, 1], """
+    Sources: Bloomberg Finance L.P.; Haver Analytics; and IMF staff calculations.
+    Notes: Differential is calculated as US overnight bank funding rate minus foreign
+    inter-bank rate. The dots depict the forward paths for nominal interest rates.
+    """, tellwidth = false, halign = :left, justification = :left)
+    fig
+end
`,5),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.lean.js b/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.lean.js new file mode 100644 index 00000000..14f86c35 --- /dev/null +++ b/previews/PR54/assets/examples_datavis_multipleTitles.md.CfKQyaRU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/multipleTitles.Bj6LD-Ct.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/multipleTitles.md","filePath":"examples/datavis/multipleTitles.md","lastUpdated":null}'),n={name:"examples/datavis/multipleTitles.md"},l=h("",5),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.js b/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.js new file mode 100644 index 00000000..19a8564d --- /dev/null +++ b/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.js @@ -0,0 +1,55 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/strange_attractors.DclmjZDx.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/strange_attractors.md","filePath":"examples/datavis/strange_attractors.md","lastUpdated":null}'),n={name:"examples/datavis/strange_attractors.md"},t=h(`

Here, we reproduce the outputs from this link: https://examples.pyviz.org/attractors/attractors.html

Strange attractors

An attractor is a set of values to which a numerical system tends to evolve. An attractor is called a strange attractor if the resulting pattern has a fractal structure.

In order to achieve the desire output we just need the following functions.

julia
using GLMakie, StatsBase, OnlineStats
+using LinearAlgebra, Interpolations
+GLMakie.activate!()

Trajectory

julia
function trajectory(fn, x0, y0, kargs; n = 1000) #  kargs = a, b, c, d
+    x, y = zeros(n+1), zeros(n+1)
+    x[1], y[1] = x0, y0
+    for i = 1:n
+        x[i+1], y[i+1] = fn(x[i], y[i], kargs...)
+    end
+    x, y
+end
trajectory (generic function with 1 method)

Aggregation

julia
function aggHist(x, y; nbinsx = 400, nbinsy = 400)
+    xedges = range(extrema(x)..., length = nbinsx)
+    yedges = range(extrema(y)..., length = nbinsy)
+    o = fit!(HeatMap(xedges, yedges), zip(x, y))
+    return o
+end
aggHist (generic function with 1 method)

Equalization

julia
function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
eq_hist (generic function with 1 method)

Clifford

julia
function Clifford(x, y, a, b, c, d)
+    sin(a * y) + c * cos(a * x), sin(b * x) + d * cos(b * y)
+end
Clifford (generic function with 1 method)

Some interesting values

julia
cargs = [[0, 0, -1.3, -1.3, -1.8, -1.9],
+    [0, 0, -1.4, 1.6, 1.0, 0.7],
+    [0, 0, 1.7, 1.7, 0.6, 1.2],
+    [0, 0, 1.7, 0.7, 1.4, 2.0],
+    [0, 0, -1.7, 1.8, -1.9, -0.4],
+    [0, 0, 1.1, -1.32, -1.03, 1.54],
+    [0, 0, 0.77, 1.99, -1.31, -1.45],
+    [0, 0, -1.9, -1.9, -1.9, -1.0],
+    [0, 0, 0.75, 1.34, -1.93, 1.0],
+    [0, 0, -1.32, -1.65, 0.74, 1.81],
+    [0, 0, -1.6, 1.6, 0.7, -1.0],
+    [0, 0, -1.7, 1.5, -0.5, 0.7]
+]
+
+with_theme(theme_black()) do
+    fig = Figure(size = (1200,900))
+    axs = [Axis(fig[i,j], aspect=1) for i in 1:3 for j in 1:4]
+    for i in 1:12
+        x, y = trajectory(Clifford, cargs[i][1:2]..., cargs[i][3:end]; n = 300_000)
+        o = aggHist(x, y; nbinsx = 300, nbinsy = 300)
+        m = eq_hist(o.counts)
+        heatmap!(axs[i], o.xedges, o.yedges, m; colormap = :inferno)
+        axs[i].title = join(string.(cargs[1]), ", ")
+    end
+    hidedecorations!.(axs)
+    hidespines!.(axs)
+    rowgap!(fig.layout,5)
+    colgap!(fig.layout,1)
+    fig
+end

',20),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.lean.js b/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.lean.js new file mode 100644 index 00000000..8503f7dd --- /dev/null +++ b/previews/PR54/assets/examples_datavis_strange_attractors.md.fh4aI26s.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/strange_attractors.DclmjZDx.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/datavis/strange_attractors.md","filePath":"examples/datavis/strange_attractors.md","lastUpdated":null}'),n={name:"examples/datavis/strange_attractors.md"},t=h("",20),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.js b/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.js new file mode 100644 index 00000000..9eae82d9 --- /dev/null +++ b/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.js @@ -0,0 +1,21 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/blue_marble.CMuaYMif.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/blue_marble.md","filePath":"examples/geo/blue_marble.md","lastUpdated":null}'),n={name:"examples/geo/blue_marble.md"},l=h('

Blue marble

julia
using GLMakie, FileIO
+using Downloads: download
+GLMakie.activate!()
+
+earth_img = load(download("https://upload.wikimedia.org/wikipedia/commons/5/56/Blue_Marble_Next_Generation_%2B_topography_%2B_bathymetry.jpg"))
+n = 1024 ÷ 4 # 2048
+θ = LinRange(0, π, n)
+φ = LinRange(0, , 2 * n)
+x = [cos(φ) * sin(θ) for θ in θ, φ in φ]
+y = [sin(φ) * sin(θ) for θ in θ, φ in φ]
+z = [cos(θ) for θ in θ, φ in φ]
+
+fig = Figure(size = (800, 600), backgroundcolor = :grey80)
+ax = LScene(fig[1, 1], show_axis = false)
+surface!(ax, x, y, z;
+    color = earth_img,
+    shading = NoShading,
+    backlight = 1.5f0
+    )
+zoom!(ax.scene, cameracontrols(ax.scene), 0.65)
+GLMakie.rotate!(ax.scene, Vec3f(0, 0, 1), 3.0)
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.lean.js b/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.lean.js new file mode 100644 index 00000000..6cfb20aa --- /dev/null +++ b/previews/PR54/assets/examples_geo_blue_marble.md.CLL2-xe0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/blue_marble.CMuaYMif.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/blue_marble.md","filePath":"examples/geo/blue_marble.md","lastUpdated":null}'),n={name:"examples/geo/blue_marble.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.js b/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.js new file mode 100644 index 00000000..0c79b948 --- /dev/null +++ b/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.js @@ -0,0 +1,7 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/coastlines.XQvrmXpW.png",y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/coastlines.md","filePath":"examples/geo/coastlines.md","lastUpdated":null}'),e={name:"examples/geo/coastlines.md"},l=t('

Coastlines

This should create a GeoAxis, then on top we plot the coastlines from from Natural Earth.

julia
using GLMakie, GeoMakie
+GLMakie.activate!()
+
+fig = Figure(; size=(600, 400))
+ax = GeoAxis(fig[1, 1]; title="coastlines")
+lines!(ax, GeoMakie.coastlines())
+fig
`,4),h=[l];function p(k,r,E,o,d,c){return a(),i("div",null,h)}const F=s(e,[["render",p]]);export{y as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.lean.js b/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.lean.js new file mode 100644 index 00000000..aab74dd6 --- /dev/null +++ b/previews/PR54/assets/examples_geo_coastlines.md.Bsb8nk6q.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const n="/previews/PR54/assets/coastlines.XQvrmXpW.png",y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/coastlines.md","filePath":"examples/geo/coastlines.md","lastUpdated":null}'),e={name:"examples/geo/coastlines.md"},l=t("",4),h=[l];function p(k,r,E,o,d,c){return a(),i("div",null,h)}const F=s(e,[["render",p]]);export{y as __pageData,F as default}; diff --git a/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.js b/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.js new file mode 100644 index 00000000..1087c4f4 --- /dev/null +++ b/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.js @@ -0,0 +1,39 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/donut_earth_sun.B8BTZFI8.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/donut_earth_sun.md","filePath":"examples/geo/donut_earth_sun.md","lastUpdated":null}'),n={name:"examples/geo/donut_earth_sun.md"},l=h('

Torus surfacec with sun and moon textures

julia
using GLMakie,  FileIO
+using Downloads: download
+GLMakie.activate!()
+
+nasa = "https://eoimages.gsfc.nasa.gov/images/imagerecords/"
+earth_link = nasa * "73000/73963/gebco_08_rev_bath_3600x1800_color.jpg"
+earth = load(download(earth_link))
+sun_link = "https://www.solarsystemscope.com/textures/download/2k_sun.jpg"
+sun = load(download(sun_link))
+n = 1024 ÷ 4 # 2048
+U = LinRange(-pi, pi, 2n)
+V = LinRange(-pi, pi, n)
+x1 = [cos(u) + .5 * cos(u) * cos(v)      for u in U, v in V]
+y1 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+z1 = [.5 * sin(v)                        for u in U, v in V]
+x2 = [1 + cos(u) + .5 * cos(u) * cos(v)  for u in U, v in V]
+y2 = [.5 * sin(v)                        for u in U, v in V]
+z2 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+
+with_theme(theme_dark()) do
+    fig, ax, = surface(x1, y1, z1;
+        color = earth'[:,end:-1:1],
+        shading = FastShading,
+        backlight = 1.5f0,
+        axis=(;
+            type=Axis3,
+            aspect = :data,
+            perspectiveness = 0.5,
+            azimuth = -1.56,
+            elevation = 0.58),
+        figure = (;
+        size = (1200,800)))
+    surface!(ax, x2, y2, z2;
+        color = sun'[:,end:-1:1],
+        shading = FastShading,
+        backlight = 1.5f0)
+    hidedecorations!(ax; grid=false)
+    fig
+end
`,3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.lean.js b/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.lean.js new file mode 100644 index 00000000..73ca701e --- /dev/null +++ b/previews/PR54/assets/examples_geo_donut_earth_sun.md.B5IukdPz.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/donut_earth_sun.B8BTZFI8.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/donut_earth_sun.md","filePath":"examples/geo/donut_earth_sun.md","lastUpdated":null}'),n={name:"examples/geo/donut_earth_sun.md"},l=h("",3),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const o=s(n,[["render",t]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.js b/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.js new file mode 100644 index 00000000..56a299f5 --- /dev/null +++ b/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/moon.C06gcwWC.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/moon.md","filePath":"examples/geo/moon.md","lastUpdated":null}'),k={name:"examples/geo/moon.md"},p=n('

Moon texture onto a sphere

julia
using GLMakie, FileIO
+using Downloads: download
+GLMakie.activate!()
+
+moon = load(download("https://svs.gsfc.nasa.gov/vis/a000000/a004600/a004675/phases.0001_print.jpg"))
+n = 1024 # 2048
+θ = LinRange(0, pi, n)
+φ = LinRange(0, 2 * pi, 2 * n)
+x = [cos(φ) * sin(θ) for θ in θ, φ in φ]
+y = [sin(φ) * sin(θ) for θ in θ, φ in φ]
+z = [cos(θ) for θ in θ, φ in φ]
+
+fig = Figure(size=(900, 900), backgroundcolor="#748AA6")
+ax = Axis3(fig, aspect=:data, viewmode=:fitzoom, #perspectiveness = 0.5,
+    azimuth=0.01π, elevation=0.85π,)
+surface!(ax, x, y, z;
+    color=moon,
+    shading = FastShading,
+    backlight=1.5f0
+    )
+hidedecorations!(ax)
+hidespines!(ax)
+fig[1, 1] = ax
+fig
`,3),t=[p];function l(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(k,[["render",l]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.lean.js b/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.lean.js new file mode 100644 index 00000000..affddce7 --- /dev/null +++ b/previews/PR54/assets/examples_geo_moon.md.KasTUa4x.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/moon.C06gcwWC.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/moon.md","filePath":"examples/geo/moon.md","lastUpdated":null}'),k={name:"examples/geo/moon.md"},p=n("",3),t=[p];function l(e,E,r,d,g,y){return a(),i("div",null,t)}const C=s(k,[["render",l]]);export{o as __pageData,C as default}; diff --git a/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.js b/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.js new file mode 100644 index 00000000..f26428c3 --- /dev/null +++ b/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.js @@ -0,0 +1,50 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/projections.M7FIfJeX.png",y=JSON.parse('{"title":"More projections","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/projections.md","filePath":"examples/geo/projections.md","lastUpdated":null}'),k={name:"examples/geo/projections.md"},p=t('

Geo Projections

julia
using GLMakie, GeoMakie
+GLMakie.activate!()
+
+sproj = ["+proj=weren", "+proj=crast",
+    "+proj=wink1", "+proj=wink2", "+proj=wintri", "+proj=poly",
+    "+proj=putp1", "+proj=putp2", "+proj=putp3", "+proj=putp3p", "+proj=putp4p", "+proj=putp5",
+    "+proj=putp5p", "+proj=putp6", "+proj=putp6p", "+proj=qua_aut", "+proj=robin", "+proj=rouss",
+    "+proj=rpoly", "+proj=sinu"]
+
+# let's plot just a few
+function plotproj()
+    fig = Figure(size=(1600, 900))
+    k = 1
+    for i in 1:2, j in 1:2
+        ga = GeoAxis(fig[i, j]; dest=sproj[k], title=sproj[k])
+        # hidedecorations!(ga)
+        lines!(ga, GeoMakie.coastlines()) # plot coastlines from Natural Earth.
+        k += 1
+    end
+    fig
+end
+
+fig = plotproj()

More projections

julia
projections = ["+proj=adams_hemi", "+proj=adams_ws1", "+proj=adams_ws2",
+    "+proj=aea +lat_1=29.5 +lat_2=42.5", "+proj=aeqd", "+proj=airy", "+proj=aitoff",
+    "+proj=apian", "+proj=august", "+proj=bacon", "+proj=bertin1953", "+proj=bipc +ns",
+    "+proj=boggs", "+proj=bonne +lat_1=10", "+proj=cass", "+proj=cea",
+    "+proj=chamb +lat_1=10 +lon_1=30 +lon_2=40", "+proj=collg", "+proj=comill",
+    "+proj=crast", "+proj=denoy", "+proj=eck1", "+proj=eck2", "+proj=eck3",
+    "+proj=eck4", "+proj=eck5", "+proj=eck6", "+proj=eqc", "+proj=eqdc +lat_1=55 +lat_2=60",
+    "+proj=eqearth", "+proj=euler +lat_1=67 +lat_2=75", "+proj=fahey", "+proj=fouc", "+proj=fouc_s",
+    "+proj=gall", "+proj=geos +h=35785831.0 +lon_0=-60 +sweep=y", "+proj=gins8", "+proj=gn_sinu +m=2 +n=3",
+    "+proj=goode", "+proj=guyou", "+proj=hammer", "+proj=hatano",
+    "+proj=igh", "+proj=igh_o +lon_0=-160", "+proj=imw_p +lat_1=30 +lat_2=-40", "+proj=isea",
+    "+proj=kav5", "+proj=kav7", "+proj=laea", "+proj=lagrng", "+proj=larr", "+proj=lask",
+    "+proj=lcca +lat_0=35", "+proj=leac", "+proj=loxim",
+    "+proj=lsat +ellps=GRS80 +lat_1=-60 +lat_2=60 +lsat=2 +path=2", "+proj=mbt_s", "+proj=mbt_fps",
+    "+proj=mbtfpp", "+proj=mbtfpq", "+proj=mbtfps", "+proj=merc", "+proj=mill", "+proj=misrsom +path=1",
+    "+proj=moll", "+proj=murd1 +lat_1=30 +lat_2=50",
+    "+proj=murd3 +lat_1=30 +lat_2=50", "+proj=natearth", "+proj=natearth2",
+    "+proj=nell", "+proj=nell_h", "+proj=nicol",
+    "+proj=ob_tran +o_proj=mill +o_lon_p=40 +o_lat_p=50 +lon_0=60", "+proj=ocea", "+proj=oea +m=1 +n=2",
+    "+proj=omerc +lat_1=45 +lat_2=55", "+proj=ortel", "+proj=ortho", "+proj=patterson", "+proj=poly",
+    "+proj=putp1", "+proj=putp2", "+proj=putp3", "+proj=putp3p", "+proj=putp4p", "+proj=putp5",
+    "+proj=putp5p", "+proj=putp6", "+proj=putp6p", "+proj=qua_aut", "+proj=robin", "+proj=rouss",
+    "+proj=rpoly", "+proj=sinu", "+proj=times", "+proj=tissot +lat_1=60 +lat_2=65", "+proj=tmerc",
+    "+proj=tobmerc", "+proj=tpeqd +lat_1=60 +lat_2=65", "+proj=urm5 +n=0.9 +alpha=2 +q=4",
+    "+proj=urmfps +n=0.5", "+proj=vandg", "+proj=vandg2", "+proj=vandg3", "+proj=vandg4",
+    "+proj=vitk1 +lat_1=45 +lat_2=55", "+proj=wag1", "+proj=wag2", "+proj=wag3", "+proj=wag4",
+    "+proj=wag5", "+proj=wag6", "+proj=wag7", "+proj=webmerc +datum=WGS84", "+proj=weren",
+    "+proj=wink1", "+proj=wink2", "+proj=wintri"];
`,5),n=[p];function l(E,r,o,e,F,d){return a(),i("div",null,n)}const u=s(k,[["render",l]]);export{y as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.lean.js b/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.lean.js new file mode 100644 index 00000000..3cb0ab2d --- /dev/null +++ b/previews/PR54/assets/examples_geo_projections.md.duVsqYxF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/projections.M7FIfJeX.png",y=JSON.parse('{"title":"More projections","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/projections.md","filePath":"examples/geo/projections.md","lastUpdated":null}'),k={name:"examples/geo/projections.md"},p=t("",5),n=[p];function l(E,r,o,e,F,d){return a(),i("div",null,n)}const u=s(k,[["render",l]]);export{y as __pageData,u as default}; diff --git a/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.js b/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.js new file mode 100644 index 00000000..8a2dd0f3 --- /dev/null +++ b/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.js @@ -0,0 +1,42 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/vertical_feature_mask.2XXaH7FY.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/vertical_feature_mask.md","filePath":"examples/geo/vertical_feature_mask.md","lastUpdated":null}'),n={name:"examples/geo/vertical_feature_mask.md"},l=h('

vertical 3d band over map

julia
using GLMakie, GeoMakie
+using Downloads: download
+using FileIO
+GLMakie.activate!()
+
+earth_img = load(download("https://upload.wikimedia.org/wikipedia/commons/5/56/Blue_Marble_Next_Generation_%2B_topography_%2B_bathymetry.jpg"))
+
+fig = Figure(; size=(800, 400), fontsize=22)
+ax = LScene(fig[1,1])
+lines!(ax, GeoMakie.coastlines(), transparency=true)
+lines!(ax, GeoMakie.coastlines()[95], color=:red, linewidth=5, transparency=true)
+image!(ax, -180..180, -90..90, earth_img'[:,end:-1:1])
+fig
+
+idx_l = findmax(length.(GeoMakie.coastlines()))
+longpath = GeoMakie.coastlines()[idx_l[2]]
+@show idx_l
+
+
+linepath = Point3f[]
+for p in longpath
+    push!(linepath, Point3f(p[1]..., 0))
+    push!(linepath, Point3f(p[1]..., 0))
+end
+
+linepathh = Point3f[]
+for p in longpath
+    push!(linepathh, Point3f(p[1]..., 20))
+    push!(linepathh, Point3f(p[1]..., 20))
+end
+
+fig = Figure(size=(800, 400), fontsize=22)
+ax = LScene(fig[1,1]; show_axis=false)
+lines!(ax, GeoMakie.coastlines(), transparency=true, color=:white)
+lines!(ax, linepath, color = :orangered, linewidth=2.5, transparency=true)
+lines!(ax, linepathh, color = :white, linewidth=2.5, transparency=true)
+band!(ax, linepath, linepathh, color = repeat(1:1384,outer=2), transparency=true)
+image!(ax, -180..180, -90..90, earth_img'[:,end:-1:1])
+rotate!(ax.scene, 2*pi/2.6)
+fig
+zoom!(ax.scene, cameracontrols(ax.scene), 30)
+# center!(ax.scene)
idx_l = (692, 95)
`,4),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.lean.js b/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.lean.js new file mode 100644 index 00000000..caf4c2dc --- /dev/null +++ b/previews/PR54/assets/examples_geo_vertical_feature_mask.md.CMtLHglf.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/vertical_feature_mask.2XXaH7FY.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/geo/vertical_feature_mask.md","filePath":"examples/geo/vertical_feature_mask.md","lastUpdated":null}'),n={name:"examples/geo/vertical_feature_mask.md"},l=h("",4),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(n,[["render",t]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.js b/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.js new file mode 100644 index 00000000..a3cec585 --- /dev/null +++ b/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a6 as r}from"./chunks/framework.uXlnTO8a.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/rpr/sphere_plane.md","filePath":"examples/rpr/sphere_plane.md","lastUpdated":null}'),o={name:"examples/rpr/sphere_plane.md"},t=r('

Info

Transfering examples from here https://github.com/lazarusA/RPRMakieNotes

using GLMakie, GeometryBasics using RPRMakie, RadeonProRender using LinearAlgebra, Colors, FileIO

background/sky color

img = [colorant"grey90" for i in 1:1, j in 1:1]

color as an array/image, hence a normal image also works

lights = [EnvironmentLight(1.0, img'), PointLight(Vec3f(2,0,2.0), RGBf(8.0, 6.0, 5.0))]

custom Tesselation over an Sphere

function SphereTess(; o=Point3f(0), r=1, tess=64) return uv_normal_mesh(Tesselation(Sphere(o, r), tess)) end plane = Rect3f(Vec3f(-5,-2,-1.05), Vec3f(10,4,0.05))

the actual figure

fig=Figure(; size=(900, 900)) ax=LScene(fig[1, 1]; show_axis=false, scenekw=(;lights=lights)) screen=RPRMakie.RPRScreen(size(ax.scene); plugin=RPR.Northstar, iterations=250) matsys=screen.matsys mesh!(ax, SphereTess(); color=RGB(0.082, 0.643, 0.918), material=RPR.DiffuseMaterial(matsys)) mesh!(ax, plane; color=:gainsboro, material=RPR.DiffuseMaterial(matsys))

GLMakie.activate!() zoom!(ax.scene, cameracontrols(ax.scene), 0.22) display(fig) context, task = RPRMakie.replace_scene_rpr!(ax.scene, screen) nothing # avoid printing stuff into the repl imageOut = colorbuffer(screen)

save("SpherePlaneSky.png", imageOut) # save just screen scene.

Warning

This only works under windows and linux.

',14),n=[t];function i(l,c,u,p,h,m){return s(),a("div",null,n)}const k=e(o,[["render",i]]);export{d as __pageData,k as default}; diff --git a/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.lean.js b/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.lean.js new file mode 100644 index 00000000..edb33e47 --- /dev/null +++ b/previews/PR54/assets/examples_rpr_sphere_plane.md.Da6-qWUX.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a6 as r}from"./chunks/framework.uXlnTO8a.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/rpr/sphere_plane.md","filePath":"examples/rpr/sphere_plane.md","lastUpdated":null}'),o={name:"examples/rpr/sphere_plane.md"},t=r("",14),n=[t];function i(l,c,u,p,h,m){return s(),a("div",null,n)}const k=e(o,[["render",i]]);export{d as __pageData,k as default}; diff --git a/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.js b/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.js new file mode 100644 index 00000000..bdf056d6 --- /dev/null +++ b/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as k}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/black_epicycloid.BEXQJ_cv.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/black_epicycloid.md","filePath":"examples/themes/black_epicycloid.md","lastUpdated":null}'),n={name:"examples/themes/black_epicycloid.md"},l=k('

Black theme

julia
using CairoMakie
+
+function EpicycloidLines()
+    ecycl_x(r, k, θ) = r * (k .+ 1) .* cos.(θ) .- r * cos.((k .+ 1) .* θ)
+    ecycl_y(r, k, θ) = r * (k .+ 1) .* sin.(θ) .- r * sin.((k .+ 1) .* θ)
+    θ = LinRange(0, 6.2π, 1000)
+    tronLegacy = ["#FF410DFF", "#6EE2FFFF", "#F7C530FF", "#95CC5EFF",
+        "#D0DFE6FF", "#F79D1EFF", "#748AA6FF"]
+
+    fig = Figure(size = (600, 400), fonts = (; regular="sans"))
+    ax = Axis(fig[1, 1], aspect = 1, title = "Epicycloid",
+        xlabel = "x(θ) = r(k+1)cos(θ) -rcos((k+1)θ)",
+        ylabel = "y(θ) = r(k+1)cos(θ) -rcos((k+1)θ)")
+    [lines!(ecycl_x(2k, k, θ), ecycl_y(2k, k, θ), linewidth = 1.5, label = "$(k)",
+        color = tronLegacy[indx]) for (indx, k) in enumerate(2:0.5:5)]
+    Legend(fig[1, 2], ax, "k , r = 2k")
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+fig = with_theme(EpicycloidLines, theme_black())
`,3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.lean.js b/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.lean.js new file mode 100644 index 00000000..7c483764 --- /dev/null +++ b/previews/PR54/assets/examples_themes_black_epicycloid.md.DLfBjASC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as k}from"./chunks/framework.uXlnTO8a.js";const h="/previews/PR54/assets/black_epicycloid.BEXQJ_cv.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/black_epicycloid.md","filePath":"examples/themes/black_epicycloid.md","lastUpdated":null}'),n={name:"examples/themes/black_epicycloid.md"},l=k("",3),t=[l];function p(E,e,r,d,g,y){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.js b/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.js new file mode 100644 index 00000000..78772a0f --- /dev/null +++ b/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.js @@ -0,0 +1,32 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/dark_surface_contour3d_streamplot.DTrU1ZsL.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/dark_surface_contour3d_streamplot.md","filePath":"examples/themes/dark_surface_contour3d_streamplot.md","lastUpdated":null}'),n={name:"examples/themes/dark_surface_contour3d_streamplot.md"},l=h('

Dark theme

julia
# example modified from  mthelm85
+using GLMakie, ForwardDiff
+GLMakie.activate!()
+f(x, y) = -5 * x * y * exp(-x^2 - y^2)
+x = y = -1:0.05:1.0
+z = [f(i, j) for i in x, j in y];
+# This is the same function as above, just modified so that it will
+# work with ForwardDiff
+g(x, y) = [-5 * x * y * exp(-x^2 - y^2)]
+J(xx, yy) = ForwardDiff.jacobian(x -> g(x[1], x[2]), [xx, yy])
+field(i, j) = Point2f(J(i, j)[1], J(i, j)[2])
+
+zmin, zmax = minimum(z), maximum(z)
+cmap = :viridis
+function plot()
+    fig = Figure(size = (1200, 800))
+    ax1 = Axis3(fig[1, 1], aspect = (1, 1, 1), perspectiveness = 0.5,
+        elevation = π / 3.5, azimuth = 0.1π,)
+    ax2 = Axis(fig[1, 2], aspect = DataAspect(), xlabel = "x", ylabel = "y")
+    surface!(ax1, x, y, z; colormap = cmap, colorrange = (zmin, zmax),
+        transparency = true)
+    contour3d!(ax1, x, y, z .+ 0.005; levels = 15, linewidth = 2, color = :white,
+        transparency = true)
+    wireframe!(ax1, x, y, z; color = (:black, 0.1),
+        transparency = true)
+    streamplot!(ax1, field, -1 .. 1, -1 .. 1; colormap = cmap, gridsize = (40, 40),
+        arrow_size = 15, linewidth = 1, transformation = (:xy, -zmax))
+    streamplot!(ax2, field, -1 .. 1, -1 .. 1; colormap = cmap, gridsize = (40, 40),
+        arrow_size = 15, linewidth = 1)
+    fig
+end
+fig = with_theme(plot, theme_dark())
`,3),t=[l];function p(E,e,r,d,y,g){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.lean.js b/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.lean.js new file mode 100644 index 00000000..08f82e3f --- /dev/null +++ b/previews/PR54/assets/examples_themes_dark_surface_contour3d_streamplot.md.C4tC7kgh.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/dark_surface_contour3d_streamplot.DTrU1ZsL.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/dark_surface_contour3d_streamplot.md","filePath":"examples/themes/dark_surface_contour3d_streamplot.md","lastUpdated":null}'),n={name:"examples/themes/dark_surface_contour3d_streamplot.md"},l=h("",3),t=[l];function p(E,e,r,d,y,g){return a(),i("div",null,t)}const c=s(n,[["render",p]]);export{C as __pageData,c as default}; diff --git a/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.js b/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.js new file mode 100644 index 00000000..767fe365 --- /dev/null +++ b/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ggplot2_stem.BwsSp4Ww.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/ggplot2_stem.md","filePath":"examples/themes/ggplot2_stem.md","lastUpdated":null}'),n={name:"examples/themes/ggplot2_stem.md"},t=h('

ggplot2 theme

julia
using CairoMakie, Random
+Random.seed!(2)
+t = 0.3:0.3:
+my_markers = [:circle, :rect, :utriangle, :dtriangle, :diamond, :pentagon,
+    :cross, :xcross]
+with_theme(theme_ggplot2()) do
+    fig, ax, = stem(t, 1.5exp.(-t/5).*cos.(t); color = 1:length(t),
+        colormap = :linear_wyor_100_45_c55_n256, stemcolor = 1:length(t),
+        stemcolormap = :linear_wcmr_100_45_c42_n256,
+        figure = (; size = (600,400)))
+    stem!(t .+ 0.15, -cos.(t) ./ t .+ 0.25; color = :transparent,
+        stemwidth = 0.5, marker = :rect, markersize = 10, strokewidth = 1,
+        strokecolor = :black)
+    stem!(1:8, 1.5randn(8); marker = my_markers,
+        color = tuple.(resample_cmap(:mk_12, 8), 0.65), stemlinestyle = :dash,
+        stemcolor = resample_cmap(:mk_12, 8), markersize = 15*rand(8) .+ 10,
+        strokewidth = 1.5, strokecolor = resample_cmap(:mk_12, 8))
+    hidedecorations!(ax; grid = false)
+    fig
+end
`,3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.lean.js b/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.lean.js new file mode 100644 index 00000000..c2cf9083 --- /dev/null +++ b/previews/PR54/assets/examples_themes_ggplot2_stem.md.BsTSMJl_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/ggplot2_stem.BwsSp4Ww.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/ggplot2_stem.md","filePath":"examples/themes/ggplot2_stem.md","lastUpdated":null}'),n={name:"examples/themes/ggplot2_stem.md"},t=h("",3),l=[t];function p(e,E,r,d,g,y){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.js b/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.js new file mode 100644 index 00000000..1960a6b3 --- /dev/null +++ b/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/light_ngon.sAA0-2gT.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/light_ngon.md","filePath":"examples/themes/light_ngon.md","lastUpdated":null}'),n={name:"examples/themes/light_ngon.md"},l=h('

light theme

julia
using CairoMakie, GeometryBasics
+
+n = 20
+function ngonShape(h, k, r, n)
+    Polygon([Point2f(h .+ r * sin.(m * / n), k .+ r * cos.(m * / n)) for m in 1:n])
+end
+polysCentric = [ngonShape(0, 0, 3 / i^1.5, i) for i in 3:n]
+polysCircular = [ngonShape(2 / 2 * sin(θ), 2 / 2 * cos(θ), 0.15 /idx, idx + 2)
+                    for (idx, θ) in enumerate(LinRange(0,  * (1 - 1 / (n - 2)), n - 2))]
+cmap = cgrad(:Homer1, n)
+
+with_theme(theme_light()) do
+    fig, ax, = poly(polysCentric; color = 1:n-2, colormap = cmap,
+        axis = (; aspect = DataAspect()), figure = (; size = (600, 400)))
+    poly!(polysCircular; color = 1:n-2, colormap = cmap)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
`,3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.lean.js b/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.lean.js new file mode 100644 index 00000000..7a7d62c1 --- /dev/null +++ b/previews/PR54/assets/examples_themes_light_ngon.md._tr35OQx.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/light_ngon.sAA0-2gT.svg",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/light_ngon.md","filePath":"examples/themes/light_ngon.md","lastUpdated":null}'),n={name:"examples/themes/light_ngon.md"},l=h("",3),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.js b/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.js new file mode 100644 index 00000000..bbf7b298 --- /dev/null +++ b/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.js @@ -0,0 +1,20 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/minimal_series._kWBdz9f.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/minimal_series.md","filePath":"examples/themes/minimal_series.md","lastUpdated":null}'),n={name:"examples/themes/minimal_series.md"},l=h('

minimal theme

julia
using CairoMakie, Random, LaTeXStrings
+
+Random.seed!(123)
+m = 200
+function spiral(; a = 1, n = 100, h = 0, k = 0)
+    φ = LinRange(rand() + 1, , n)
+    h .+ rand(-1:2:1) * a * cos.(φ) ./ φ, k .+ rand(-1:2:1) * a * sin.(φ) ./ φ
+end
+x = raw"x=a\\,\\cos(\\varphi)/\\varphi,\\quad "
+y = raw"y=a\\,\\sin(\\varphi)/\\varphi,\\quad "
+curves = [spiral(; a = rand(), h = rand(-1:1)) for i in 1:m]
+
+with_theme(theme_minimal()) do
+    fig = Figure(size = (600, 400))
+    ax = Axis(fig[1, 1])
+    series!(curves; color = categorical_colors(:inferno, m), linewidth = 1.5)
+    text!(latexstring(x * y * "\\\\varphi>0"), position = (-1, -1))
+    hidedecorations!(ax; grid = false)
+    fig
+end
`,3),t=[l];function p(e,E,r,d,F,g){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.lean.js b/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.lean.js new file mode 100644 index 00000000..ff1e1a8e --- /dev/null +++ b/previews/PR54/assets/examples_themes_minimal_series.md.Br6kYRwR.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a6 as h}from"./chunks/framework.uXlnTO8a.js";const k="/previews/PR54/assets/minimal_series._kWBdz9f.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"examples/themes/minimal_series.md","filePath":"examples/themes/minimal_series.md","lastUpdated":null}'),n={name:"examples/themes/minimal_series.md"},l=h("",3),t=[l];function p(e,E,r,d,F,g){return a(),i("div",null,t)}const B=s(n,[["render",p]]);export{C as __pageData,B as default}; diff --git a/previews/PR54/assets/field_heatmap.BZaGa3-3.png b/previews/PR54/assets/field_heatmap.BZaGa3-3.png new file mode 100644 index 00000000..fcf313b2 Binary files /dev/null and b/previews/PR54/assets/field_heatmap.BZaGa3-3.png differ diff --git a/previews/PR54/assets/filled_under.Dbe-bbr6.svg b/previews/PR54/assets/filled_under.Dbe-bbr6.svg new file mode 100644 index 00000000..92d5b552 --- /dev/null +++ b/previews/PR54/assets/filled_under.Dbe-bbr6.svg @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/filled_under_bell.DJyWrU2m.svg b/previews/PR54/assets/filled_under_bell.DJyWrU2m.svg new file mode 100644 index 00000000..a09e7864 --- /dev/null +++ b/previews/PR54/assets/filled_under_bell.DJyWrU2m.svg @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/fmlnuia.Bf7H0gvx.png b/previews/PR54/assets/fmlnuia.Bf7H0gvx.png new file mode 100644 index 00000000..a83ba52a Binary files /dev/null and b/previews/PR54/assets/fmlnuia.Bf7H0gvx.png differ diff --git a/previews/PR54/assets/gabriels_horn.DQuxM7BK.png b/previews/PR54/assets/gabriels_horn.DQuxM7BK.png new file mode 100644 index 00000000..ef518d84 Binary files /dev/null and b/previews/PR54/assets/gabriels_horn.DQuxM7BK.png differ diff --git a/previews/PR54/assets/gauss2d.DyL4MPwL.png b/previews/PR54/assets/gauss2d.DyL4MPwL.png new file mode 100644 index 00000000..befa1acf Binary files /dev/null and b/previews/PR54/assets/gauss2d.DyL4MPwL.png differ diff --git a/previews/PR54/assets/gfield.DnZEoprq.png b/previews/PR54/assets/gfield.DnZEoprq.png new file mode 100644 index 00000000..b71bb60e Binary files /dev/null and b/previews/PR54/assets/gfield.DnZEoprq.png differ diff --git a/previews/PR54/assets/ggplot2_stem.BwsSp4Ww.svg b/previews/PR54/assets/ggplot2_stem.BwsSp4Ww.svg new file mode 100644 index 00000000..cf154b72 --- /dev/null +++ b/previews/PR54/assets/ggplot2_stem.BwsSp4Ww.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/glbllbq.DT4knYOH.jpeg b/previews/PR54/assets/glbllbq.DT4knYOH.jpeg new file mode 100644 index 00000000..82897cee Binary files /dev/null and b/previews/PR54/assets/glbllbq.DT4knYOH.jpeg differ diff --git a/previews/PR54/assets/gravities.DLPLyucX.mp4 b/previews/PR54/assets/gravities.DLPLyucX.mp4 new file mode 100644 index 00000000..61eaf714 Binary files /dev/null and b/previews/PR54/assets/gravities.DLPLyucX.mp4 differ diff --git a/previews/PR54/assets/hcltfbw.ivXtw0gS.jpeg b/previews/PR54/assets/hcltfbw.ivXtw0gS.jpeg new file mode 100644 index 00000000..ef1052c9 Binary files /dev/null and b/previews/PR54/assets/hcltfbw.ivXtw0gS.jpeg differ diff --git a/previews/PR54/assets/heatmap.Cc7vraBM.svg b/previews/PR54/assets/heatmap.Cc7vraBM.svg new file mode 100644 index 00000000..31ae1ba0 --- /dev/null +++ b/previews/PR54/assets/heatmap.Cc7vraBM.svg @@ -0,0 +1,625 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/heatmap1SharedCbar.Nw3gfKZA.png b/previews/PR54/assets/heatmap1SharedCbar.Nw3gfKZA.png new file mode 100644 index 00000000..bbf825e2 Binary files /dev/null and b/previews/PR54/assets/heatmap1SharedCbar.Nw3gfKZA.png differ diff --git a/previews/PR54/assets/heatmap2SharedCbars.DF0fnePj.png b/previews/PR54/assets/heatmap2SharedCbars.DF0fnePj.png new file mode 100644 index 00000000..de9022ac Binary files /dev/null and b/previews/PR54/assets/heatmap2SharedCbars.DF0fnePj.png differ diff --git a/previews/PR54/assets/heatmapCbarBottom.D5z-tnD6.png b/previews/PR54/assets/heatmapCbarBottom.D5z-tnD6.png new file mode 100644 index 00000000..f42c5839 Binary files /dev/null and b/previews/PR54/assets/heatmapCbarBottom.D5z-tnD6.png differ diff --git a/previews/PR54/assets/heatmapCbarLeft.Dmjije-0.png b/previews/PR54/assets/heatmapCbarLeft.Dmjije-0.png new file mode 100644 index 00000000..10dd2b14 Binary files /dev/null and b/previews/PR54/assets/heatmapCbarLeft.Dmjije-0.png differ diff --git a/previews/PR54/assets/heatmapCbarTop.nC1rSgEE.png b/previews/PR54/assets/heatmapCbarTop.nC1rSgEE.png new file mode 100644 index 00000000..9c6eb41d Binary files /dev/null and b/previews/PR54/assets/heatmapCbarTop.nC1rSgEE.png differ diff --git a/previews/PR54/assets/heatmapGrid.CVDB_Wjf.png b/previews/PR54/assets/heatmapGrid.CVDB_Wjf.png new file mode 100644 index 00000000..fac96867 Binary files /dev/null and b/previews/PR54/assets/heatmapGrid.CVDB_Wjf.png differ diff --git a/previews/PR54/assets/heatmapIrregular.Bc4nFQp6.png b/previews/PR54/assets/heatmapIrregular.Bc4nFQp6.png new file mode 100644 index 00000000..3319462f Binary files /dev/null and b/previews/PR54/assets/heatmapIrregular.Bc4nFQp6.png differ diff --git a/previews/PR54/assets/heatmapIrregularCategories.FpicX_rN.png b/previews/PR54/assets/heatmapIrregularCategories.FpicX_rN.png new file mode 100644 index 00000000..581eca33 Binary files /dev/null and b/previews/PR54/assets/heatmapIrregularCategories.FpicX_rN.png differ diff --git a/previews/PR54/assets/heatmapLogIrregular.CJz-dPRE.png b/previews/PR54/assets/heatmapLogIrregular.CJz-dPRE.png new file mode 100644 index 00000000..bd956c9e Binary files /dev/null and b/previews/PR54/assets/heatmapLogIrregular.CJz-dPRE.png differ diff --git a/previews/PR54/assets/heatmapScaleAdd.DA574yQu.png b/previews/PR54/assets/heatmapScaleAdd.DA574yQu.png new file mode 100644 index 00000000..bb098bce Binary files /dev/null and b/previews/PR54/assets/heatmapScaleAdd.DA574yQu.png differ diff --git a/previews/PR54/assets/heatmapScaleCrosshair.BmV0sGWo.png b/previews/PR54/assets/heatmapScaleCrosshair.BmV0sGWo.png new file mode 100644 index 00000000..553cd8a3 Binary files /dev/null and b/previews/PR54/assets/heatmapScaleCrosshair.BmV0sGWo.png differ diff --git a/previews/PR54/assets/heatmapScaleDetail.DeZXsgBV.png b/previews/PR54/assets/heatmapScaleDetail.DeZXsgBV.png new file mode 100644 index 00000000..3923bfa2 Binary files /dev/null and b/previews/PR54/assets/heatmapScaleDetail.DeZXsgBV.png differ diff --git a/previews/PR54/assets/heatmapScaleSections.WszVDNV2.png b/previews/PR54/assets/heatmapScaleSections.WszVDNV2.png new file mode 100644 index 00000000..83fc3181 Binary files /dev/null and b/previews/PR54/assets/heatmapScaleSections.WszVDNV2.png differ diff --git a/previews/PR54/assets/heatmapxyz.xn9z1Wg5.png b/previews/PR54/assets/heatmapxyz.xn9z1Wg5.png new file mode 100644 index 00000000..0d14cb93 Binary files /dev/null and b/previews/PR54/assets/heatmapxyz.xn9z1Wg5.png differ diff --git a/previews/PR54/assets/hfqhyjp.J15-B7rN.jpeg b/previews/PR54/assets/hfqhyjp.J15-B7rN.jpeg new file mode 100644 index 00000000..04221b67 Binary files /dev/null and b/previews/PR54/assets/hfqhyjp.J15-B7rN.jpeg differ diff --git a/previews/PR54/assets/hist.JT53S_r1.svg b/previews/PR54/assets/hist.JT53S_r1.svg new file mode 100644 index 00000000..b7186bed --- /dev/null +++ b/previews/PR54/assets/hist.JT53S_r1.svg @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/hist_pdf.RD8WiaKy.svg b/previews/PR54/assets/hist_pdf.RD8WiaKy.svg new file mode 100644 index 00000000..b65af898 --- /dev/null +++ b/previews/PR54/assets/hist_pdf.RD8WiaKy.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/hists_on_the_sides.D7oyJ4uc.svg b/previews/PR54/assets/hists_on_the_sides.D7oyJ4uc.svg new file mode 100644 index 00000000..582349d5 --- /dev/null +++ b/previews/PR54/assets/hists_on_the_sides.D7oyJ4uc.svg @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/hkkcgev.BebzF6wl.png b/previews/PR54/assets/hkkcgev.BebzF6wl.png new file mode 100644 index 00000000..f5ac6662 Binary files /dev/null and b/previews/PR54/assets/hkkcgev.BebzF6wl.png differ diff --git a/previews/PR54/assets/hnwpnuu.D3B7DZwm.png b/previews/PR54/assets/hnwpnuu.D3B7DZwm.png new file mode 100644 index 00000000..1943abee Binary files /dev/null and b/previews/PR54/assets/hnwpnuu.D3B7DZwm.png differ diff --git a/previews/PR54/assets/ibfpfss.CVI-3PhA.jpeg b/previews/PR54/assets/ibfpfss.CVI-3PhA.jpeg new file mode 100644 index 00000000..99773b31 Binary files /dev/null and b/previews/PR54/assets/ibfpfss.CVI-3PhA.jpeg differ diff --git a/previews/PR54/assets/ijnfkvz.CgsBI9P2.png b/previews/PR54/assets/ijnfkvz.CgsBI9P2.png new file mode 100644 index 00000000..e5cb34cc Binary files /dev/null and b/previews/PR54/assets/ijnfkvz.CgsBI9P2.png differ diff --git a/previews/PR54/assets/imvitmb.B5XNrER3.png b/previews/PR54/assets/imvitmb.B5XNrER3.png new file mode 100644 index 00000000..c4a04754 Binary files /dev/null and b/previews/PR54/assets/imvitmb.B5XNrER3.png differ diff --git a/previews/PR54/assets/index.md.BEMx_znn.js b/previews/PR54/assets/index.md.BEMx_znn.js new file mode 100644 index 00000000..8d7a058e --- /dev/null +++ b/previews/PR54/assets/index.md.BEMx_znn.js @@ -0,0 +1 @@ +import{d as r,o as s,c as t,j as a,k as p,g as d,t as l,_ as c,F as m,E as _,b as h,M as u,I as f}from"./chunks/framework.uXlnTO8a.js";const g={class:"img-box"},x=["href"],v=["src"],k={class:"transparent-box"},b={class:"caption"},y={class:"opacity-low"},w=r({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(i){return(e,n)=>(s(),t("div",g,[a("a",{href:e.href},[a("img",{src:p(d)(e.src),alt:""},null,8,v),a("div",k,[a("div",b,[a("p",null,l(e.caption),1),a("p",y,l(e.desc),1)])])],8,x)]))}}),M=c(w,[["__scopeId","data-v-757074f4"]]),G={class:"gallery-image"},B=r({__name:"Gallery",props:{images:{}},setup(i){return(e,n)=>(s(),t("div",G,[(s(!0),t(m,null,_(e.images,o=>(s(),h(M,u({ref_for:!0},o),null,16))),256))]))}}),D=c(B,[["__scopeId","data-v-afefdd6c"]]),R=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Beautiful Makie","tagline":"Example plots","image":{"src":"/test_alpha_s.png","alt":"gfield"},"actions":[{"theme":"brand","text":"Sponsor","link":"https://github.com/sponsors/lazarusA?o=esb"},{"theme":"alt","text":"View on Github","link":"https://github.com/MakieOrg/BeautifulMakie"},{"theme":"alt","text":"Official Documentation","link":"https://docs.makie.org/stable/"}]},"features":[{"title":"What is Makie?","details":"Makie is an interactive data visualization and plotting ecosystem for the Julia programming language, available on Windows, Linux and Mac. You can use Makie to interactively explore your data and create simple GUIs in native windows or web browsers, export high-quality vector graphics or even raytrace with physically accurate lightning."},{"title":"Inspiration","details":"The name Makie (we pronounce it Mah-kee) is derived from the japanese word 蒔絵, which is a technique to sprinkle lacquer with gold and silver powder. Data is the gold and silver of our age, so let's spread it out beautifully on the screen!
- Simon Danisch -"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),I={name:"index.md"},q=r({...I,setup(i){const e=[{href:"examples/animations/scatter_size",src:"animScatters.mp4"},{href:"examples/2d/lines/line_latex_bessels",src:"line_latex_bessels.svg"},{href:"examples/2d/lines/line_cmaps_a",src:"line_cmaps_a.svg"},{href:"examples/2d/streamplot/streamplot",src:"streamplot.png"},{href:"examples/3d/contour3d/contourf_contour3d",src:"contourf_contour3d.png"},{href:"examples/3d/lines3d/archimedean_spiral",src:"archimedean_spiral.png"},{href:"examples/3d/meshes/meshes",src:"meshes.png"},{href:"examples/3d/mscatters/RRGraph3D",src:"RRGraph3D.png"},{href:"examples/themes/dark_surface_contour3d_streamplot",src:"dark_surface_contour3d_streamplot.png"}];return(n,o)=>(s(),t("div",null,[f(D,{images:e})]))}});export{R as __pageData,q as default}; diff --git a/previews/PR54/assets/index.md.BEMx_znn.lean.js b/previews/PR54/assets/index.md.BEMx_znn.lean.js new file mode 100644 index 00000000..8d7a058e --- /dev/null +++ b/previews/PR54/assets/index.md.BEMx_znn.lean.js @@ -0,0 +1 @@ +import{d as r,o as s,c as t,j as a,k as p,g as d,t as l,_ as c,F as m,E as _,b as h,M as u,I as f}from"./chunks/framework.uXlnTO8a.js";const g={class:"img-box"},x=["href"],v=["src"],k={class:"transparent-box"},b={class:"caption"},y={class:"opacity-low"},w=r({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(i){return(e,n)=>(s(),t("div",g,[a("a",{href:e.href},[a("img",{src:p(d)(e.src),alt:""},null,8,v),a("div",k,[a("div",b,[a("p",null,l(e.caption),1),a("p",y,l(e.desc),1)])])],8,x)]))}}),M=c(w,[["__scopeId","data-v-757074f4"]]),G={class:"gallery-image"},B=r({__name:"Gallery",props:{images:{}},setup(i){return(e,n)=>(s(),t("div",G,[(s(!0),t(m,null,_(e.images,o=>(s(),h(M,u({ref_for:!0},o),null,16))),256))]))}}),D=c(B,[["__scopeId","data-v-afefdd6c"]]),R=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Beautiful Makie","tagline":"Example plots","image":{"src":"/test_alpha_s.png","alt":"gfield"},"actions":[{"theme":"brand","text":"Sponsor","link":"https://github.com/sponsors/lazarusA?o=esb"},{"theme":"alt","text":"View on Github","link":"https://github.com/MakieOrg/BeautifulMakie"},{"theme":"alt","text":"Official Documentation","link":"https://docs.makie.org/stable/"}]},"features":[{"title":"What is Makie?","details":"Makie is an interactive data visualization and plotting ecosystem for the Julia programming language, available on Windows, Linux and Mac. You can use Makie to interactively explore your data and create simple GUIs in native windows or web browsers, export high-quality vector graphics or even raytrace with physically accurate lightning."},{"title":"Inspiration","details":"The name Makie (we pronounce it Mah-kee) is derived from the japanese word 蒔絵, which is a technique to sprinkle lacquer with gold and silver powder. Data is the gold and silver of our age, so let's spread it out beautifully on the screen!
- Simon Danisch -"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),I={name:"index.md"},q=r({...I,setup(i){const e=[{href:"examples/animations/scatter_size",src:"animScatters.mp4"},{href:"examples/2d/lines/line_latex_bessels",src:"line_latex_bessels.svg"},{href:"examples/2d/lines/line_cmaps_a",src:"line_cmaps_a.svg"},{href:"examples/2d/streamplot/streamplot",src:"streamplot.png"},{href:"examples/3d/contour3d/contourf_contour3d",src:"contourf_contour3d.png"},{href:"examples/3d/lines3d/archimedean_spiral",src:"archimedean_spiral.png"},{href:"examples/3d/meshes/meshes",src:"meshes.png"},{href:"examples/3d/mscatters/RRGraph3D",src:"RRGraph3D.png"},{href:"examples/themes/dark_surface_contour3d_streamplot",src:"dark_surface_contour3d_streamplot.png"}];return(n,o)=>(s(),t("div",null,[f(D,{images:e})]))}});export{R as __pageData,q as default}; diff --git a/previews/PR54/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/previews/PR54/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 00000000..b6b603d5 Binary files /dev/null and b/previews/PR54/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/previews/PR54/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/previews/PR54/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 00000000..def40a4f Binary files /dev/null and b/previews/PR54/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/previews/PR54/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/previews/PR54/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 00000000..e070c3d3 Binary files /dev/null and b/previews/PR54/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/previews/PR54/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/previews/PR54/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 00000000..a3c16ca4 Binary files /dev/null and b/previews/PR54/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/previews/PR54/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/previews/PR54/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 00000000..2210a899 Binary files /dev/null and b/previews/PR54/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/previews/PR54/assets/inter-italic-latin.C2AdPX0b.woff2 b/previews/PR54/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 00000000..790d62dc Binary files /dev/null and b/previews/PR54/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/previews/PR54/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/previews/PR54/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 00000000..1eec0775 Binary files /dev/null and b/previews/PR54/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/previews/PR54/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/previews/PR54/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 00000000..2cfe6153 Binary files /dev/null and b/previews/PR54/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/previews/PR54/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/previews/PR54/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 00000000..e3886dd1 Binary files /dev/null and b/previews/PR54/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/previews/PR54/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/previews/PR54/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 00000000..36d67487 Binary files /dev/null and b/previews/PR54/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/previews/PR54/assets/inter-roman-greek.BBVDIX6e.woff2 b/previews/PR54/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 00000000..2bed1e85 Binary files /dev/null and b/previews/PR54/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/previews/PR54/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/previews/PR54/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 00000000..9a8d1e2b Binary files /dev/null and b/previews/PR54/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/previews/PR54/assets/inter-roman-latin.Di8DUHzh.woff2 b/previews/PR54/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 00000000..07d3c53a Binary files /dev/null and b/previews/PR54/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/previews/PR54/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/previews/PR54/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 00000000..57bdc22a Binary files /dev/null and b/previews/PR54/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/previews/PR54/assets/iolovqf.BYZPzpbw.png b/previews/PR54/assets/iolovqf.BYZPzpbw.png new file mode 100644 index 00000000..bf1bd4f6 Binary files /dev/null and b/previews/PR54/assets/iolovqf.BYZPzpbw.png differ diff --git a/previews/PR54/assets/iris_dataset.D5swsStg.svg b/previews/PR54/assets/iris_dataset.D5swsStg.svg new file mode 100644 index 00000000..b2a7c6f6 --- /dev/null +++ b/previews/PR54/assets/iris_dataset.D5swsStg.svg @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/isosurfaces.Bj_BRZD7.png b/previews/PR54/assets/isosurfaces.Bj_BRZD7.png new file mode 100644 index 00000000..6ee89fe5 Binary files /dev/null and b/previews/PR54/assets/isosurfaces.Bj_BRZD7.png differ diff --git a/previews/PR54/assets/jqaimhg.qD1NqCDj.jpeg b/previews/PR54/assets/jqaimhg.qD1NqCDj.jpeg new file mode 100644 index 00000000..8b7a513c Binary files /dev/null and b/previews/PR54/assets/jqaimhg.qD1NqCDj.jpeg differ diff --git a/previews/PR54/assets/klein_bottle.DPxnqpCz.png b/previews/PR54/assets/klein_bottle.DPxnqpCz.png new file mode 100644 index 00000000..ffef5313 Binary files /dev/null and b/previews/PR54/assets/klein_bottle.DPxnqpCz.png differ diff --git a/previews/PR54/assets/kvmbvhh.CMrTmJMG.png b/previews/PR54/assets/kvmbvhh.CMrTmJMG.png new file mode 100644 index 00000000..cc82e5af Binary files /dev/null and b/previews/PR54/assets/kvmbvhh.CMrTmJMG.png differ diff --git a/previews/PR54/assets/leos.BnTHRQ-6.png b/previews/PR54/assets/leos.BnTHRQ-6.png new file mode 100644 index 00000000..614def33 Binary files /dev/null and b/previews/PR54/assets/leos.BnTHRQ-6.png differ diff --git a/previews/PR54/assets/light_ngon.sAA0-2gT.svg b/previews/PR54/assets/light_ngon.sAA0-2gT.svg new file mode 100644 index 00000000..fac59349 --- /dev/null +++ b/previews/PR54/assets/light_ngon.sAA0-2gT.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line3d.B-B_MeBF.png b/previews/PR54/assets/line3d.B-B_MeBF.png new file mode 100644 index 00000000..370e7334 Binary files /dev/null and b/previews/PR54/assets/line3d.B-B_MeBF.png differ diff --git a/previews/PR54/assets/line_cmap.CDpK5eSK.png b/previews/PR54/assets/line_cmap.CDpK5eSK.png new file mode 100644 index 00000000..531710f4 Binary files /dev/null and b/previews/PR54/assets/line_cmap.CDpK5eSK.png differ diff --git a/previews/PR54/assets/line_cmaps.Bb2TeCgU.png b/previews/PR54/assets/line_cmaps.Bb2TeCgU.png new file mode 100644 index 00000000..ec89d840 Binary files /dev/null and b/previews/PR54/assets/line_cmaps.Bb2TeCgU.png differ diff --git a/previews/PR54/assets/line_cmaps_a.DAQLqIfx.png b/previews/PR54/assets/line_cmaps_a.DAQLqIfx.png new file mode 100644 index 00000000..1216cc30 Binary files /dev/null and b/previews/PR54/assets/line_cmaps_a.DAQLqIfx.png differ diff --git a/previews/PR54/assets/line_colored.Xxpkj9y9.svg b/previews/PR54/assets/line_colored.Xxpkj9y9.svg new file mode 100644 index 00000000..c8a214e0 --- /dev/null +++ b/previews/PR54/assets/line_colored.Xxpkj9y9.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_colored_cbar.CIMEORzb.png b/previews/PR54/assets/line_colored_cbar.CIMEORzb.png new file mode 100644 index 00000000..f3320232 Binary files /dev/null and b/previews/PR54/assets/line_colored_cbar.CIMEORzb.png differ diff --git a/previews/PR54/assets/line_inset.CWa6zyho.svg b/previews/PR54/assets/line_inset.CWa6zyho.svg new file mode 100644 index 00000000..23cfa132 --- /dev/null +++ b/previews/PR54/assets/line_inset.CWa6zyho.svg @@ -0,0 +1,477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_inset_h.BxcINalx.svg b/previews/PR54/assets/line_inset_h.BxcINalx.svg new file mode 100644 index 00000000..4aec8cb2 --- /dev/null +++ b/previews/PR54/assets/line_inset_h.BxcINalx.svg @@ -0,0 +1,37267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_latex.aIf4q3Gm.svg b/previews/PR54/assets/line_latex.aIf4q3Gm.svg new file mode 100644 index 00000000..24522467 --- /dev/null +++ b/previews/PR54/assets/line_latex.aIf4q3Gm.svg @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_latex_bessel.K1Huv9xT.svg b/previews/PR54/assets/line_latex_bessel.K1Huv9xT.svg new file mode 100644 index 00000000..e339cbe2 --- /dev/null +++ b/previews/PR54/assets/line_latex_bessel.K1Huv9xT.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_latex_bessels.CWgKOkZ1.svg b/previews/PR54/assets/line_latex_bessels.CWgKOkZ1.svg new file mode 100644 index 00000000..bd2e1a58 --- /dev/null +++ b/previews/PR54/assets/line_latex_bessels.CWgKOkZ1.svg @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_single.Csw_FYZs.svg b/previews/PR54/assets/line_single.Csw_FYZs.svg new file mode 100644 index 00000000..4149f05e --- /dev/null +++ b/previews/PR54/assets/line_single.Csw_FYZs.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_time.C3qXgxO3.svg b/previews/PR54/assets/line_time.C3qXgxO3.svg new file mode 100644 index 00000000..b89edd99 --- /dev/null +++ b/previews/PR54/assets/line_time.C3qXgxO3.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_twin_axis.CnJT176H.svg b/previews/PR54/assets/line_twin_axis.CnJT176H.svg new file mode 100644 index 00000000..2e69a1ee --- /dev/null +++ b/previews/PR54/assets/line_twin_axis.CnJT176H.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_two.BJ8P7881.svg b/previews/PR54/assets/line_two.BJ8P7881.svg new file mode 100644 index 00000000..61cee1b4 --- /dev/null +++ b/previews/PR54/assets/line_two.BJ8P7881.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_xlog.uUdUMJB7.svg b/previews/PR54/assets/line_xlog.uUdUMJB7.svg new file mode 100644 index 00000000..4fef355b --- /dev/null +++ b/previews/PR54/assets/line_xlog.uUdUMJB7.svg @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/line_xylog.BskkGuVd.png b/previews/PR54/assets/line_xylog.BskkGuVd.png new file mode 100644 index 00000000..6947210b Binary files /dev/null and b/previews/PR54/assets/line_xylog.BskkGuVd.png differ diff --git a/previews/PR54/assets/line_ylog.DnJtCicm.svg b/previews/PR54/assets/line_ylog.DnJtCicm.svg new file mode 100644 index 00000000..5fac7960 --- /dev/null +++ b/previews/PR54/assets/line_ylog.DnJtCicm.svg @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/lines_wire_contour_3d.CS7nDR_K.png b/previews/PR54/assets/lines_wire_contour_3d.CS7nDR_K.png new file mode 100644 index 00000000..bf38774b Binary files /dev/null and b/previews/PR54/assets/lines_wire_contour_3d.CS7nDR_K.png differ diff --git a/previews/PR54/assets/linesegments.Bc-xEC0L.svg b/previews/PR54/assets/linesegments.Bc-xEC0L.svg new file mode 100644 index 00000000..eec07f1d --- /dev/null +++ b/previews/PR54/assets/linesegments.Bc-xEC0L.svg @@ -0,0 +1,641 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/lscene_limits.hwPokA7Q.png b/previews/PR54/assets/lscene_limits.hwPokA7Q.png new file mode 100644 index 00000000..8db06816 Binary files /dev/null and b/previews/PR54/assets/lscene_limits.hwPokA7Q.png differ diff --git a/previews/PR54/assets/makie_contributors.CVPJ5X3T.png b/previews/PR54/assets/makie_contributors.CVPJ5X3T.png new file mode 100644 index 00000000..f8ce361d Binary files /dev/null and b/previews/PR54/assets/makie_contributors.CVPJ5X3T.png differ diff --git a/previews/PR54/assets/markers.D9VtAlPU.svg b/previews/PR54/assets/markers.D9VtAlPU.svg new file mode 100644 index 00000000..303a6726 --- /dev/null +++ b/previews/PR54/assets/markers.D9VtAlPU.svg @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/market_data1.KcxeCovJ.svg b/previews/PR54/assets/market_data1.KcxeCovJ.svg new file mode 100644 index 00000000..22c072c5 --- /dev/null +++ b/previews/PR54/assets/market_data1.KcxeCovJ.svg @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/market_data2.CBL9Na3Z.svg b/previews/PR54/assets/market_data2.CBL9Na3Z.svg new file mode 100644 index 00000000..cb04da11 --- /dev/null +++ b/previews/PR54/assets/market_data2.CBL9Na3Z.svg @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/market_data3.DBn7hDN6.svg b/previews/PR54/assets/market_data3.DBn7hDN6.svg new file mode 100644 index 00000000..0657bbc5 --- /dev/null +++ b/previews/PR54/assets/market_data3.DBn7hDN6.svg @@ -0,0 +1,535 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/matcap.CJApBI04.png b/previews/PR54/assets/matcap.CJApBI04.png new file mode 100644 index 00000000..5022ece1 Binary files /dev/null and b/previews/PR54/assets/matcap.CJApBI04.png differ diff --git a/previews/PR54/assets/mddrjde.wJ3MszmR.jpeg b/previews/PR54/assets/mddrjde.wJ3MszmR.jpeg new file mode 100644 index 00000000..763cdab2 Binary files /dev/null and b/previews/PR54/assets/mddrjde.wJ3MszmR.jpeg differ diff --git a/previews/PR54/assets/mdzwiop.CkS6L9Lk.png b/previews/PR54/assets/mdzwiop.CkS6L9Lk.png new file mode 100644 index 00000000..e9b7b4db Binary files /dev/null and b/previews/PR54/assets/mdzwiop.CkS6L9Lk.png differ diff --git a/previews/PR54/assets/meshes.BHwbSZVB.png b/previews/PR54/assets/meshes.BHwbSZVB.png new file mode 100644 index 00000000..ff8134c4 Binary files /dev/null and b/previews/PR54/assets/meshes.BHwbSZVB.png differ diff --git a/previews/PR54/assets/minimal_series._kWBdz9f.png b/previews/PR54/assets/minimal_series._kWBdz9f.png new file mode 100644 index 00000000..68b15b1a Binary files /dev/null and b/previews/PR54/assets/minimal_series._kWBdz9f.png differ diff --git a/previews/PR54/assets/moon.C06gcwWC.png b/previews/PR54/assets/moon.C06gcwWC.png new file mode 100644 index 00000000..778f7bd4 Binary files /dev/null and b/previews/PR54/assets/moon.C06gcwWC.png differ diff --git a/previews/PR54/assets/mtcars_density.Coa6UAae.svg b/previews/PR54/assets/mtcars_density.Coa6UAae.svg new file mode 100644 index 00000000..185880f4 --- /dev/null +++ b/previews/PR54/assets/mtcars_density.Coa6UAae.svg @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/multipleTitles.Bj6LD-Ct.svg b/previews/PR54/assets/multipleTitles.Bj6LD-Ct.svg new file mode 100644 index 00000000..431740e3 --- /dev/null +++ b/previews/PR54/assets/multipleTitles.Bj6LD-Ct.svg @@ -0,0 +1,2398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/nazyshg.COdl-5rO.jpeg b/previews/PR54/assets/nazyshg.COdl-5rO.jpeg new file mode 100644 index 00000000..b0bc60ce Binary files /dev/null and b/previews/PR54/assets/nazyshg.COdl-5rO.jpeg differ diff --git a/previews/PR54/assets/normalizations.JiwYSxuN.svg b/previews/PR54/assets/normalizations.JiwYSxuN.svg new file mode 100644 index 00000000..63a87416 --- /dev/null +++ b/previews/PR54/assets/normalizations.JiwYSxuN.svg @@ -0,0 +1,811 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/ntvidfz.C-EBUH5u.png b/previews/PR54/assets/ntvidfz.C-EBUH5u.png new file mode 100644 index 00000000..f5f2d3ba Binary files /dev/null and b/previews/PR54/assets/ntvidfz.C-EBUH5u.png differ diff --git a/previews/PR54/assets/ode_solution.Be2UqcdV.svg b/previews/PR54/assets/ode_solution.Be2UqcdV.svg new file mode 100644 index 00000000..2e98b15f --- /dev/null +++ b/previews/PR54/assets/ode_solution.Be2UqcdV.svg @@ -0,0 +1,62614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/onecolor.V21L7jHy.png b/previews/PR54/assets/onecolor.V21L7jHy.png new file mode 100644 index 00000000..049ccc33 Binary files /dev/null and b/previews/PR54/assets/onecolor.V21L7jHy.png differ diff --git a/previews/PR54/assets/overlayed_functions.CPbi9en5.svg b/previews/PR54/assets/overlayed_functions.CPbi9en5.svg new file mode 100644 index 00000000..c8f49790 --- /dev/null +++ b/previews/PR54/assets/overlayed_functions.CPbi9en5.svg @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/parallel_image_hist.h03L0xH9.png b/previews/PR54/assets/parallel_image_hist.h03L0xH9.png new file mode 100644 index 00000000..1ff3f483 Binary files /dev/null and b/previews/PR54/assets/parallel_image_hist.h03L0xH9.png differ diff --git a/previews/PR54/assets/penguins.DCKScr4z.svg b/previews/PR54/assets/penguins.DCKScr4z.svg new file mode 100644 index 00000000..b278ebbb --- /dev/null +++ b/previews/PR54/assets/penguins.DCKScr4z.svg @@ -0,0 +1,950 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/penguins3d1.CYlOtVjy.png b/previews/PR54/assets/penguins3d1.CYlOtVjy.png new file mode 100644 index 00000000..9e3dbda2 Binary files /dev/null and b/previews/PR54/assets/penguins3d1.CYlOtVjy.png differ diff --git a/previews/PR54/assets/penguins3d2.Bmgeppdu.png b/previews/PR54/assets/penguins3d2.Bmgeppdu.png new file mode 100644 index 00000000..75a5e9b7 Binary files /dev/null and b/previews/PR54/assets/penguins3d2.Bmgeppdu.png differ diff --git a/previews/PR54/assets/penguins3d3.CPiNtLP2.png b/previews/PR54/assets/penguins3d3.CPiNtLP2.png new file mode 100644 index 00000000..e4712764 Binary files /dev/null and b/previews/PR54/assets/penguins3d3.CPiNtLP2.png differ diff --git a/previews/PR54/assets/penguinsAoG.D8fnwSWe.png b/previews/PR54/assets/penguinsAoG.D8fnwSWe.png new file mode 100644 index 00000000..4b8ced21 Binary files /dev/null and b/previews/PR54/assets/penguinsAoG.D8fnwSWe.png differ diff --git a/previews/PR54/assets/penguinsBoxes.CXY6lJBy.svg b/previews/PR54/assets/penguinsBoxes.CXY6lJBy.svg new file mode 100644 index 00000000..5c07749f --- /dev/null +++ b/previews/PR54/assets/penguinsBoxes.CXY6lJBy.svg @@ -0,0 +1,797 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/penguinsViolins.CkS2d0dz.svg b/previews/PR54/assets/penguinsViolins.CkS2d0dz.svg new file mode 100644 index 00000000..a632cb42 --- /dev/null +++ b/previews/PR54/assets/penguinsViolins.CkS2d0dz.svg @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/pihnwup.B2KdkOLz.jpeg b/previews/PR54/assets/pihnwup.B2KdkOLz.jpeg new file mode 100644 index 00000000..67c2f6fa Binary files /dev/null and b/previews/PR54/assets/pihnwup.B2KdkOLz.jpeg differ diff --git a/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.js b/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.js new file mode 100644 index 00000000..2dfe89a1 --- /dev/null +++ b/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.js @@ -0,0 +1,49 @@ +import{_ as s,c as a,o as n,a6 as p}from"./chunks/framework.uXlnTO8a.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"pkgs_versions.md","filePath":"pkgs_versions.md","lastUpdated":null}'),e={name:"pkgs_versions.md"},i=p(`

Packages versions

The examples here were autogenerated using:

julia
using Pkg
+Pkg.status()
Status \`~/work/BeautifulMakie/BeautifulMakie/docs/Project.toml\`
+  [cbdf2221] AlgebraOfGraphics v0.8.0
+  [c9ce4bd3] ArchGDAL v0.10.4
+  [2119f1ac] AssociatedLegendrePolynomials v1.0.1
+  [336ed68f] CSV v0.10.14
+  [13f3f980] CairoMakie v0.12.6
+  [54eefc05] Cascadia v1.0.2
+  [35d6a980] ColorSchemes v3.26.0
+  [5ae59095] Colors v0.12.11
+  [a93c6f00] DataFrames v1.6.1
+  [1313f7d8] DataFramesMeta v0.15.3
+  [82cc6244] DataInterpolations v6.1.0
+  [31c24e10] Distributions v0.25.110
+  [e30172f5] Documenter v1.5.0
+  [4710194d] DocumenterVitepress v0.1.1
+  [5789e2e9] FileIO v1.16.3
+  [f6369f11] ForwardDiff v0.10.36
+  [add2ef01] GDAL v1.8.0
+  [38e38edf] GLM v1.9.0
+  [e9467ef8] GLMakie v0.10.6
+  [db073c08] GeoMakie v0.7.3
+  [5c1252a2] GeometryBasics v0.4.11
+  [bc5e4493] GitHub v5.9.0
+  [708ec375] Gumbo v0.8.2
+  [cd3eb016] HTTP v1.10.8
+⌃ [6218d12a] ImageMagick v1.2.1
+  [916415d5] Images v0.26.1
+  [a98d9a8b] Interpolations v0.15.1
+  [682c06a0] JSON v0.21.4
+  [b964fa9f] LaTeXStrings v1.3.1
+  [50d2b5c4] Lazy v0.15.1
+  [98b081ad] Literate v2.19.0
+  [ee78f7c6] Makie v0.21.6
+  [945b72a4] MarketData v0.14.1
+  [e6723b4c] Meshing v0.7.0
+  [a15396b6] OnlineStats v1.7.0
+  [8b842266] PalmerPenguins v0.1.4
+  [ce6b1742] RDatasets v0.7.7
+  [3cb90ccd] RasterDataSources v0.6.0
+  [a3a2b9e3] Rasters v0.11.5
+  [276daf66] SpecialFunctions v2.4.0
+  [2913bbd2] StatsBase v0.34.3
+  [fd094767] Suppressor v0.2.7
+  [5e47fb64] TestImages v1.8.0
+  [9e3dc215] TimeSeries v0.24.2
+  [44cfe95a] Pkg v1.10.0
+  [9a3f8284] Random
+Info Packages marked with ⌃ have new versions available and may be upgradable.
`,4),l=[i];function c(t,o,r,d,v,h){return n(),a("div",null,l)}const u=s(e,[["render",c]]);export{g as __pageData,u as default}; diff --git a/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.lean.js b/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.lean.js new file mode 100644 index 00000000..3472450e --- /dev/null +++ b/previews/PR54/assets/pkgs_versions.md.BwRs8z6D.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a6 as p}from"./chunks/framework.uXlnTO8a.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"pkgs_versions.md","filePath":"pkgs_versions.md","lastUpdated":null}'),e={name:"pkgs_versions.md"},i=p("",4),l=[i];function c(t,o,r,d,v,h){return n(),a("div",null,l)}const u=s(e,[["render",c]]);export{g as __pageData,u as default}; diff --git a/previews/PR54/assets/pnrxsup.ChkpM9QF.png b/previews/PR54/assets/pnrxsup.ChkpM9QF.png new file mode 100644 index 00000000..c25eb63d Binary files /dev/null and b/previews/PR54/assets/pnrxsup.ChkpM9QF.png differ diff --git a/previews/PR54/assets/poincare_vander.BTIL6yX4.png b/previews/PR54/assets/poincare_vander.BTIL6yX4.png new file mode 100644 index 00000000..a3d9908e Binary files /dev/null and b/previews/PR54/assets/poincare_vander.BTIL6yX4.png differ diff --git a/previews/PR54/assets/poly_ngon.CA5tJZW9.svg b/previews/PR54/assets/poly_ngon.CA5tJZW9.svg new file mode 100644 index 00000000..56e78283 --- /dev/null +++ b/previews/PR54/assets/poly_ngon.CA5tJZW9.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/projections.M7FIfJeX.png b/previews/PR54/assets/projections.M7FIfJeX.png new file mode 100644 index 00000000..1f40b20d Binary files /dev/null and b/previews/PR54/assets/projections.M7FIfJeX.png differ diff --git a/previews/PR54/assets/qubit.kcVGsmCR.png b/previews/PR54/assets/qubit.kcVGsmCR.png new file mode 100644 index 00000000..18ced959 Binary files /dev/null and b/previews/PR54/assets/qubit.kcVGsmCR.png differ diff --git a/previews/PR54/assets/revolution_surface.B6nj6I9L.png b/previews/PR54/assets/revolution_surface.B6nj6I9L.png new file mode 100644 index 00000000..8ca6b5be Binary files /dev/null and b/previews/PR54/assets/revolution_surface.B6nj6I9L.png differ diff --git a/previews/PR54/assets/revolution_surface_s.ClclkFj3.png b/previews/PR54/assets/revolution_surface_s.ClclkFj3.png new file mode 100644 index 00000000..de54bbc4 Binary files /dev/null and b/previews/PR54/assets/revolution_surface_s.ClclkFj3.png differ diff --git a/previews/PR54/assets/rhpspfi.-LYb1hLB.jpeg b/previews/PR54/assets/rhpspfi.-LYb1hLB.jpeg new file mode 100644 index 00000000..8fd07353 Binary files /dev/null and b/previews/PR54/assets/rhpspfi.-LYb1hLB.jpeg differ diff --git a/previews/PR54/assets/rotatingWithTime.BhUnf1Ht.mp4 b/previews/PR54/assets/rotatingWithTime.BhUnf1Ht.mp4 new file mode 100644 index 00000000..968d56fa Binary files /dev/null and b/previews/PR54/assets/rotatingWithTime.BhUnf1Ht.mp4 differ diff --git a/previews/PR54/assets/scatter.BmhQbwUP.svg b/previews/PR54/assets/scatter.BmhQbwUP.svg new file mode 100644 index 00000000..591b4621 --- /dev/null +++ b/previews/PR54/assets/scatter.BmhQbwUP.svg @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/scatterAndLine.cqgAYWda.mp4 b/previews/PR54/assets/scatterAndLine.cqgAYWda.mp4 new file mode 100644 index 00000000..2459872e Binary files /dev/null and b/previews/PR54/assets/scatterAndLine.cqgAYWda.mp4 differ diff --git a/previews/PR54/assets/scatterlinesAoG.DYnVUmza.svg b/previews/PR54/assets/scatterlinesAoG.DYnVUmza.svg new file mode 100644 index 00000000..0090b49c --- /dev/null +++ b/previews/PR54/assets/scatterlinesAoG.DYnVUmza.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/scatters_colormap.CBgIju1G.svg b/previews/PR54/assets/scatters_colormap.CBgIju1G.svg new file mode 100644 index 00000000..188ba32e --- /dev/null +++ b/previews/PR54/assets/scatters_colormap.CBgIju1G.svg @@ -0,0 +1,832 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/scatters_legend.DBmLYyeD.svg b/previews/PR54/assets/scatters_legend.DBmLYyeD.svg new file mode 100644 index 00000000..dbeb4a8c --- /dev/null +++ b/previews/PR54/assets/scatters_legend.DBmLYyeD.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/scatters_line.5FeZJVYC.svg b/previews/PR54/assets/scatters_line.5FeZJVYC.svg new file mode 100644 index 00000000..a73e24dd --- /dev/null +++ b/previews/PR54/assets/scatters_line.5FeZJVYC.svg @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/scatters_line_leg_out.DgrJEu13.svg b/previews/PR54/assets/scatters_line_leg_out.DgrJEu13.svg new file mode 100644 index 00000000..4c463256 --- /dev/null +++ b/previews/PR54/assets/scatters_line_leg_out.DgrJEu13.svg @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/series.B-ZYqLsg.svg b/previews/PR54/assets/series.B-ZYqLsg.svg new file mode 100644 index 00000000..d0b95ac7 --- /dev/null +++ b/previews/PR54/assets/series.B-ZYqLsg.svg @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/simple.CXpoPEtV.svg b/previews/PR54/assets/simple.CXpoPEtV.svg new file mode 100644 index 00000000..f9687adf --- /dev/null +++ b/previews/PR54/assets/simple.CXpoPEtV.svg @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/simple_x_y.Dwippo4-.svg b/previews/PR54/assets/simple_x_y.Dwippo4-.svg new file mode 100644 index 00000000..5ed52c21 --- /dev/null +++ b/previews/PR54/assets/simple_x_y.Dwippo4-.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/simplex.BjtV2VkM.png b/previews/PR54/assets/simplex.BjtV2VkM.png new file mode 100644 index 00000000..c3a458d2 Binary files /dev/null and b/previews/PR54/assets/simplex.BjtV2VkM.png differ diff --git a/previews/PR54/assets/single.Cm0DRmEN.svg b/previews/PR54/assets/single.Cm0DRmEN.svg new file mode 100644 index 00000000..e471ac93 --- /dev/null +++ b/previews/PR54/assets/single.Cm0DRmEN.svg @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/sionpux.ulF-J_Yn.png b/previews/PR54/assets/sionpux.ulF-J_Yn.png new file mode 100644 index 00000000..e0c9e482 Binary files /dev/null and b/previews/PR54/assets/sionpux.ulF-J_Yn.png differ diff --git a/previews/PR54/assets/spirals.CdBAHF1k.svg b/previews/PR54/assets/spirals.CdBAHF1k.svg new file mode 100644 index 00000000..4c116cce --- /dev/null +++ b/previews/PR54/assets/spirals.CdBAHF1k.svg @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/stairs.3vyT-BGV.svg b/previews/PR54/assets/stairs.3vyT-BGV.svg new file mode 100644 index 00000000..b7ac6c33 --- /dev/null +++ b/previews/PR54/assets/stairs.3vyT-BGV.svg @@ -0,0 +1,612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/stem.BMqGX-Bh.svg b/previews/PR54/assets/stem.BMqGX-Bh.svg new file mode 100644 index 00000000..80180a27 --- /dev/null +++ b/previews/PR54/assets/stem.BMqGX-Bh.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/strange_attractors.DclmjZDx.png b/previews/PR54/assets/strange_attractors.DclmjZDx.png new file mode 100644 index 00000000..321a3f64 Binary files /dev/null and b/previews/PR54/assets/strange_attractors.DclmjZDx.png differ diff --git a/previews/PR54/assets/streamplot.DJW6qdmF.png b/previews/PR54/assets/streamplot.DJW6qdmF.png new file mode 100644 index 00000000..a52a65ba Binary files /dev/null and b/previews/PR54/assets/streamplot.DJW6qdmF.png differ diff --git a/previews/PR54/assets/style.HDpUcisB.css b/previews/PR54/assets/style.HDpUcisB.css new file mode 100644 index 00000000..20cc4e49 --- /dev/null +++ b/previews/PR54/assets/style.HDpUcisB.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic";@import"https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic";.img-box[data-v-757074f4]{box-sizing:content-box;margin:10px;height:auto;width:350px;overflow:hidden;display:inline-block;color:#e4d7d7;position:relative;background-color:transparent}.caption[data-v-757074f4]{position:absolute;bottom:5px;left:20px;opacity:0;transition:transform .3s ease,opacity .3s ease}.transparent-box[data-v-757074f4]{height:auto;width:350px;background-color:#0000;position:absolute;top:0;left:0;transition:background-color .3s ease}.img-box:hover img[data-v-757074f4]{transform:scale(1.1)}.img-box:hover .transparent-box[data-v-757074f4]{background-color:#63b3ec80}.img-box:hover .caption[data-v-757074f4]{transform:translateY(-20px);opacity:1}.img-box[data-v-757074f4]:hover{cursor:pointer}.caption>p[data-v-757074f4]:nth-child(2){font-size:.8em}.opacity-low[data-v-757074f4]{opacity:.5}.heading[data-v-afefdd6c]{text-align:center;font-size:2em;letter-spacing:1px;padding:40px;color:#fff}.gallery-image[data-v-afefdd6c]{padding:20px;display:flex;flex-wrap:wrap;justify-content:center}.gallery-image[data-v-afefdd6c] img{height:auto;width:350px;transform:scale(1);transition:transform .4s ease}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/previews/PR54/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-14206e74]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-14206e74]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-14206e74]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-14206e74]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-14206e74]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-14206e74]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-14206e74]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-14206e74]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-14206e74]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-14206e74]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-14206e74]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-14206e74]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-14206e74]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-8b74d055]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-8b74d055]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-8b74d055]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-8b74d055]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-e5380155]{position:relative}.VPFlyout[data-v-e5380155]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e5380155]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e5380155]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e5380155]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e5380155]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e5380155],.button[aria-expanded=true]+.menu[data-v-e5380155]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e5380155]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e5380155]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e5380155]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e5380155]{margin-right:0;font-size:16px}.text-icon[data-v-e5380155]{margin-left:4px;font-size:14px}.icon[data-v-e5380155]{font-size:20px;transition:fill .25s}.menu[data-v-e5380155]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ed5ac1f6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ed5ac1f6],.VPNavBarMenuLink[data-v-ed5ac1f6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-28a961f9]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-28a961f9]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-28a961f9]{border-bottom-color:var(--vp-c-divider)}}[data-v-28a961f9] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-27d04aeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-27d04aeb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-7179dbb7]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-7179dbb7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New", monospace}:root{--julia-blue: rgb(56.475, 87.3, 190.575);--julia-purple: rgb(131.4, 77.625, 157.05);--julia-red: rgb(179.1, 52.875, 45);--julia-green: rgb(49.5, 134.1, 33.525);--vp-c-brand: #646cff;--vp-c-brand-light: #747bff;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: rgba(100, 108, 255, .08)}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #e4c92a, #dd3365, #3782b9 80% );--vp-home-hero-image-background-image: linear-gradient( -45deg, #dd3365 50%, #3782b9 50% );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-darker);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm)}.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #e4c92a;--vp-c-brand-2: #e4c92a;--vp-c-brand-3: #e4c92a;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #3782b9;--vp-c-brand-2: #3782b9;--vp-c-brand-3: #3782b9;--vp-c-sponsor: #ee4e95;--vitest-c-sponsor-hover: #e51370}.VPLocalSearchBox[data-v-5b749456]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-5b749456]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-5b749456]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-5b749456]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-5b749456]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-5b749456]{padding:0 8px}}.search-bar[data-v-5b749456]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-5b749456]{display:block;font-size:18px}.navigate-icon[data-v-5b749456]{display:block;font-size:14px}.search-icon[data-v-5b749456]{margin:8px}@media (max-width: 767px){.search-icon[data-v-5b749456]{display:none}}.search-input[data-v-5b749456]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-5b749456]{padding:6px 4px}}.search-actions[data-v-5b749456]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-5b749456]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-5b749456]{display:none}}.search-actions button[data-v-5b749456]{padding:8px}.search-actions button[data-v-5b749456]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-5b749456]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-5b749456]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-5b749456]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-5b749456]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-5b749456]{display:none}}.search-keyboard-shortcuts kbd[data-v-5b749456]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-5b749456]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-5b749456]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-5b749456]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-5b749456]{margin:8px}}.titles[data-v-5b749456]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-5b749456]{display:flex;align-items:center;gap:4px}.title.main[data-v-5b749456]{font-weight:500}.title-icon[data-v-5b749456]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-5b749456]{opacity:.5}.result.selected[data-v-5b749456]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-5b749456]{position:relative}.excerpt[data-v-5b749456]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-5b749456]{opacity:1}.excerpt[data-v-5b749456] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-5b749456] mark,.excerpt[data-v-5b749456] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-5b749456] .vp-code-group .tabs{display:none}.excerpt[data-v-5b749456] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-5b749456]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-5b749456]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-5b749456],.result.selected .title-icon[data-v-5b749456]{color:var(--vp-c-brand-1)!important}.no-results[data-v-5b749456]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-5b749456]{flex:none} diff --git a/previews/PR54/assets/surface.BfBjRaGB.png b/previews/PR54/assets/surface.BfBjRaGB.png new file mode 100644 index 00000000..63c98cfc Binary files /dev/null and b/previews/PR54/assets/surface.BfBjRaGB.png differ diff --git a/previews/PR54/assets/taqfmoq._tcF1pNd.jpeg b/previews/PR54/assets/taqfmoq._tcF1pNd.jpeg new file mode 100644 index 00000000..20220685 Binary files /dev/null and b/previews/PR54/assets/taqfmoq._tcF1pNd.jpeg differ diff --git a/previews/PR54/assets/tesseralSphericalH.CSLdP6us.png b/previews/PR54/assets/tesseralSphericalH.CSLdP6us.png new file mode 100644 index 00000000..ec891f9f Binary files /dev/null and b/previews/PR54/assets/tesseralSphericalH.CSLdP6us.png differ diff --git a/previews/PR54/assets/tesseral_spherical_harmonics.Jf30puEc.png b/previews/PR54/assets/tesseral_spherical_harmonics.Jf30puEc.png new file mode 100644 index 00000000..c46f14f6 Binary files /dev/null and b/previews/PR54/assets/tesseral_spherical_harmonics.Jf30puEc.png differ diff --git a/previews/PR54/assets/text_heatmap.D0UXNhg6.png b/previews/PR54/assets/text_heatmap.D0UXNhg6.png new file mode 100644 index 00000000..1abe2a62 Binary files /dev/null and b/previews/PR54/assets/text_heatmap.D0UXNhg6.png differ diff --git a/previews/PR54/assets/torus.BY9ffpSY.png b/previews/PR54/assets/torus.BY9ffpSY.png new file mode 100644 index 00000000..e4af4233 Binary files /dev/null and b/previews/PR54/assets/torus.BY9ffpSY.png differ diff --git a/previews/PR54/assets/travellingSolarSystem.FvpMSGk-.mp4 b/previews/PR54/assets/travellingSolarSystem.FvpMSGk-.mp4 new file mode 100644 index 00000000..7510277c Binary files /dev/null and b/previews/PR54/assets/travellingSolarSystem.FvpMSGk-.mp4 differ diff --git a/previews/PR54/assets/tutsyhk.Bkb_nmiM.jpeg b/previews/PR54/assets/tutsyhk.Bkb_nmiM.jpeg new file mode 100644 index 00000000..0be9403c Binary files /dev/null and b/previews/PR54/assets/tutsyhk.Bkb_nmiM.jpeg differ diff --git a/previews/PR54/assets/uemcozo.B9U7qvTF.png b/previews/PR54/assets/uemcozo.B9U7qvTF.png new file mode 100644 index 00000000..16cc03ea Binary files /dev/null and b/previews/PR54/assets/uemcozo.B9U7qvTF.png differ diff --git a/previews/PR54/assets/vertical_feature_mask.2XXaH7FY.png b/previews/PR54/assets/vertical_feature_mask.2XXaH7FY.png new file mode 100644 index 00000000..6925cc73 Binary files /dev/null and b/previews/PR54/assets/vertical_feature_mask.2XXaH7FY.png differ diff --git a/previews/PR54/assets/vertical_horizontal.DpluM9A4.svg b/previews/PR54/assets/vertical_horizontal.DpluM9A4.svg new file mode 100644 index 00000000..8ce8d61b --- /dev/null +++ b/previews/PR54/assets/vertical_horizontal.DpluM9A4.svg @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/vjuseoy.DHQRTKsK.png b/previews/PR54/assets/vjuseoy.DHQRTKsK.png new file mode 100644 index 00000000..5adfa7c4 Binary files /dev/null and b/previews/PR54/assets/vjuseoy.DHQRTKsK.png differ diff --git a/previews/PR54/assets/volume.CFVym4Xy.png b/previews/PR54/assets/volume.CFVym4Xy.png new file mode 100644 index 00000000..eede33b0 Binary files /dev/null and b/previews/PR54/assets/volume.CFVym4Xy.png differ diff --git a/previews/PR54/assets/volume_contour_scatters.DVdPbS5F.png b/previews/PR54/assets/volume_contour_scatters.DVdPbS5F.png new file mode 100644 index 00000000..6f62b928 Binary files /dev/null and b/previews/PR54/assets/volume_contour_scatters.DVdPbS5F.png differ diff --git a/previews/PR54/assets/wireframe_torus.DgQopLNp.png b/previews/PR54/assets/wireframe_torus.DgQopLNp.png new file mode 100644 index 00000000..f7c0c37b Binary files /dev/null and b/previews/PR54/assets/wireframe_torus.DgQopLNp.png differ diff --git a/previews/PR54/assets/x_barplot_error_y_error.C6kTHHpp.svg b/previews/PR54/assets/x_barplot_error_y_error.C6kTHHpp.svg new file mode 100644 index 00000000..5d8432d9 --- /dev/null +++ b/previews/PR54/assets/x_barplot_error_y_error.C6kTHHpp.svg @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/y_colormap.4GuRjphB.svg b/previews/PR54/assets/y_colormap.4GuRjphB.svg new file mode 100644 index 00000000..f5991bb3 --- /dev/null +++ b/previews/PR54/assets/y_colormap.4GuRjphB.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/assets/yebacdj.LXn84W5N.jpeg b/previews/PR54/assets/yebacdj.LXn84W5N.jpeg new file mode 100644 index 00000000..367c2178 Binary files /dev/null and b/previews/PR54/assets/yebacdj.LXn84W5N.jpeg differ diff --git a/previews/PR54/assets/ygrshga.CVesJuTl.jpeg b/previews/PR54/assets/ygrshga.CVesJuTl.jpeg new file mode 100644 index 00000000..f517011a Binary files /dev/null and b/previews/PR54/assets/ygrshga.CVesJuTl.jpeg differ diff --git a/previews/PR54/assets/your_name.1VbU99KO.svg b/previews/PR54/assets/your_name.1VbU99KO.svg new file mode 100644 index 00000000..f6ea3c25 --- /dev/null +++ b/previews/PR54/assets/your_name.1VbU99KO.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/contourf_contour3d.png b/previews/PR54/contourf_contour3d.png new file mode 100644 index 00000000..3af826e5 Binary files /dev/null and b/previews/PR54/contourf_contour3d.png differ diff --git a/previews/PR54/dark_surface_contour3d_streamplot.png b/previews/PR54/dark_surface_contour3d_streamplot.png new file mode 100644 index 00000000..39d13f19 Binary files /dev/null and b/previews/PR54/dark_surface_contour3d_streamplot.png differ diff --git a/previews/PR54/examples/2d/arrows/arrows.html b/previews/PR54/examples/2d/arrows/arrows.html new file mode 100644 index 00000000..a1ec1c2d --- /dev/null +++ b/previews/PR54/examples/2d/arrows/arrows.html @@ -0,0 +1,41 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Arrows

julia
using CairoMakie
+
+xs = LinRange(-3, 3, 20)
+ys = LinRange(-3, 3, 20)
+us = [x + y for x in xs, y in ys]
+vs = [y - x for x in xs, y in ys]
+strength = vec(sqrt.(us .^2 .+ vs .^2))
+cmap = :gnuplot
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1,1], xlabel = "x", ylabel = "y", aspect = DataAspect())
+arrows!(ax, xs, ys, us, vs, arrowsize = 10, lengthscale = 0.1,
+    arrowcolor = strength, linecolor = strength, colormap = cmap)
+Colorbar(fig[1,2], limits =(minimum(strength), maximum(strength)),
+    nsteps =100, colormap = cmap, ticksize=15, width = 15, tickalign=1)
+limits!(ax, -3,3,-3,3)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/band/band.html b/previews/PR54/examples/2d/band/band.html new file mode 100644 index 00000000..108a178c --- /dev/null +++ b/previews/PR54/examples/2d/band/band.html @@ -0,0 +1,45 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

band

julia
using CairoMakie, Random
+
+x = 0:0.05:
+y1 =  sin.(3x) ./ (cos.(x) .+ 2)./x
+y2 =  -2.5cos.(x)./x
+xl = LinRange(5,10,10)
+yl = LinRange(1,0.5,10)
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1,1])
+lines!(x, y1; color = :dodgerblue, label = "blue")
+band!(x, y1 .- 0.1, y1 .+ 0.1; color = (:dodgerblue, 0.2), label = "blue")
+
+lines!(x, y2; color = :red, label = "red")
+band!(x, y2 .- 0.1, y2 .+ 0.1; color = (:red, 0.2), label = "red")
+
+lines!(xl, yl; color = :slategray1, label = "slategray1")
+band!(xl, fill(0.5,10), yl; color= (:slategray1, 0.25),label="slategray1")
+ylims!(-0.55,1)
+axislegend(ax, position = :rt, merge = true)
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/band/band_confidence_error.html b/previews/PR54/examples/2d/band/band_confidence_error.html new file mode 100644 index 00000000..5c2da31f --- /dev/null +++ b/previews/PR54/examples/2d/band/band_confidence_error.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

band confidence error

julia
using CairoMakie
+
+x = y = -10:0.11:10
+y1d = sin.(x) ./ x
+lower = y1d .- 0.1
+upper = y1d .+ 0.1
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+lines!(x, y1d, color = :black)
+band!(x, lower, upper; color = (:green, 0.2))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/band/band_ribbon.html b/previews/PR54/examples/2d/band/band_ribbon.html new file mode 100644 index 00000000..9758bffe --- /dev/null +++ b/previews/PR54/examples/2d/band/band_ribbon.html @@ -0,0 +1,31 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

band or ribbon

julia
using CairoMakie
+
+x = LinRange(-10, 10, 200)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+band!(x, sin.(x), sin.(x) .+ 1; color = (:blue, 0.2))
+band!(x, cos.(x), 1 .+ cos.(x); color = (:red, 0.2))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/band/filled_under.html b/previews/PR54/examples/2d/band/filled_under.html new file mode 100644 index 00000000..98e53a02 --- /dev/null +++ b/previews/PR54/examples/2d/band/filled_under.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Filled Under

julia
using CairoMakie
+
+x = 0:0.05:1
+y = x .^ 2
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y")
+lines!(x, y, color = :orangered, label = "Label")
+band!(x, fill(0, length(x)), y; color = (:orange, 0.25), label = "Label")
+axislegend(; merge = true, position = :lt)
+fig

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/band/filled_under_bell.html b/previews/PR54/examples/2d/band/filled_under_bell.html new file mode 100644 index 00000000..34755b20 --- /dev/null +++ b/previews/PR54/examples/2d/band/filled_under_bell.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Filled curve. Under the bell

julia
using CairoMakie
+
+μs = [0.25, 2, -1]
+σs = [1.25, 1, 2]
+colors = ["#E69F00", "#56B4E9", "#009E73"]
+x = LinRange(-10, 10, 200)
+fg(x, μ, σ) = exp.(.-(x .- μ) .^ 2 ./ (2σ^2)) ./*())
+fig = Figure(size = (600, 400), fonts= (; regular = "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"y", xlabelsize = 22, ylabelsize = 22)
+for (idx, μ) in enumerate(μs)
+    lines!(x, fg(x, μ, σs[idx]); color = colors[idx],
+        label = L"\mu = %$(μ), \sigma = %$(σs[idx])")
+    band!(x, fill(0, length(x)), fg(x, μ, σs[idx]); color = (colors[idx], 0.1),
+        label = L"\mu = %$(μ), \sigma = %$(σs[idx])")
+end
+axislegend(; merge = true, framecolor = :red)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/bars/barplot_cmap_y_error.html b/previews/PR54/examples/2d/bars/barplot_cmap_y_error.html new file mode 100644 index 00000000..3b6919c5 --- /dev/null +++ b/previews/PR54/examples/2d/bars/barplot_cmap_y_error.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

barplot with colormap and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y, yerr = 1:2:20, 5 * rand(10), 0.4 * abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1]; xlabel = "variables", ylabel = "values")
+barplot!(ax, x, y; strokewidth = 1, color = x, colormap = (:Spectral_10, 0.85),
+    strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/bars/barplot_y_error.html b/previews/PR54/examples/2d/bars/barplot_y_error.html new file mode 100644 index 00000000..e5802709 --- /dev/null +++ b/previews/PR54/examples/2d/bars/barplot_y_error.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

barplot and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y, yerr = 1:2:20, 5 * rand(10), 0.4 * abs.(randn(10))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values")
+barplot!(ax, x, y; strokewidth = 1, color = :transparent, strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/bars/stripped_bars.html b/previews/PR54/examples/2d/bars/stripped_bars.html new file mode 100644 index 00000000..2b6800bd --- /dev/null +++ b/previews/PR54/examples/2d/bars/stripped_bars.html @@ -0,0 +1,49 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

stripped bars

julia
# This currently fails with CairoMakie
+# https://discourse.julialang.org/t/striped-colors-for-e-g-bar-plots-in-julia/64435/3
+using GLMakie.Makie, GLMakie, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+Random.seed!(13)
+# patterns
+# `'/'`, `'\\'`, `'-'`, `'|'`, `'x'`, and `'+'`
+directions = [Vec2f(1), Vec2f(1, -1), Vec2f(1, 0), Vec2f(0, 1),
+    [Vec2f(1), Vec2f(1, -1)], [Vec2f(1, 0), Vec2f(0, 1)]]
+colors = [:white, :orange, (:green, 0.5), :yellow, (:blue, 0.85), :black]
+# then defining the patches are defined by calling LinePattern
+patternColors = [Makie.LinePattern(direction = hatch; width = 5, tilesize = (20, 20),
+    linecolor = colors[indx], background_color = colors[end-indx+1])
+        for (indx, hatch) in enumerate(directions)];
+
+# We could start with normal barplots
+fig, ax, pltobj = barplot(1:2, strokewidth = 2, color = ["grey", "orange"],
+    figure = (; size = (600, 400)))
+# and then append new bars with the patterns defined above
+for (idx, pattern) in enumerate(patternColors)
+    barplot!(ax, [idx + 2], [idx * (2rand() + 1)], color = pattern, strokewidth = 2)
+end
+# change x ticks at every bar
+ax.xticks = (1:8, ["grey", "orange", "/", "\\", "-", "|", "x", "+"])
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/bars/x_barplot_error_y_error.html b/previews/PR54/examples/2d/bars/x_barplot_error_y_error.html new file mode 100644 index 00000000..4fcb7b0a --- /dev/null +++ b/previews/PR54/examples/2d/bars/x_barplot_error_y_error.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

x-error barplot and y-errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts =(; regular= "sans"))
+ax = Axis(fig[1, 1], xlabel = "variables", ylabel = "values")
+barplot!(ax, x, y; width = 1.8xerr, strokewidth = 1, color = :transparent,
+    strokecolor = :black)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/boxplots/airquality.html b/previews/PR54/examples/2d/boxplots/airquality.html new file mode 100644 index 00000000..0564c396 --- /dev/null +++ b/previews/PR54/examples/2d/boxplots/airquality.html @@ -0,0 +1,39 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

boxplots for airquality data

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+airquality = dataset("datasets", "airquality")
+categories = ["Ozone", "Solar.R", "Wind", "Temp"]
+colors = categorical_colors(:Set1, length(categories))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xticks = (1:length(categories), categories))
+for (indx, f) in enumerate(categories)
+    datam = filter(x -> x !== missing, airquality[:, f])
+    a = fill(indx, length(datam))
+    boxplot!(ax, a, datam; whiskerwidth = 1, width = 0.35,
+        color = (colors[indx], 0.45), whiskercolor = (colors[indx], 1),
+        mediancolor = :black)
+end
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/boxplots/boxplots_collection.html b/previews/PR54/examples/2d/boxplots/boxplots_collection.html new file mode 100644 index 00000000..43ca2e60 --- /dev/null +++ b/previews/PR54/examples/2d/boxplots/boxplots_collection.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

boxplot collection: Normal distributions

julia
using CairoMakie, Random, Distributions
+
+Random.seed!(13)
+n = 3000
+colors = resample_cmap(:spring, 8)[3:end]
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1,1]; # palette = (; patchcolor = colors),
+    xticks = (1:7, ["cat 1", "A", "B", "C", "D", "E", "F"]),
+    yticks = ([-5], ["cat 2"]), yticklabelrotation = π/2)
+boxplot!(ax, fill(-5,n), rand(Normal(0, 0.5), n); orientation=:horizontal,
+    whiskerwidth = 1, width = 2, #color = (:orange, 0.95),
+    whiskercolor = :red, mediancolor = :yellow, markersize = 8,
+    strokecolor = :black, strokewidth = 1, label = "horizontal")
+boxplot!(ax, fill(1,n), rand(Normal(1,  3), n); whiskerwidth = 1,
+    width = 0.5, color = :dodgerblue, whiskercolor = :dodgerblue,
+    mediancolor = :grey20, markersize = 5, strokecolor = :grey20,
+    strokewidth = 1, label = "vertical")
+for i in 2:7
+    boxplot!(ax, fill(i,n), rand(Normal(rand(-2:5), 2*rand() + 0.3), n);
+        whiskerwidth = 1, width = 0.35)
+end
+axislegend(ax, position = :lt)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/boxplots/vertical_horizontal.html b/previews/PR54/examples/2d/boxplots/vertical_horizontal.html new file mode 100644 index 00000000..18c51bf9 --- /dev/null +++ b/previews/PR54/examples/2d/boxplots/vertical_horizontal.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

vertical and horizontal boxplots

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data_r = randn(n)
+a = fill(1, n)
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "variable", ylabel = "values",
+    xticks = ([1], ["normal Distribution"]))
+ax2 = Axis(fig[1, 2], xlabel = "values", ylabel = "variable",
+    yticks = ([1], ["normal Distribution"]), yticklabelrotation = pi / 2)
+
+boxplot!(ax1, a, data_r; whiskerwidth = 1, width = 0.35, color = (:red, 0.45),
+    whiskercolor = (:red, 1), mediancolor = :red, markersize = 8,
+    strokecolor = :black, strokewidth = 1, label = "vertical")
+limits!(ax1, 0, 2, -5, 5)
+boxplot!(ax2, a, data_r; orientation = :horizontal, whiskerwidth = 1, width = 0.35,
+    color = (:navy, 0.45), whiskercolor = (:navy, 1), mediancolor = :navy,
+    markersize = 8, strokecolor = :black, strokewidth = 1,
+    label = "horizontal")
+limits!(ax2, -5, 5, 0, 2)
+axislegend(ax1, position = :rb, framecolor = :transparent)
+axislegend(ax2, position = :rt, backgroundcolor = (:dodgerblue, 0.2))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/contour/complex_function.html b/previews/PR54/examples/2d/contour/complex_function.html new file mode 100644 index 00000000..74843a3c --- /dev/null +++ b/previews/PR54/examples/2d/contour/complex_function.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contour plots at levels

julia
using CairoMakie
+
+x = -2:0.005:2
+y = -2:0.005:2
+f(z) = (z^3 - 3) / z
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+
+fig = Figure(size=(900, 400), fontsize=20)
+axs = [Axis(fig[1, j], aspect=1) for j in 1:2]
+cmap = :roma
+contour!(axs[1], x, y, fargs, levels=30, colormap=cmap)
+pltobj1 = heatmap!(axs[2], x, y, fargs, colorrange=(-π, π), colormap=cmap)
+contour!(axs[2], x, y, fargs, levels=30, color=:white, linewidth=0.85)
+Colorbar(fig[1, 3], pltobj1, ticks=([-π, -π / 2, 0, π / 2, π],
+    ["-π", "-π/2", "0", "π/2", "π"]))
+limits!(axs[1], -2, 2, -2, 2)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/contour/contour_over_heatmap.html b/previews/PR54/examples/2d/contour/contour_over_heatmap.html new file mode 100644 index 00000000..9be714d8 --- /dev/null +++ b/previews/PR54/examples/2d/contour/contour_over_heatmap.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contour over heatmap

julia
using CairoMakie
+
+f(x, y) = (x + 2y^2) * abs(sin(y) + cos(x))
+x = y = 1:0.2:20
+z = [f(x, y) for x in x, y in y]
+
+fig = Figure(size=(1200, 400), fontsize=22)
+axs = [Axis(fig[1, j], aspect=1, xlabel="x", ylabel=j == 1 ? "y" : "")
+        for j in 1:3]
+p1 = heatmap!(axs[1], x, y, z, colormap=:plasma)
+contour!(axs[2], x, y, z; color=:black, levels=100:1:101)
+heatmap!(axs[3], x, y, z; colormap=(:plasma, 0.5))
+contour!(axs[3], x, y, z; color=:white, levels=100:1:101)
+Colorbar(fig[1, 4], p1, width=20, ticksize=20, tickalign=1)
+[limits!(axs[i], 1, 20, 1, 20) for i in 1:3]
+[hideydecorations!(axs[i], grid=false, ticks=false) for i in 2:3]
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/contour/egg_shape.html b/previews/PR54/examples/2d/contour/egg_shape.html new file mode 100644 index 00000000..f851cd76 --- /dev/null +++ b/previews/PR54/examples/2d/contour/egg_shape.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contour levels: egg shape

julia
using CairoMakie, Random
+x = -1:0.02:1
+y = -1.5:0.02:2
+egg(x, y) = x^2 + y^2 / (1.4 + y / 5)^2
+segg = [egg(x, y) for x in x, y in y]
+
+fig = Figure(size=(600, 400))
+ax = Axis(fig[1, 1], aspect=DataAspect(), xlabel="x", ylabel="y",
+    xgridstyle=:dash, ygridstyle=:dash,
+    xgridcolor=:grey, ygridcolor=:grey)
+cl = contour!(x, y, segg;
+    linewidth=0.85,
+    colormap=:Spectral_11,
+    levels=0:0.02:1
+    )
+# colsize!(fig.layout, 1, Aspect(1, 0.6))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/contour/overlayed_functions.html b/previews/PR54/examples/2d/contour/overlayed_functions.html new file mode 100644 index 00000000..0eec3dec --- /dev/null +++ b/previews/PR54/examples/2d/contour/overlayed_functions.html @@ -0,0 +1,41 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Multiple overlayed contour plots

julia
using CairoMakie
+
+f(x, y) = abs(sin(x)* sin(y))
+g(x, y) = abs(cos(x)* cos(y))
+
+x = y = -3:0.1:3
+zf = [f(x, y) for x in x, y in y]
+zg = [g(x, y) for x in x, y in y]
+
+fig = Figure(; size=(600, 400))
+ax = Axis(fig[1,1]; xlabel="x", ylabel="y")
+contour!(ax, x, y, zf; labels=true, color=:orangered, linestyle=:dash,
+    linewidth=2, label = "f(x,y)",
+    labelcolor=:red, levels = [0.5,1], labelsize=14)
+contour!(ax, x, y, zg; labels=true, color=:dodgerblue, linewidth=2,
+    label = "g(x,y)", labelcolor=:blue, levels = [0.5,1], labelsize=14)
+axislegend()
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/contour/qubit.html b/previews/PR54/examples/2d/contour/qubit.html new file mode 100644 index 00000000..7d6fa849 --- /dev/null +++ b/previews/PR54/examples/2d/contour/qubit.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contour levels: qubit

julia
using CairoMakie
+
+function tα_qubit(β, ψ1, ψ2, fα, f)
+    2 + 2 * β - cos(ψ1) - cos(ψ2) - 2 * β * cos(π * fα) * cos(2 * π * f + π *- ψ1 - ψ2)
+end
+ψ1 = ψ2 = range(0, 4 * π, length=100)
+z = [tα_qubit(0.61, x, y, 0.2, 0.1) for x in ψ1, y in ψ2]
+
+fig = Figure(size=(600, 400))
+ax = Axis(fig[1, 1], aspect=1, xlabel="ψ1", ylabel="ψ2")
+cls = contour!(ψ1, ψ2, z; colormap=:plasma, levels=20, linewidth=1.5)
+# Colorbar(fig[1, 2], cls, label="α-q")
+limits!(ax, 0, , 0, )
+# colsize!(fig.layout, 1, Aspect(1, 1.0))
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/density/density.html b/previews/PR54/examples/2d/density/density.html new file mode 100644 index 00000000..b17a4b9f --- /dev/null +++ b/previews/PR54/examples/2d/density/density.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

density plot

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+colors = ["#FF410D", "#6EE2FF", "#F7C530", "#95CC5E", "#D0DFE6", "#F79D1E"]
+μσpairs = [[2,0.5], [-1,2], [0.25,1], [1,0.1], [1, 0.05], [1.2,0.1]]
+
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1]; palette = (; patchcolor = tuple.(colors, 0.45)))
+for (idx, μσ) in enumerate(μσpairs)
+    density!(rand(Normal(μσ...), 1000), strokewidth = 1.5,
+        strokecolor = :grey20, direction = idx > 3 ? :x : :y,
+        linestyle = idx > 3 ? :dash : :solid,
+        label = "$(μσ[1]),  $(μσ[2])")
+end
+axislegend(L"\mu,\quad\sigma"; position= :cb, titlesize= 22)
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/density/mtcars_density.html b/previews/PR54/examples/2d/density/mtcars_density.html new file mode 100644 index 00000000..6bc86a31 --- /dev/null +++ b/previews/PR54/examples/2d/density/mtcars_density.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

density mtcars

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+cars = dataset("datasets", "mtcars")
+byCat = cars.Cyl
+categ = unique(byCat)
+colors1 = categorical_colors(:Hiroshige, length(categ))
+colors2 = categorical_colors(:gnuplot, length(categ))
+
+fig = Figure(; size = (600, 800))
+ax1 = Axis(fig[2, 1], xlabel = "MPG", ylabel = "density", xgridstyle = :dash,
+    ygridstyle = :dash, rightspinevisible = false, topspinevisible = false)
+ax2 = Axis(fig[3, 1], xlabel = "MPG", ylabel = "density")
+for (i, c) in enumerate(categ)
+    indc = findall(x -> x == c, byCat)
+    density!(ax1, cars.MPG[indc]; color = (colors1[i], 0.5), label = "$(c)",
+        strokewidth = 1.25, strokecolor = colors1[i])
+    density!(ax2, cars.MPG[indc], color = (colors2[i], 0.5), label = "$(c)",
+        strokewidth = 1.25, strokecolor = colors2[i])
+end
+Legend(fig[1, 1], ax1, "Cyl", orientation = :horizontal,
+    tellheight = true, tellwidth = false,
+    framevisible = false, titleposition = :left)
+Legend(fig[3, 2], ax2, "Cyl")
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/errorbars/errorbars.html b/previews/PR54/examples/2d/errorbars/errorbars.html new file mode 100644 index 00000000..00f9cb76 --- /dev/null +++ b/previews/PR54/examples/2d/errorbars/errorbars.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

errorbars

julia
using CairoMakie, Random
+
+Random.seed!(145)
+n = 50
+x = 1:n
+y = sin.(x) .+ randn(n)/10
+yerr = 0.2*abs.(randn(n))
+xerr = abs.(randn(n))
+
+fig, ax, =  errorbars(x, y, yerr; color = 1:n, colormap = ([:black, :orangered]),
+    whiskerwidth = 10, linewidth = 1.5,
+    figure = (;size = (600,400)))
+errorbars!(x, y, xerr; color = 1:n, colormap = ([:orangered, :black]),
+    direction = :x, linewidth = 1.5, whiskerwidth = 10)
+scatter!(x, y; markersize = 10, color = (:black, 0.25),
+    strokewidth = 1, strokecolor = :black)
+lines!(x, y; linewidth = 0.5, linestyle = :dashdot)
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/errorbars/simple_x_y.html b/previews/PR54/examples/2d/errorbars/simple_x_y.html new file mode 100644 index 00000000..8969abeb --- /dev/null +++ b/previews/PR54/examples/2d/errorbars/simple_x_y.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

errorbars in x and y

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1]; xlabel = "variable", ylabel = "values")
+errorbars!(ax, x, y, yerr; whiskerwidth = 12, color = :orangered)
+errorbars!(ax, x, y, xerr; whiskerwidth = 12, direction = :x)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/errorbars/y_colormap.html b/previews/PR54/examples/2d/errorbars/y_colormap.html new file mode 100644 index 00000000..1d84134c --- /dev/null +++ b/previews/PR54/examples/2d/errorbars/y_colormap.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

errorbars with a colormap

julia
using CairoMakie, Random
+
+Random.seed!(145)
+x, y = 1:2:20, 5 * rand(10)
+yerr, xerr = 0.4 * abs.(randn(10)), abs.(randn(10))
+fig = Figure(size = (600, 400), fonts = (; regular= "sans"))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values", xgridstyle = :dash,
+    ygridstyle = :dash)
+errorbars!(ax, x, y, yerr; whiskerwidth = 12, color = yerr,
+    linewidth = 2, colormap = :viridis)
+scatter!(ax, x, y; color = yerr, colormap = :viridis, markersize = 15)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmap.html b/previews/PR54/examples/2d/heatmaps/heatmap.html new file mode 100644 index 00000000..0841d22f --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmap.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap

julia
using CairoMakie, Random
+
+using GLMakie
+Random.seed!(123)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1]; xlabel = "x", ylabel = "y")
+hmap = heatmap!(2rand(20, 20) .- 1; colormap = :Spectral_11)
+Colorbar(fig[1, 2], hmap; label = "values", width = 15, ticksize = 15, tickalign = 1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmap1SharedCbar.html b/previews/PR54/examples/2d/heatmaps/heatmap1SharedCbar.html new file mode 100644 index 00000000..82dcd06b --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmap1SharedCbar.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with 1 shared colorbar

julia
using CairoMakie
+using Random
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+axs = [Axis(fig[1, j], aspect = 1, xticks = [1, 10], yticks = [1, 10]) for j in 1:2]
+[heatmap!(axs[i], 1:10, 1:10, rand(10, 10); colormap = :plasma,
+    colorrange = (0, 1)) for i in 1:2]
+Colorbar(fig[2, :1:2], colormap = :plasma, limits= (0,1),
+    vertical = false, flipaxis = false, height = 15, tickwidth = 2,
+    ticklabelsize = 14, ticks = [0, 0.5, 1])
+hideydecorations!(axs[2], ticks = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmap2SharedCbars.html b/previews/PR54/examples/2d/heatmaps/heatmap2SharedCbars.html new file mode 100644 index 00000000..21b4059a --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmap2SharedCbars.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with 2 shared colorbars

julia
using CairoMakie, Random
+using ColorSchemes
+
+Random.seed!(123)
+cmaps = collect(keys(colorschemes))
+fig = Figure(; size = (600, 400))
+for i in 1:2, j in 1:2:3
+    ax = Axis(fig[i, j]; aspect = 1)
+    hm = heatmap!(ax, 1:10, 1:10, rand(10, 10); colorrange = (0, 1),
+        colormap = cmaps[5j])
+    Colorbar(fig[1:2, j+1]; limits=(0,1), colormap = cmaps[5j], ticklabelsize = 14,
+        height = Relative(0.85), ticks = [0, 0.5, 1], tickwidth = 2)
+end
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapCbarBottom.html b/previews/PR54/examples/2d/heatmaps/heatmapCbarBottom.html new file mode 100644 index 00000000..6518304a --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapCbarBottom.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with bottom colorbar

julia
using CairoMakie, Random
+
+Random.seed!(123)
+fig = Figure(;size = (600, 400))
+ax = Axis(fig[1, 1], aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(rand(20, 20), colormap = :lajolla)
+Colorbar(fig[2, 1], hmap, label = "values", height = 15, vertical = false,
+    flipaxis = false, ticksize = 15, tickalign = 1, width = Relative(0.5))
+rowsize!(fig.layout, 1, Aspect(1, 0.5))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapCbarLeft.html b/previews/PR54/examples/2d/heatmaps/heatmapCbarLeft.html new file mode 100644 index 00000000..2465180b --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapCbarLeft.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with left colorbar

julia
using CairoMakie, Random
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 2]; xlabel = "x", ylabel = "y")
+hmap = heatmap!(2rand(20, 20) .- 1; colormap = :Spectral_11)
+Colorbar(fig[1, 1], hmap; label = "values", width = 15, flipaxis = false,
+    ticksize = 15, tickalign = 1)
+colsize!(fig.layout, 2, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapCbarTop.html b/previews/PR54/examples/2d/heatmaps/heatmapCbarTop.html new file mode 100644 index 00000000..2ffdf1e2 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapCbarTop.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with top colorbar

julia
using CairoMakie, Random
+CairoMakie.activate!() #HIDE
+
+Random.seed!(123)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[2, 1], aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(rand(20, 20), colormap = :CMRmap)
+Colorbar(fig[1, 1], hmap, label = "values", height = 15, vertical = false,
+    ticksize = 15, tickalign = 1, width = Relative(0.5))
+rowsize!(fig.layout, 2, Aspect(1, 0.5))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapGrid.html b/previews/PR54/examples/2d/heatmaps/heatmapGrid.html new file mode 100644 index 00000000..0a035a8d --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapGrid.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmaps: grid

julia
using CairoMakie, Random, ColorSchemes
+
+Random.seed!(21)
+cmaps = collect(keys(colorschemes))
+fig = Figure(; size = (1200, 800), fontsize = 20)
+for i in 1:2, j in 1:2:5
+    ax = Axis(fig[i, j], aspect = 1, xticks = [1, 10], yticks = [1, 10])
+    hmap = heatmap!(ax, 1:10, 1:10, rand(10, 10); colorrange = (0, 1),
+        colormap = cmaps[rand(1:length(cmaps))])
+    Colorbar(fig[i, j+1], hmap; height = Relative(0.5), tickwidth = 2,
+        ticks = [0, 0.5, 1])
+end
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapIrregular.html b/previews/PR54/examples/2d/heatmaps/heatmapIrregular.html new file mode 100644 index 00000000..e5ca13fc --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapIrregular.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap irregular steps

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = y = sqrt.(1:10:101)
+z = abs.(randn(10, 10))
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1]; aspect = 1, xlabel = "x", ylabel = "y")
+hmap = heatmap!(x, y, z; colormap = :magma)
+Colorbar(fig[1, 2], hmap; label="z values", width=15, ticksize=15, tickalign=1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapIrregularCategories.html b/previews/PR54/examples/2d/heatmaps/heatmapIrregularCategories.html new file mode 100644 index 00000000..a0788a44 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapIrregularCategories.html @@ -0,0 +1,59 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: Irregular Categories

Example by @walra356 (modified)

julia
using CairoMakie, Random
+Random.seed!(13)
+
+
+n= 5
+x = rand(n)                        # specify x steplength
+y = rand(n)                        # specify y steplength
+σ = rand(length(x), length(y))      # beware of dims
+
+# custom ticks
+function steps(x::Vector{T} where T<:Real)
+    sum(x .< 0) == 0 || error("Error: $x - negative step length not allowed")
+    return (s = append!(eltype(x)[0],x); [Base.sum(s[1:i]) for i  Base.eachindex(s)])
+end
+function stepcenters(x::Vector{T} where T<:Real)
+    δ = x .* 0.5
+    s = append!(eltype(x)[0],x)
+    return [Base.sum(s[1:i]) for i  Base.eachindex(x)] .+ δ
+end
+stepedges(x::Vector{T} where T<:Real) = steps(x)
+
+# the actual plot
+theme = Theme(fontsize = 16, colormap = :gist_earth, ; size = (750,450))
+set_theme!(theme)
+
+attr1 = (xticks = (stepcenters(x),string.(1:n)),
+    yticks = (stepcenters(y), string.(1:n)), xlabel = "cat", )
+attr2 = (xticks = (stepedges(x),string.(0:n)),
+    yticks = (stepedges(y), string.(0:n)), xlabel="cat", )
+
+fig = Figure()
+ax1 = Axis(fig[1,1]; attr1...)
+ax2 = Axis(fig[1,2]; attr2...)
+heatmap!(ax1, steps(x), steps(y), σ)
+heatmap!(ax2, steps(x), steps(y), σ)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapLogIrregular.html b/previews/PR54/examples/2d/heatmaps/heatmapLogIrregular.html new file mode 100644 index 00000000..52c31326 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapLogIrregular.html @@ -0,0 +1,49 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: log scales

julia
using CairoMakie, Colors, ColorSchemes, Random
+
+Random.seed!(38)
+x = y = 1:100
+z = exp10.(2 * rand(100, 100))
+z[1, 1] = 99
+z[2, 1] = 90
+z[3, 1] = 10
+cmap = cgrad(:gnuplot, scale = :log10)
+ticks = (vcat(collect(1:9), collect(10:10:100)),
+    ["1", fill("", 8)..., "10", fill("", 8)..., "10²"])
+
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1], xscale = log10, yscale = log10,
+    xlabel = "x", ylabel = "y")
+hmap = heatmap!(x, y, z, colormap = cmap, colorrange = (1, 100))
+cbar = Colorbar(fig[1, 2], hmap, label = "z values",
+    width = 15, ticksize = 15, labelsize = 18, ticklabelsize = 18,
+    tickalign = 1, minortickalign = 1,
+    scale = log10)
+ax.xticks = ticks
+ax.yticks = ticks
+cbar.ticks = ticks
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colgap!(fig.layout, 7)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapScaleAdd.html b/previews/PR54/examples/2d/heatmaps/heatmapScaleAdd.html new file mode 100644 index 00000000..676394f9 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapScaleAdd.html @@ -0,0 +1,67 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: scales added

by @walra356

julia
using CairoMakie
+
+supertitle = "adding physical scale to exposure heatmap of camera chip"
"adding physical scale to exposure heatmap of camera chip"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                        # pixel dimensions camera chip
+(px, py) = (1:dimX, 1:dimY)                 # pixel positions
+(ix, iy) = (10, 3)                          # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (0.0, 0.0)                           # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([2.0, 6.0, 10.0, 14.0, 18.0, 22.0, 26.0, 30.0, 34.0, 38.0  …  122.0, 126.0, 130.0, 134.0, 138.0, 142.0, 146.0, 150.0, 154.0, 158.0], [2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, 42.5, 47.5  …  102.5, 107.5, 112.5, 117.5, 122.5, 127.5, 132.5, 137.5, 142.5, 147.5])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ = σ[px, py]                                # exposure matrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (0.0 μm, 0.0 μm)\n            w.r.t. left-bottom edge of camera chip\n            \nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+
+fig = Figure()

specify attributes

julia
fsize = fig.scene.theme.fontsize.val
+fres = fig.scene.theme.size.val[1]
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 100, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 100, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr4 = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.98),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.98f0))

create axes, add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+hm1 = heatmap!(ax1, px, py, σ)
+hm2 = heatmap!(ax2, x, y, σ)
+ax4 = Colorbar(fig, hm1; attr4...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+axt = Label(fig, text = supertitle, fontsize = 2fsize)
Label()

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = ax4
+fig[2, :] = axn
+fig[0, :] = axt
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapScaleCrosshair.html b/previews/PR54/examples/2d/heatmaps/heatmapScaleCrosshair.html new file mode 100644 index 00000000..ac697ae8 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapScaleCrosshair.html @@ -0,0 +1,67 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: scale crosshair

by @walra356

julia
using CairoMakie
+
+supertitle = "adding a crosshair to exposure heatmap of camera chip"
"adding a crosshair to exposure heatmap of camera chip"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                        # pixel dimensions camera chip
+(px, py) = (1:dimX, 1:dimY)                 # pixel positions
+(ix, iy) = (10, 3)                          # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (edges(ix, Δx, 0), edges(iy, Δy, 0)) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([-36.0, -32.0, -28.0, -24.0, -20.0, -16.0, -12.0, -8.0, -4.0, 0.0  …  84.0, 88.0, 92.0, 96.0, 100.0, 104.0, 108.0, 112.0, 116.0, 120.0], [-10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0  …  90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0, 125.0, 130.0, 135.0])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ = σ[px, py]                                # exposure matrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (38.0 μm, 12.5 μm)\n            w.r.t. left-bottom edge of camera chip\n            \nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ, 1)) / (Δy * size(σ, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.98),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.98f0))

create axes, add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+hm1 = heatmap!(ax1, px, py, σ)
+hm2 = heatmap!(ax2, x, y, σ)
+axc = Colorbar(fig, hm1; attrc...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+axt = Label(fig, text = supertitle, fontsize = 2fsize)
+lnh = lines!(ax2, x, fill(0, length(x)), color = :white, linewidth = 1)
+lnv = lines!(ax2, fill(0, length(y)), y, color = :white, linewidth = 1)
Lines{Tuple{Vector{Point{2, Float64}}}}

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = axc
+fig[2, :] = axn
+fig[0, :] = axt
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapScaleDetail.html b/previews/PR54/examples/2d/heatmaps/heatmapScaleDetail.html new file mode 100644 index 00000000..ae5adba3 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapScaleDetail.html @@ -0,0 +1,76 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: scale-detail

by @walra356

julia
using CairoMakie
+
+supertitle = "viewing heatmap detail under conservation of physical scale"
"viewing heatmap detail under conservation of physical scale"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 512
+dimY = 512                       # pixel dimensions
+(px, py) = (1:dimX, 1:dimY)                  # pixel positions
+(sx, sy) = (100:150, 380:420)                # idem for submatrix
+(ix, iy) = (125, 400)                        # selected pixel
(125, 400)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (0.0, 0.0) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
+(u, v) = (edges(sx, Δx, Ox), edges(sy, Δy, Oy))  # idem for submatrix
([398.0, 402.0, 406.0, 410.0, 414.0, 418.0, 422.0, 426.0, 430.0, 434.0  …  562.0, 566.0, 570.0, 574.0, 578.0, 582.0, 586.0, 590.0, 594.0, 598.0], [1897.5, 1902.5, 1907.5, 1912.5, 1917.5, 1922.5, 1927.5, 1932.5, 1937.5, 1942.5  …  2052.5, 2057.5, 2062.5, 2067.5, 2072.5, 2077.5, 2082.5, 2087.5, 2092.5, 2097.5])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ1 = σ[px, py] # raw matrix
+σ2 = σ[sx, sy] # submatrix
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (0.0 μm, 0.0 μm)\n            w.r.t. left-bottom edge of camera chip\n            \nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\n            pixel position of light spot: (ix, y0) = (125, 400)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 500))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "raw data",
+  xticks = [px[1], ix, px[end]], yticks = [py[1], iy, py[end]],
+  xlabel = "x (pixel)", ylabel = "y (pixel)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attr2 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attr3 = (attr..., title = "physical detail",
+  xticks = [u[1] - Δx / 2, u[1+ix-sx[1]], u[end] + Δx / 2],
+  yticks = [v[1] - Δy / 2, v[1+iy-sy[1]], v[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ2, 1)) / (Δy * size(σ2, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.54),) # tweaked
(label = "exposure (counts)", ticksize = 14.4, tickalign = 1, width = 15, height = Relative(0.54f0))

create axes and add contents

julia
ax1 = Axis(fig; attr1...)
+ax2 = Axis(fig; attr2...)
+ax3 = Axis(fig; attr3...)
+hm1 = heatmap!(ax1, px, py, σ1)
+hm2 = heatmap!(ax2, x, y, σ1)
+hm3 = heatmap!(ax3, u, v, σ2)
+axc = Colorbar(fig, hm1; attrc...)
+axn = Label(fig, text = footnote, fontsize = 6fsize / 5) # footnote
+axt = Label(fig, text = supertitle, fontsize = 2fsize) # supertitle
Label()

create layout and show figure

julia
fig[1, 1] = ax1
+fig[1, 2] = ax2
+fig[1, 3] = ax3
+fig[1, 4] = axc
+fig[2, :] = axn
+fig[0, :] = axt
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapScaleSections.html b/previews/PR54/examples/2d/heatmaps/heatmapScaleSections.html new file mode 100644 index 00000000..4f194bb4 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapScaleSections.html @@ -0,0 +1,85 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: scale sections

by @walra356

julia
using CairoMakie
+
+supertitle = "heatmap of camera chip exposure with x and y sections"
"heatmap of camera chip exposure with x and y sections"

define transformation from pixel coordinates to physical coordinates

julia
edges(p, Δx, x0) = collect(p .* Δx) .- (x0 + 0.5Δx)
edges (generic function with 1 method)

parameters camera chip (pixel coordinates)

julia
dimX = 40
+dimY = 30                       # pixel dimensions
+(px, py) = (1:dimX, 1:dimY)                  # pixel positions
+(ix, iy) = (10, 3)                        # selected pixel
(10, 3)

physical coordinates

julia
(Δx, Δy) = (4.0, 5, 0)                       # pixel lattice periods (μm)
+(Ox, Oy) = (edges(ix, Δx, 0), edges(iy, Δy, 0)) # manual offset (μm)
+(x, y) = (edges(px, Δx, Ox), edges(py, Δy, Oy)) # pixel positions (μm)
([-36.0, -32.0, -28.0, -24.0, -20.0, -16.0, -12.0, -8.0, -4.0, 0.0  …  84.0, 88.0, 92.0, 96.0, 100.0, 104.0, 108.0, 112.0, 116.0, 120.0], [-10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0  …  90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0, 125.0, 130.0, 135.0])

create exposure matrix σ (model alternative for measurement file)

julia
valmax = 500.0                              # maximum value exposure matrix
+exposure(i, j, ix, iy, wx, wy) = 0.9valmax *
+                                  (exp(-(((i - ix) / wx)^2 + ((Δy / Δx) * (j - iy) / wy)^2)) + 0.1)
+σ = round.(Int, [exposure(i, j, ix, iy, 6, 6) for i = 1:dimX, j = 1:dimY])
+σ1 = σ[px, py]  # raw matrix
+sh = σ[:, iy]   # horizontal section (pixel row iy from bottom)
+sv = σ[ix, :]   # vertical section (pixel column ix from left)
+footnote = "Origin of coordinate system was shifted by ($Ox μm, $Oy μm)
+            w.r.t. left-bottom edge of camera chip
+            \nPixel lattice periods: (Δx = $Δx μm, Δy = $Δy μm);
+            pixel position of light spot: (ix, y0) = ($(ix), $(iy))"
"Origin of coordinate system was shifted by (38.0 μm, 12.5 μm)\n            w.r.t. left-bottom edge of camera chip\n            \nPixel lattice periods: (Δx = 4.0 μm, Δy = 5 μm);\n            pixel position of light spot: (ix, y0) = (10, 3)"

start actual plot

julia
theme = Theme(fontsize = 12, colormap = :gist_earth, ; size = (750, 850))
+set_theme!(theme)
+fig = Figure()

collect attributes

julia
fsize = fig.scene.theme.fontsize.val
+fresx = fig.scene.theme.size.val[1]
+fresy = fig.scene.theme.size.val[2]
+attr = (xlabelsize = 6fsize / 5, ylabelsize = 6fsize / 5, titlesize = 7fsize / 5,
+  xautolimitmargin = (0, 0), yautolimitmargin = (0, 0),)
+attr1 = (attr..., title = "physical scale",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xlabel = "x (μm)", ylabel = "y (μm)",
+  aspect = (Δx * size(σ1, 1)) / (Δy * size(σ1, 2)),)
+attrc = (label = "exposure (counts)", ticksize = 6fsize / 5, tickalign = 1,
+  width = 15, height = Relative(0.88),) # tweaked
+attrh = (attr..., title = "horizontal section",
+  xlabel = "x (μm)", ylabel = "exposure (counts)",
+  xticks = [x[1] - Δx / 2, x[ix], 50, x[end] + Δx / 2],
+  yticks = [0, 250, valmax],
+  limits = ((x[1] - Δx / 2, x[end] + Δx / 2), (0, valmax)),
+  height = fresy / 5, aspect = 2.05,) # tweaked
+attrv = (attr..., xlabel = "exposure (counts)",
+  xticks = [0, 250, valmax],
+  yticks = [y[1] - Δy / 2, y[iy], 50, y[end] + Δy / 2],
+  xreversed = true, yaxisposition = :right,
+  limits = ((0, valmax), (y[1] - Δy / 2, y[end] + Δy / 2)),
+  width = fresy / 5, aspect = 0.58,) # tweaked
(xlabelsize = 14.4, ylabelsize = 14.4, titlesize = 16.8, xautolimitmargin = (0, 0), yautolimitmargin = (0, 0), xlabel = "exposure (counts)", xticks = [0.0, 250.0, 500.0], yticks = [-12.5, 0.0, 50.0, 137.5], xreversed = true, yaxisposition = :right, limits = ((0, 500.0), (-12.5, 137.5)), width = 170.0, aspect = 0.58)

create axes and add contents

julia
ax1 = Axis(fig; attr1...)
+axh = Axis(fig; attrh...)
+axv = Axis(fig; attrv...)
+hm1 = heatmap!(ax1, x, y, σ1)
+axc = Colorbar(fig, hm1; attrc...)
+lfn = Label(fig, text = footnote, fontsize = 6fsize / 5)
+lst = Label(fig, text = supertitle, fontsize = 2fsize)
+lvs = Label(fig, text = "vertical section", padding = (0, 5, 0, 0),
+  rotation = pi / 2, fontsize = 7fsize / 5)
+sch = scatter!(axh, x, sh, color = :red, markersize = 5,)
+scv = scatter!(axv, sv, y, color = :red, markersize = 5)
+lnh = lines!(ax1, x, fill(0, length(x)), color = :white, linewidth = 1)
+lnv = lines!(ax1, fill(0, length(y)), y, color = :white, linewidth = 1)
Lines{Tuple{Vector{Point{2, Float64}}}}

create layout and show figure

julia
fig[1, 2] = axh
+fig[2, 1] = axv
+fig[2, 1, Left()] = lvs
+fig[2, 2] = ax1
+fig[2, 3] = axc
+fig[3, :] = lfn
+fig[0, :] = lst
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/heatmapxyz.html b/previews/PR54/examples/2d/heatmaps/heatmapxyz.html new file mode 100644 index 00000000..ccb3ca0e --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/heatmapxyz.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap: x, y positions

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = y = -5:1:5
+z = [x^2 + y^2 for x in x, y in y]
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1]; aspect = 1, xlabel = "x", ylabel = "y",
+    xticks = x, yticks = y)
+hmap = heatmap!(x, y, z, colormap = :Egypt)
+Colorbar(fig[1, 2], hmap, label = "z values", width = 15, ticksize = 15,
+    tickalign = 0.5)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/heatmaps/text_heatmap.html b/previews/PR54/examples/2d/heatmaps/text_heatmap.html new file mode 100644 index 00000000..1385c318 --- /dev/null +++ b/previews/PR54/examples/2d/heatmaps/text_heatmap.html @@ -0,0 +1,55 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

heatmap with text on top

julia
using CairoMakie, Random
+
+Random.seed!(123)
+m = 15
+n = 5
+data = rand(m, n)
+# some fake ticks
+alphabet = 'A':'E'
+yticks = string.(collect(alphabet))
+k = 4
+itr = Iterators.product(ntuple(_ -> alphabet, k)...)
+xticks = []
+for word in Base.Generator(join, itr)
+    push!(xticks, word)
+    if length(xticks) == m
+        break
+    end
+end
+xticks = string.(xticks)
+
+fig = Figure(size = (1200, 600), fontsize = 20)
+ax = Axis(fig[1, 1], xticks = (1:m, xticks), yticks = (1:n, yticks))
+hmap = heatmap!(ax, data, colormap = :plasma)
+for i in 1:15, j in 1:5
+    txtcolor = data[i, j] < 0.15 ? :white : :black
+    text!(ax, "$(round(data[i,j], digits = 2))", position = (i, j),
+        color = txtcolor, align = (:center, :center))
+end
+Colorbar(fig[1, 2], hmap; label = "values", width = 15, ticksize = 15)
+ax.xticklabelrotation = π / 3
+ax.xticklabelalign = (:right, :center)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/bins_counts.html b/previews/PR54/examples/2d/histogram/bins_counts.html new file mode 100644 index 00000000..c50fb0af --- /dev/null +++ b/previews/PR54/examples/2d/histogram/bins_counts.html @@ -0,0 +1,44 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

histograms bins counts

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+fig = Figure(; size = (1200, 800), fonts = (; regular= "sans"), fontsize = 20)
+ax1 = Axis(fig[1, 1]; xlabel = "value", ylabel = "samples")
+ax2 = Axis(fig[1, 2]; xlabel = "value", ylabel = "counts")
+ax3 = Axis(fig[2, 1]; xlabel = "value", ylabel = "counts")
+ax4 = Axis(fig[2, 2]; xlabel = "value", ylabel = "counts")
+#scatter plot
+scatter!(ax1, data, 1:n; markersize = 4, color = :black)
+hist!(ax2, data; label = "default")
+hist!(ax3, data; bins = 20, color = :orange, strokewidth = 1,
+    strokecolor = :black, label = "20 bins")
+hist!(ax4, data; bins = [-4, -2, -1, 0, 1, 2, 4], color = :gray90,
+    strokewidth = 1, strokecolor = :black, label = "manual bins")
+axislegend(ax2; position = :rt)
+axislegend(ax3; position = :rt)
+axislegend(ax4; position = :rt)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/hist.html b/previews/PR54/examples/2d/histogram/hist.html new file mode 100644 index 00000000..f44ad9cf --- /dev/null +++ b/previews/PR54/examples/2d/histogram/hist.html @@ -0,0 +1,46 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

histogram pdf normalization

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+cmap = resample_cmap(:linear_wcmr_100_45_c42_n256, 256;
+    alpha = rand(256))
+
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1])
+hist!(rand(Normal(2.6,0.4), 1000), normalization = :pdf, offset = -1,
+    #colormap=:plasma,
+    color = :values, direction = :x, fillto = -0.5)
+hist!(rand(Normal(2.6,0.4), 1000), normalization = :pdf, offset = 1,
+    color = :grey10, direction = :x, scale_to = -0.5)
+hist!(rand(Normal(0.2,0.2), 1000), normalization = :pdf, offset = 4,
+    strokewidth = 1, color = :transparent, strokecolor = :black,
+    direction = :y, scale_to = -1)
+hist!(rand(Normal(0.2,0.2), 1000), normalization = :pdf, color = :values,
+    #colormap = cmap,
+    strokewidth = 1, strokecolor = :black,
+    bar_labels = :values, label_color = :black, label_size = 12,
+    label_formatter=x-> round(x, digits=1))
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/hist_alpha.html b/previews/PR54/examples/2d/histogram/hist_alpha.html new file mode 100644 index 00000000..7473abd8 --- /dev/null +++ b/previews/PR54/examples/2d/histogram/hist_alpha.html @@ -0,0 +1,24 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie

hist(rand(1000); alpha = 0.5)

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/hist_pdf.html b/previews/PR54/examples/2d/histogram/hist_pdf.html new file mode 100644 index 00000000..032f5cf4 --- /dev/null +++ b/previews/PR54/examples/2d/histogram/hist_pdf.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Histogram and pdf

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+fig = Figure(; size = (600, 400))
+ax1 = Axis(fig[1, 1]; xlabel = "value")
+hist!(ax1, data; normalization = :pdf, color = (:green, 0.5), label = "hist & pdf")
+density!(ax1, data; color = (:orange, 0.25), label = "density!", strokewidth = 1)
+axislegend(ax1, position = :rt)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/hists_on_the_sides.html b/previews/PR54/examples/2d/histogram/hists_on_the_sides.html new file mode 100644 index 00000000..9a358356 --- /dev/null +++ b/previews/PR54/examples/2d/histogram/hists_on_the_sides.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Histograms on the sides

julia
using CairoMakie, Random
+# see also https://discourse.julialang.org/t/beautiful-makie-gallery/62523/31
+
+Random.seed!(123)
+n = 200
+x, y, color = randn(n) / 2, randn(n), randn(n)
+fig = Figure(; size=(600, 400))
+ax1 = Axis(fig[1, 1])
+ax2 = Axis(fig[2, 1])
+ax3 = Axis(fig[2, 2])
+hist!(ax1, x; color=(:orangered, 0.5), strokewidth=0.5)
+scatter!(ax2, x, y; color=color, markersize=10, strokewidth=0)
+hist!(ax3, y; direction=:x, color=(:dodgerblue, 0.5),
+    strokewidth=0.5)
+xlims!(ax1, -4, 4)
+limits!(ax2, -4, 4, -3, 3)
+ylims!(ax3, -3, 3)
+hideydecorations!(ax3, ticks=false, grid=false)
+hidexdecorations!(ax1, ticks=false, grid=false)
+colsize!(fig.layout, 1, Relative(2 / 3))
+rowsize!(fig.layout, 1, Relative(1 / 3))
+colgap!(fig.layout, 10)
+rowgap!(fig.layout, 10)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/normalizations.html b/previews/PR54/examples/2d/histogram/normalizations.html new file mode 100644 index 00000000..2b845fc3 --- /dev/null +++ b/previews/PR54/examples/2d/histogram/normalizations.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Histogram normalizations

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+normf = [:none, :pdf, :density, :probability]
+colors = Makie.wong_colors()
+fig = Figure(; size = (1200, 800), fonts = (; regular ="sans"), fontsize = 20)
+axs = [Axis(fig[i, j], xlabel = i == 2 ? "value" : "") for i in 1:2 for j in 1:2]
+[hist!(axs[i], data; normalization = normf[i], color = colors[i],
+    label = "$(normf[i])") for i in 1:4]
+[axislegend(axs[i], position = :rt) for i in 1:4]
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/histogram/parallel_image_hist.html b/previews/PR54/examples/2d/histogram/parallel_image_hist.html new file mode 100644 index 00000000..0fed8b1e --- /dev/null +++ b/previews/PR54/examples/2d/histogram/parallel_image_hist.html @@ -0,0 +1,52 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Histograms r,g,b colors on image

julia
using CairoMakie
+import TestImages, Images
+
+# example by @cormullion
+function  image_histogram()
+    img = TestImages.testimage("lighthouse")
+    reds = vec(float.(Images.red.(img)))
+    greens = vec(float.(Images.green.(img)))
+    blues = vec(float.(Images.blue.(img)))
+
+    fig = Figure(; size = (1200,400))
+    ax1 = Axis(fig[1, 1], aspect = DataAspect())
+    ax2 = Axis(fig[1, 2])
+    for (i, col) = enumerate([:red, :green, :blue])
+        hist!(ax2, (reds, greens, blues)[i];
+            scale_to=-0.6,
+            bins=60,
+            offset=i,
+            direction=:x,
+            color=(col, 0.85)
+            )
+    end
+    image!(ax1, rotr90(img))
+    hidedecorations!(ax1)
+    hidespines!(ax1)
+    fig
+end
+
+fig = with_theme(image_histogram, theme_ggplot2())
 Downloading artifact: images
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_cmap.html b/previews/PR54/examples/2d/lines/line_cmap.html new file mode 100644 index 00000000..1863cc65 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_cmap.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

line with colormap

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 100)
+fig = Figure(; size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+obj = lines!(x, sin.(x); color = x, colormap = :viridis, linewidth = 5)
+lines!(x, cos.(x), color = :black, label = "cos(x)", linewidth = 1)
+lines!(x, -cos.(x), color = :dodgerblue, label = "-cos(x)")
+axislegend(ax)
+Colorbar(fig[1, 2], obj, label = "sin(x)")
+colgap!(fig.layout, 5)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_cmaps.html b/previews/PR54/examples/2d/lines/line_cmaps.html new file mode 100644 index 00000000..432caae0 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_cmaps.html @@ -0,0 +1,38 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines width colormaps

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 50)
+fig = Figure(size = (800, 400))
+ax = Axis(fig[1, 1], xlabel = L"x", xlabelsize = 22)
+line1 = lines!(x, sin.(x); color = x, colormap = :thermal, linewidth = 4)
+line2 = lines!(x, cos.(x); color = sqrt.(x), colormap = :ice, linewidth = 4)
+line3 = lines!(x, -sin.(x); color = x .^ 2, colormap = :viridis, linewidth = 4)
+line4 = lines!(x, -cos.(x); color = x / 2, colormap = :plasma, linewidth = 4)
+lineas = [line1, line2, line3, line4]
+labels = [L"x", L"\sqrt{x}", L"x^{2}", L"x/2"]
+cbars = [Colorbar(fig[1, i+1], lineas[i], label = labels[i], labelsize = 22)
+            for i in 1:4]
+colgap!(fig.layout, 5)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_cmaps_a.html b/previews/PR54/examples/2d/lines/line_cmaps_a.html new file mode 100644 index 00000000..9f405cc1 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_cmaps_a.html @@ -0,0 +1,49 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines with colormap and colorbars around

julia
using CairoMakie, ColorSchemes
+
+x = range(0, , 50)
+fig = Figure(size = (800, 600), fontsize = 22)
+ax = Axis(fig, xlabel = L"x", ylabel = L"y")
+line1 = lines!(x, sin.(x), color = x, colormap = :thermal, linewidth = 4)
+line2 = lines!(x, cos.(x), color = sqrt.(x), colormap = :ice, linewidth = 4)
+line3 = lines!(x, -sin.(x), color = x .^ 2, colormap = :viridis, linewidth = 4)
+line4 = lines!(x, -cos.(x), color = x / 2, colormap = :plasma, linewidth = 4)
+labels = [L"x", L"\sqrt{x}", L"x^{2}", L"x/2"]
+cbar1 = Colorbar(fig, line1, label = labels[1], width = 10, ticksize = 5)
+cbar2 = Colorbar(fig, line2, label = labels[2], flipaxis = false,
+    height = Relative(3.5 / 4), width = 10, ticksize = 10)
+cbar3 = Colorbar(fig, line3, label = labels[3], vertical = false, ticksize = 10,
+    tickalign = 0, flipaxis = false, width = Relative(4 / 4), height = 10,
+    tickcolor = :red)
+cbar4 = Colorbar(fig, line4, label = labels[4], vertical = false,
+    width = Relative(3 / 4), height = 10, ticksize = 10, tickalign = 1)
+fig[1, 2] = cbar4
+fig[2, 1] = cbar2
+fig[2, 2] = ax
+fig[2, 3] = cbar1
+fig[3, 2] = cbar3
+colgap!(fig.layout, 5)
+rowgap!(fig.layout, 5)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_colored.html b/previews/PR54/examples/2d/lines/line_colored.html new file mode 100644 index 00000000..d5423029 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_colored.html @@ -0,0 +1,46 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines colored with discrete colors from colormap: Legend

julia
using CairoMakie, ColorSchemes
+
+xs = 0:0.01:1
+p = -10:1:10
+p = filter(x -> x != 0, collect(p))
+psize = length(p)
+ys = zeros(length(xs), psize)
+for (indx, i) in enumerate(p)
+    if i <= -1
+        ys[:, indx] = xs .^ (1 / abs(i))
+    elseif i >= 1
+        ys[:, indx] = xs .^ i
+    end
+end
+cbarPal = :thermal
+cmap = cgrad(colorschemes[cbarPal], psize, categorical = true)
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], aspect = 1, xlabel = L"x", ylabel = L"x^{p}",
+    xlabelsize = 22, ylabelsize = 22)
+[lines!(xs, ys[:, v], color = cmap[v], label = "$(p[v])") for v in 1:psize]
+Legend(fig[1, 2], ax, L"p"; nbanks = 2)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_colored_cbar.html b/previews/PR54/examples/2d/lines/line_colored_cbar.html new file mode 100644 index 00000000..2fd65c75 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_colored_cbar.html @@ -0,0 +1,46 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines colored with discrete colors from colormap: Colorbar

julia
using CairoMakie, ColorSchemes
+xs = 0:0.01:1
+p = -10:1:10
+p = filter(x -> x != 0, collect(p))
+psize = length(p)
+ys = zeros(length(xs), psize)
+for (indx, i) in enumerate(p)
+    if i <= -1
+        ys[:, indx] = xs .^ (1 / abs(i))
+    elseif i >= 1
+        ys[:, indx] = xs .^ i
+    end
+end
+cbarPal = :thermal
+cmap = cgrad(colorschemes[cbarPal], psize, categorical = true)
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"x^{p}",
+    xlabelsize = 22, ylabelsize = 22)
+[lines!(xs, ys[:, v], color = cmap[v]) for v in 1:psize]
+Colorbar(fig[1, 2], limits = (-10, 10), nsteps = psize, colormap = cmap,
+    label = L"p", ticksize = 20, width = 20, tickalign = 1)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_inset.html b/previews/PR54/examples/2d/lines/line_inset.html new file mode 100644 index 00000000..58762b56 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_inset.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Inset line plot

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = -3:0.05:3
+y = exp.(-x .^ 2)
+n = 15
+y[1:n] = y[1:n] .+ 0.02 * randn(n)
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "x", ylabel = "f(x)", xgridvisible = true,
+    ygridvisible = true)
+lines!(ax1, x, y, color = :red, label = "f(x)")
+axislegend()
+# inset
+ax2 = Axis(fig, bbox = BBox(140, 250, 200, 300), xticklabelsize = 12,
+    yticklabelsize = 12, title = "inset  at (140, 250, 200, 300)")
+lines!(ax2, x, y, color = :red)
+limits!(ax2, -3.1, -1.9, -0.05, 0.05)
+ax2.yticks = [-0.05, 0, 0.05]
+ax2.xticks = [-3, -2.5, -2]
+translate!(ax2.scene, 0, 0, 10);
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_inset_h.html b/previews/PR54/examples/2d/lines/line_inset_h.html new file mode 100644 index 00000000..d1e54334 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_inset_h.html @@ -0,0 +1,49 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Inset heatmap

julia
using CairoMakie
+
+x = y = -10:0.11:10
+y1d = sin.(x) ./ x
+# 3D heatmap
+sinc2d(x, y) = sin.(sqrt.(x .^ 2 + y .^ 2)) ./ sqrt.(x .^ 2 + y .^ 2)
+fxy = [sinc2d(x, y) for x in x, y in y]
+
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], xlabel = "x", ylabel = "f(x)", xgridvisible = true,
+    ygridvisible = true)
+lines!(ax1, x, y1d, color = :red, label = "sinc(x)")
+axislegend()
+# inset
+ax2 = Axis(fig, bbox = BBox(140, 260, 260, 350), xticklabelsize = 12,
+    yticklabelsize = 12, title = "inset  at (140, 260, 260, 350)")
+hmap = heatmap!(ax2, x, y, fxy, colormap = :Spectral_11)
+Colorbar(fig[1, 1], hmap, label = "sinc(x,y)", labelpadding = 5,
+    tellheight = false, tellwidth = false, ticklabelsize = 12,
+    width = 10, height = Relative(1.5 / 4),
+    halign = :right, valign = :center)
+limits!(ax2, -10, 10, -10, 10)
+hidespines!(ax2)
+ax2.yticks = [-10, 0, 10]
+ax2.xticks = [-10, 0, 10]
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_latex.html b/previews/PR54/examples/2d/lines/line_latex.html new file mode 100644 index 00000000..df6d26f9 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_latex.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines, latex fonts

julia
using CairoMakie
+x = 0:0.05:
+fig = Figure(size = (600, 400), fonts = (; regular= "CMU Serif")) ## probably you need to install this font in your system
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"f (x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+lines!(x, x -> sin(3x) / (cos(x) + 2) / x; label = L"\frac{\sin(3x)}{x(\cos(x) + 2)}")
+lines!(x, x -> cos(x) / x; label = L"\cos(x)/x")
+lines!(x, x -> exp(-x); label = L"e^{-x}")
+ylims!(-0.6, 1.05)
+xlims!(-0.5, 12)
+axislegend(L"f(x)"; position = :rt, backgroundcolor = (:grey90, 0.25));
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_latex_bessel.html b/previews/PR54/examples/2d/lines/line_latex_bessel.html new file mode 100644 index 00000000..8a553626 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_latex_bessel.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

besselj lines with latex fonts

julia
using CairoMakie, LaTeXStrings, SpecialFunctions
+
+x = 0:0.1:15
+fig = Figure(size = (600, 400), fonts =(; regular= "CMU Serif"))
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"J_{\nu}(x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+for ν in 0:6
+    lines!(ax, x, besselj.(ν, x), label = latexstring("J_{$(ν)}(x)"))
+end
+axislegend(; nbanks = 3, framecolor = (:grey, 0.5));
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_latex_bessels.html b/previews/PR54/examples/2d/lines/line_latex_bessels.html new file mode 100644 index 00000000..e40a29d6 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_latex_bessels.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

bessely width latex fonts

julia
using CairoMakie, LaTeXStrings, SpecialFunctions
+
+x = 0.1:0.1:15
+
+fig = Figure(size = (600, 400), fonts = (; regular="CMU Serif")) ## probably you need to install this font in your system
+ax = Axis(fig[1, 1], xlabel = L"x", ylabel = L"Y_{\nu}(x)", ylabelsize = 22,
+    xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1,
+    xticksize = 10, ytickalign = 1, yticksize = 10, xlabelpadding = -10)
+for ν in 0:4
+    lines!(ax, x, bessely.(ν, x), label = latexstring("Y_{$(ν)}(x)"), linewidth = 2)
+end
+axislegend(; position = :rb, nbanks = 2, framecolor = (:grey, 0.5))
+ylims!(-1.8, 0.7)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_single.html b/previews/PR54/examples/2d/lines/line_single.html new file mode 100644 index 00000000..ad4650db --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_single.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

simple line

julia
using CairoMakie
+
+x = 1:10
+lines(x, x .^ 2; color = :black, linewidth = 2, linestyle = :dashdot, label = L"x^2",
+    figure = (size = (600, 400), backgroundcolor = "#a5b4b5",
+        fonts = (; regular = "CMU Serif")),
+    axis = (xlabel = L"x", ylabel = L"x^2", backgroundcolor = :white,
+        xlabelsize = 22, ylabelsize = 22))
+axislegend("legend", position = :lt)
+limits!(0, 10, 0, 100)
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_time.html b/previews/PR54/examples/2d/lines/line_time.html new file mode 100644 index 00000000..08e417e0 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_time.html @@ -0,0 +1,31 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Time ticks on x axis

julia
using CairoMakie, TimeSeries, Dates
+# dummy data
+dates = Date(2018, 1, 1):Day(1):Date(2018, 12, 31)
+ta = TimeArray(dates, rand(length(dates)))
+
+fig = Figure(size=(600, 400), fonts=(;regular = "sans"))
+ax = Axis(fig[1, 1], xlabel="Date", ylabel="value")
+line1 = lines!(ax, timestamp(ta), values(ta); color=:black, linewidth=0.85)
Lines{Tuple{Vector{Point{2, Float64}}}}

ax.xticklabelrotation = π / 4 ax.xticklabelalign = (:right, :center)

julia
fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_twin_axis.html b/previews/PR54/examples/2d/lines/line_twin_axis.html new file mode 100644 index 00000000..19683e83 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_twin_axis.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

twin axis

julia
using CairoMakie
+
+fig = Figure(size = (600, 400))
+ax1 = Axis(fig[1, 1], yticklabelcolor = :black, rightspinevisible = false)
+ax2 = Axis(fig[1, 1], yaxisposition = :right,
+    yticklabelcolor = :dodgerblue,
+    rightspinecolor = :dodgerblue,
+    ytickcolor = :dodgerblue)
+lines!(ax1, 0 .. 10, x -> x; color = :black)
+lines!(ax2, 0 .. 10, x -> exp(-x); color = :dodgerblue)
+hidespines!(ax2, :l, :b, :t)
+hidexdecorations!(ax2);
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_two.html b/previews/PR54/examples/2d/lines/line_two.html new file mode 100644 index 00000000..7ad373b1 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_two.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

two lines

julia
using CairoMakie
+
+x = -:0.1:
+lines(x, sin.(x); color = "#56B4E9", linewidth = 2, label = L"sin",
+    axis = (xlabel = L"x", ylabel = L"f(x)", xgridcolor = :red,
+        xlabelsize = 22, ylabelsize = 22,
+        xgridstyle = :dashdot, xgridwidth = 0.85,
+        xtickalign = 1, xticksize = 20),
+    figure = (size = (600, 400), fonts = (; regular= "CMU Serif")))
+
+lines!(x, cos.(x); color = :black, linestyle = :dash, label = L"cos")
+limits!(-, , -1, 1)
+axislegend("Legend", position = :lb);
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_xlog.html b/previews/PR54/examples/2d/lines/line_xlog.html new file mode 100644 index 00000000..36c8afff --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_xlog.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

x log scale

julia
using CairoMakie
+
+x = range(0.01, 30π, 2000)
+y = sin.(x)
+lines(x, y; color = :black, figure = (size = (600, 400),),
+    axis = (xscale = log10, xlabel = "x", ylabel = "y", xgridstyle = :dash,
+        ygridstyle = :dash, xminorticksvisible = true,
+        xminorticks = IntervalsBetween(9))) ## possible issue with log-ticks
+ylims!(-1, 1)
+current_figure()
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_xylog.html b/previews/PR54/examples/2d/lines/line_xylog.html new file mode 100644 index 00000000..54237315 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_xylog.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

x and y log scales

julia
using CairoMakie, Random
+
+Random.seed!(123)
+x = 0.001:0.05:10
+y = x .^ 2 .+ abs.(2 * randn(length(x)))
+lines(x, y, color=:navy, figure=(size=(600, 400),),
+    axis=(xscale=log10, yscale=log10, xlabel="x", ylabel="y",
+        xgridstyle=:dash, ygridstyle=:dash, xminorticksvisible=true,
+        xminorticks=IntervalsBetween(9), yminorticksvisible=true,
+        yminorticks=IntervalsBetween(9)))
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/lines/line_ylog.html b/previews/PR54/examples/2d/lines/line_ylog.html new file mode 100644 index 00000000..927e7a89 --- /dev/null +++ b/previews/PR54/examples/2d/lines/line_ylog.html @@ -0,0 +1,33 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

y log scale

julia
using CairoMakie
+
+x = range(0.01, 30π, 2000)
+y = cos.(x)
+lines(y, x; color=:orangered, figure=(size=(600, 400),),
+    axis=(yscale=log10, xlabel="x", ylabel="y", xgridstyle=:dash,
+        ygridstyle=:dash, yminorticksvisible=true,
+        yminorticks=IntervalsBetween(9))) ## possible issue with log-ticks
+xlims!(-1, 1)
+current_figure()
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/linesegments/RRGraph.html b/previews/PR54/examples/2d/linesegments/RRGraph.html new file mode 100644 index 00000000..14d037e7 --- /dev/null +++ b/previews/PR54/examples/2d/linesegments/RRGraph.html @@ -0,0 +1,82 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

RRGraph

julia
# port from the original code used in:
+# L Alonso, et. al. https://doi.org/10.1093/comnet/cnx053
+using LinearAlgebra, Random, CairoMakie
+
+function RRGAdjacencyM(; lengthBase=1, radius=0.1, nodes=500, rseed=123)
+    Random.seed!(rseed)
+    xy = rand(nodes, 2)
+    x = lengthBase .* xy[:, 1]
+    y = xy[:, 2] ./ lengthBase
+    matrixAdjDiag = Diagonal(2 * randn(nodes))
+    matrixAdj = zeros(nodes, nodes)
+    for point in 1:nodes-1
+        distance = sqrt.((x[point+1:end] .- x[point]) .^ 2 .+ (y[point+1:end] .- y[point]) .^ 2)
+        dindx = findall(distance .<= radius) .+ point
+        if length(dindx) > 0
+            rnd = randn(length(dindx))
+            matrixAdj[point, dindx] = rnd
+            matrixAdj[dindx, point] = rnd
+        end
+    end
+    return (matrixAdj .+ matrixAdjDiag, x, y)
+end
+adjacencyM, x, y = RRGAdjacencyM()
+
+function getGraphEdges(adjMatrix, x, y)
+    xyos = []
+    weights = []
+    for i in eachindex(x), j in i+1:length(x)
+        if adjMatrix[i, j] != 0.0
+            push!(xyos, [x[i], y[i]])
+            push!(xyos, [x[j], y[j]])
+            push!(weights, adjMatrix[i, j])
+            push!(weights, adjMatrix[i, j])
+        end
+    end
+    return (Point2f.(xyos), Float32.(weights))
+end
+
+function plotGraph(adjacencyM, x, y)
+    cmap = (:Spectral_11, 0.75)
+    adjmin = minimum(adjacencyM)
+    adjmax = maximum(adjacencyM)
+    diagValues = diag(adjacencyM)
+    segm, weights = getGraphEdges(adjacencyM, x, y)
+
+    fig, ax, pltobj = linesegments(segm; color=weights, colormap=cmap,
+        linewidth=abs.(weights) / 2, colorrange=(adjmin, adjmax),
+        figure=(; size=(800, 600)),
+        axis=(; aspect=DataAspect()))
+    scatter!(ax, x, y; color=diagValues, markersize=3 * abs.(diagValues),
+        colorrange=(adjmin, adjmax), colormap=cmap)
+    limits!(ax, -0.02, 1.02, -0.02, 1.02)
+    Colorbar(fig[1, 2], pltobj, label="weights")
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+rrgraph = with_theme(theme_black()) do
+    plotGraph(adjacencyM, x, y)
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/linesegments/linesegments.html b/previews/PR54/examples/2d/linesegments/linesegments.html new file mode 100644 index 00000000..0ea3d6c6 --- /dev/null +++ b/previews/PR54/examples/2d/linesegments/linesegments.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

linesegments

julia
using CairoMakie, Random, Distributions
+Random.seed!(1234)
+b = Binomial(10, 0.85)
+n = 500
+function someSegments(; n = 50)
+    Point2f.(vec([[x, rand(b)] for i in 1:2, x = rand(n)]))
+end
+linesegments(someSegments(; n = n);
+    color = rand(n),
+    colormap = :Spectral_11, linewidth = abs.(randn(n)),
+    axis = (; xlabel = "x", ylabel = "y"),
+    figure = (; size = (600,400))
+    );
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/poly/poly_ngon.html b/previews/PR54/examples/2d/poly/poly_ngon.html new file mode 100644 index 00000000..c19e7c8b --- /dev/null +++ b/previews/PR54/examples/2d/poly/poly_ngon.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

poly ngonShape

julia
using CairoMakie, CairoMakie.GeometryBasics
+
+n = 20
+function ngonShape(h, k, r, n)
+    Polygon([Point2f(h .+ r*sin.(m*/n),k .+ r*cos.(m*/n)) for m in 1:n])
+end
+polysCentric = [ngonShape(0, 0, 3/i^1.5, i) for i in 3:n]
+polysCircular = [ngonShape(2/2*sin(θ), 2/2*cos(θ), 0.15/√idx, idx + 2)
+    for (idx, θ) in enumerate(LinRange(0,*(1 -1/(n-2)), n-2))]
+cmap = resample_cmap(:linear_protanopic_deuteranopic_kbw_5_98_c40_n256, 100)[3:end]
+
+with_theme(theme_black()) do
+    fig, ax, = poly(polysCentric; color = 1:n-2, colormap = cmap,
+        axis = (;aspect = DataAspect()), figure = (;size = (600,400)))
+    poly!(polysCircular; color = 1:n-2, colormap = cmap)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/poly/poly_strokes.html b/previews/PR54/examples/2d/poly/poly_strokes.html new file mode 100644 index 00000000..e6908740 --- /dev/null +++ b/previews/PR54/examples/2d/poly/poly_strokes.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie
+
+f = Figure()
+Axis(f[1, 1])
Axis with 0 plots:

vector of shapes

julia
poly!(
+    [Rect(i, j, 0.75, 0.5) for i in 1:5 for j in 1:3],
+    color = :white,
+    strokewidth = 2,
+    strokecolor = 1:15,
+    strokecolormap=:plasma,
+)
+f

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatterlines/markers.html b/previews/PR54/examples/2d/scatterlines/markers.html new file mode 100644 index 00000000..cde707c8 --- /dev/null +++ b/previews/PR54/examples/2d/scatterlines/markers.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatter markers

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+scatterlines!(x, sin.(x), color = :black, label = "sin(x)",
+    marker = '◆', markersize = 10)
+scatterlines!(x, cos.(x), color = :black, label = "cos(x)",
+    marker = '■', markercolor = :red, markersize = 10,
+    strokewidth = 1, strokecolor = :red)
+axislegend(; position = :cc)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatterlines/scatters_line.html b/previews/PR54/examples/2d/scatterlines/scatters_line.html new file mode 100644 index 00000000..395789e2 --- /dev/null +++ b/previews/PR54/examples/2d/scatterlines/scatters_line.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatterlines + scatter with legend inside

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+lines!(x, sin.(x); color = :red, label = "sin(x)")
+scatterlines!(x, cos.(x); color = :blue, label = "cos(x)", markercolor = :black,
+    markersize = 10)
+scatter!(x, -cos.(x); color = :red, label = "-cos(x)", strokewidth = 1,
+    strokecolor = :red, markersize = 5, marker = '■')
+axislegend(; position = :lt, backgroundcolor = (:white, 0.85), framecolor = :green);
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatterlines/scatters_line_leg_out.html b/previews/PR54/examples/2d/scatterlines/scatters_line_leg_out.html new file mode 100644 index 00000000..ad71c855 --- /dev/null +++ b/previews/PR54/examples/2d/scatterlines/scatters_line_leg_out.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatters + line with Legend outside

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x")
+lines!(x, sin.(x), color = :red, label = "sin(x)")
+scatterlines!(x, cos.(x), color = :blue, label = "cos(x)", markersize = 5)
+scatter!(x, -cos.(x), color = :red, label = "-cos(x)", strokewidth = 1,
+    strokecolor = :red, markersize = 5, marker = '■')
+Legend(fig[1, 2], ax, merge = true)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatterlines/simple.html b/previews/PR54/examples/2d/scatterlines/simple.html new file mode 100644 index 00000000..0d15e8be --- /dev/null +++ b/previews/PR54/examples/2d/scatterlines/simple.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

simple scatterlines

julia
using CairoMakie
+
+x = LinRange(0, , 50)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "")
+scatterlines!(x, sin.(x);
+    color = :black,
+    markersize = 10,
+    label = "sin(x)")
+axislegend()
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatterlines/spirals.html b/previews/PR54/examples/2d/scatterlines/spirals.html new file mode 100644 index 00000000..e4a3b3cd --- /dev/null +++ b/previews/PR54/examples/2d/scatterlines/spirals.html @@ -0,0 +1,35 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

spiral scatterlines

julia
using CairoMakie
+n = 50
+t = range(0, 5*π, n)
+x(t; a = 0.0, b = -2.4) = (a + b*t) * cos(t)
+y(t; a = 0.0, b = -2.4) = (a + b*t) * sin(t)
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; aspect = DataAspect(), xlabel = "x", ylabel = "y")
+for (k,i) in enumerate(-4:-2)
+    scatterlines!(x.(t; b = i), y.(t; b = i))
+end
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/bubble_plot.html b/previews/PR54/examples/2d/scatters/bubble_plot.html new file mode 100644 index 00000000..79cafb1d --- /dev/null +++ b/previews/PR54/examples/2d/scatters/bubble_plot.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

bubble plot: scatters

julia
using CairoMakie, Random
+
+Random.seed!(124)
+n = 30
+x, y, z = randn(n), randn(n), randn(n)
+
+fig = Figure(; size = (600, 400), backgroundcolor=:transparent)
+ax = Axis(fig[1, 1]; xgridstyle = :dashdot, ygridstyle = :dashdot,
+    xtickalign = 1, ytickalign = 1,
+    backgroundcolor=:transparent)
+pts1 = scatter!(ax, 10x, y; color = z, colormap = (:viridis, 0.75),
+    markersize = 20z, marker = :rect)
+pts2 = scatter!(ax, 3x, 5y; color = z, colormap = (:thermal, 0.85),
+    markersize = 45z)
+
+Colorbar(fig[1, 2], pts1, label = "z1 value", ticklabelsize = 14,
+    labelpadding = 5, width = 10)
+Colorbar(fig[1, 3], pts2, label = "z2 value", ticklabelsize = 14,
+    labelpadding = 5, width = 10)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/bubble_plot_logxy.html b/previews/PR54/examples/2d/scatters/bubble_plot_logxy.html new file mode 100644 index 00000000..e8bf12aa --- /dev/null +++ b/previews/PR54/examples/2d/scatters/bubble_plot_logxy.html @@ -0,0 +1,50 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

bubble plot: scatters in x and y log scale

julia
using CairoMakie, Random, Colors
+
+Random.seed!(123)
+x = 10 .^ (range(-1, stop=1, length=100))
+y = x .^ 2 .+ abs.(2 * randn(length(x)))
+cmap = cgrad(:Hiroshige, scale=:log, alpha=0.5)
+
+fig, ax, pltpbj = scatter(x, y; markersize=(x .^ 2/3)[end:-1:1] .+ 6,
+    color=x, colormap=cmap,
+    figure=(;
+        size=(600, 400),
+        fonts=(;regular="CMU Serif"),
+        backgroundcolor=:transparent),
+    axis=(;
+        backgroundcolor=:transparent,
+        xscale=log10,
+        yscale=log10,
+        xlabel="x", ylabel="y",
+        xgridstyle=:dash,
+        ygridstyle=:dash,
+        xminorticksvisible=true,
+        yminorticksvisible=true,
+        xminorticks=IntervalsBetween(9),
+        yminorticks=IntervalsBetween(9)))
+Colorbar(fig[1, 2], pltpbj)
+ylims!(ax, 1e-1, 1e2)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/iris_dataset.html b/previews/PR54/examples/2d/scatters/iris_dataset.html new file mode 100644 index 00000000..ceca0014 --- /dev/null +++ b/previews/PR54/examples/2d/scatters/iris_dataset.html @@ -0,0 +1,41 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

iris dataset: scatter plot

julia
using CairoMakie, RDatasets, Random, Colors
+Random.seed!(4353)
+dset = dataset("datasets", "iris")
+byCat = dset.Species
+categ = unique(byCat)
+markers = [:circle, :diamond, :utriangle]
+
+fig = Figure(; size=(600, 400), backgroundcolor=:transparent)
+ax = Axis(fig[1, 1]; xlabel="Sepal Length", ylabel="Sepal Width",
+    backgroundcolor=:transparent)
+for (idx, c) in enumerate(categ)
+    indices = findall(x -> x == c, byCat)
+    scatter!(dset.SepalLength[indices], dset.SepalWidth[indices];
+        marker=markers[idx], color = rand(RGBf),
+        markersize=15, label="$(c)")
+end
+axislegend("Species")
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/makie_contributors.html b/previews/PR54/examples/2d/scatters/makie_contributors.html new file mode 100644 index 00000000..fba0e32b --- /dev/null +++ b/previews/PR54/examples/2d/scatters/makie_contributors.html @@ -0,0 +1,61 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Makie contributors

julia
using GLMakie, GitHub, Downloads, FileIO
+
+function getavatars(; n = 90)
+    contri = GitHub.contributors("JuliaPlots/Makie.jl")[1]
+    avatars = []
+    contributions = []
+    for i in eachindex(contri)
+        push!(avatars, contri[i]["contributor"].avatar_url.uri)
+        push!(contributions, contri[i]["contributions"])
+    end
+    p = sortperm(contributions, rev=true)
+    imgs = []
+    for i in p[1:n]
+        img_d = Downloads.download(avatars[i])
+        push!(imgs, load(img_d))
+    end
+    return imgs
+end
+avatars = getavatars()
+
+function plotcontributors(avatars)
+    fig = Figure(; size = (1200,600))
+    ax = Axis(fig[1,1], aspect = DataAspect())
+    k = 1
+    for i in 6:-1:1, j in 1:15
+        scatter!(ax, Point2f(j,i);
+            marker = #Circle,
+            image = avatars[k],
+            markersize = 70)
+        k += 1
+    end
+    hidedecorations!.(ax)
+    hidespines!.(ax)
+    limits!(ax, 0, 16, 0, 7)
+    fig
+end
+
+fig = plotcontributors(avatars)
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/scatter.html b/previews/PR54/examples/2d/scatters/scatter.html new file mode 100644 index 00000000..5cf99ebf --- /dev/null +++ b/previews/PR54/examples/2d/scatters/scatter.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatter

julia
using CairoMakie, Distributions
+using Random
+CairoMakie.activate!(type = "svg")
+Random.seed!(1234)
+d = Normal()
+b = Binomial(15, 0.7)
+n = 350
+
+scatter(rand(d,n), rand(b, n);
+    markersize = 12*abs.(rand(d, n)),
+    color = tuple.(:black, rand(n)),
+    strokewidth = 0.5,
+    strokecolor = :grey45,
+    axis = (;
+        xlabel = "x", ylabel = "y",
+        ),
+    figure = (;
+        size = (600,400),)
+        )
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/scatters_colormap.html b/previews/PR54/examples/2d/scatters/scatters_colormap.html new file mode 100644 index 00000000..6a1f751a --- /dev/null +++ b/previews/PR54/examples/2d/scatters/scatters_colormap.html @@ -0,0 +1,53 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatters with colormap

julia
using CairoMakie, Random, ColorSchemes
+CairoMakie.activate!(type = "svg")
+Random.seed!(123)
+n = 50
+x, y, color = rand(n), rand(n), rand(n)
+cmaps = [:cool, :viridis, :plasma, :inferno, :thermal,
+    :leonardo, :winter, :spring, :ice]
+markers = [:+, :diamond, :star4, :rtriangle, :rect,
+    :circle, :pentagon, :cross, :star5]
+
+function FigGridScatters()
+    fig = Figure(size = (1200, 800), backgroundcolor=:transparent)
+        c = 1
+        for i in 1:2, j in 1:2:5
+            ax = Axis(fig[i, j], aspect = AxisAspect(1), backgroundcolor=:transparent)
+            pnts = scatter!(x, y .^ c; color = color, colormap = cmaps[c],
+                markersize = 15, marker = markers[c], strokewidth = 0)
+            cbar = Colorbar(fig, pnts, height = Relative(0.75), tickwidth = 2,
+                tickalign = 1, width = 14, ticksize = 14)
+            fig[i, j+1] = cbar
+            limits!(ax, -0.1, 1.1, -0.1, 1.1)
+            ax.xticks = [0, 1]
+            ax.yticks = [0, 1]
+            ax.xticklabelsize = 20
+            ax.yticklabelsize = 20
+            c += 1
+        end
+    fig
+end
+fig = FigGridScatters()
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/scatters/scatters_legend.html b/previews/PR54/examples/2d/scatters/scatters_legend.html new file mode 100644 index 00000000..a2f00c82 --- /dev/null +++ b/previews/PR54/examples/2d/scatters/scatters_legend.html @@ -0,0 +1,29 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

scatters and axislegend: Legend inside

julia
using GLMakie
+fig = Figure()
+ax = Axis(fig[1,1])
+lines!(ax, 1:10, rand(10); label = "uno")
+lg = axislegend(ax)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/series/series.html b/previews/PR54/examples/2d/series/series.html new file mode 100644 index 00000000..3eafaa67 --- /dev/null +++ b/previews/PR54/examples/2d/series/series.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

multiple lines at once: series

julia
using CairoMakie, Random, LaTeXStrings
+Random.seed!(123)
+m = 200
+function spiral(; a = 1, n = 100, h = 0, k = 0)
+    φ = LinRange(rand() + 1, , n)
+    h .+  rand(-1:2:1)*a*cos.(φ)./φ, k .+  rand(-1:2:1)*a*sin.(φ)./φ
+end
+x = raw"x=a\,\cos(\varphi)/\varphi,\quad "
+y = raw"y=a\,\sin(\varphi)/\varphi,\quad "
+curves = [spiral(; a = rand(), h = rand(-1:1)) for i in 1:m]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1])
+series!(curves; color = resample_cmap(:bone_1, m), linewidth = 1.5)
+text!(latexstring(x * y * "\\varphi>0"), position = (-1,-1))
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/stairs/stairs.html b/previews/PR54/examples/2d/stairs/stairs.html new file mode 100644 index 00000000..2ee915e3 --- /dev/null +++ b/previews/PR54/examples/2d/stairs/stairs.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

stairs plot

julia
using CairoMakie, SpecialFunctions
+
+p(s, β) =+ 1)*a(β) * s^β * exp(-a(β)*s^+1))
+a(β) = gamma(((β + 2)/+ 1))^+ 1))
+s = LinRange(0,3,30)
+colors = ["#FF410D", "#6EE2FF", "#F7C530", "#95CC5E", "#D0DFE6", "#F79D1E"]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; palette = (; color = colors))
+for β in [0,1], step in [:pre, :center, :post]
+    stairs!(s, p.(s, β); linestyle = :solid, step = step, label = "$(β), :$(step)")
+end
+lines!(s, p.(s, 1), color = :grey30)
+lines!(s, p.(s, 0), color = :grey10)
+text!(L"p(s)=(\beta+1)a_{\beta}\,s^{\beta}\exp(-a_{\beta}s^{\beta+1})",
+    position = (0.7, 0.95), color = :black)
+text!(L"a_{\beta} = \Gamma[(\beta+2)/(\beta+1)]^{\beta + 1}",
+    position = (1.7, 0.25), color = :black)
+axislegend("β, step", position = :rt);
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/stem/stem.html b/previews/PR54/examples/2d/stem/stem.html new file mode 100644 index 00000000..7342f479 --- /dev/null +++ b/previews/PR54/examples/2d/stem/stem.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

stem plot

julia
using CairoMakie, Random
+Random.seed!(2)
+t = 0.3:0.3:
+my_markers = [:circle, :rect, :utriangle, :dtriangle, :diamond, :pentagon,
+    :cross, :xcross]
+
+fig, ax, = stem(t, 1.5exp.(-t/5).*cos.(t); color = 1:length(t),
+    colormap = :linear_wyor_100_45_c55_n256, stemcolor = 1:length(t),
+    stemcolormap = :linear_wcmr_100_45_c42_n256,
+    figure = (; size = (600,400)))
+stem!(t .+ 0.15, -cos.(t) ./ t .+ 0.25; color = :transparent,
+    stemwidth = 0.5, marker = :rect, markersize = 10, strokewidth = 1,
+    strokecolor = :black)
+stem!(1:8, 1.5randn(8); marker = my_markers,
+    color = tuple.(resample_cmap(:mk_12, 8), 0.65), stemlinestyle = :dash,
+    stemcolor = resample_cmap(:mk_12, 8), markersize = 15*rand(8) .+ 10,
+    strokewidth = 1.5, strokecolor = resample_cmap(:mk_12, 8))
+hidedecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/streamplot/complex_polya_field.html b/previews/PR54/examples/2d/streamplot/complex_polya_field.html new file mode 100644 index 00000000..7ef56e92 --- /dev/null +++ b/previews/PR54/examples/2d/streamplot/complex_polya_field.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

streamplot: complex polya field

julia
using CairoMakie
+
+x = y = -2:0.005:2
+f(z) = 1 / (z * (z^2 - z - 1 - 3im))
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+polya(x, y) = Point2f(real(f(x + 1im * y)), -imag(f(x + 1im * y)))
+
+fig = Figure(size = (900, 400))
+axs = [Axis(fig[1, i], aspect = 1) for i in 1:2]
+cmap = :roma
+streamplot!(axs[1], polya, -2 .. 2, -2 .. 2, colormap = [:black, :red],
+        gridsize = (40, 40), arrow_size = 6, linewidth = 1)
+pltobj2 = heatmap!(axs[2], x, y, fargs, colorrange = (-π, π), colormap = cmap)
+streamplot!(axs[2], polya, -2 .. 2, -2 .. 2, colormap = [:black, :black],
+        gridsize = (40, 40), arrow_size = 6, linewidth = 1)
+Colorbar(fig[1, 3], pltobj2, ticks = ([-π, -π / 2, 0, π / 2, π],
+        [L"-\pi", L"-\pi/2", L"0", L"\pi/2", L"\pi"]))
+limits!(axs[1], -2, 2, -2, 2)
+limits!(axs[2], -2, 2, -2, 2)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+colsize!(fig.layout, 2, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/streamplot/field_heatmap.html b/previews/PR54/examples/2d/streamplot/field_heatmap.html new file mode 100644 index 00000000..fb119b47 --- /dev/null +++ b/previews/PR54/examples/2d/streamplot/field_heatmap.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

streamplot over heatmap

julia
using CairoMakie
+
+testField(x, y) = Point2f(-x, 2y) # x'(t) = -x, y'(t) = 2y
+x = -2:0.1:4
+y = -2:0.1:2
+u2(x, y) = -x
+v2(x, y) = 2y
+z = [log10(sqrt(u2(x, y)^2 + v2(x, y)^2)) for x in x, y in y]
+
+fig = Figure(size = (600, 400), fontsize = 22, fonts = (;regular="CMU Serif"))
+ax = fig[1, 1] = Axis(fig, xlabel = L"x", ylabel = L"y")
+fs = heatmap!(ax, x, y, z, colormap = Reverse(:plasma))
+streamplot!(ax, testField, x, y, colormap = Reverse(:plasma),
+    gridsize = (32, 32), arrow_size = 10)
+Colorbar(fig[1, 2], fs, label = L"\log_{10}[(u^2+v^2)^{1/2}]", width = 20,
+    labelsize = 14, ticklabelsize = 14)
+colgap!(fig.layout, 5)
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/streamplot/ode_solution.html b/previews/PR54/examples/2d/streamplot/ode_solution.html new file mode 100644 index 00000000..243fa634 --- /dev/null +++ b/previews/PR54/examples/2d/streamplot/ode_solution.html @@ -0,0 +1,31 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

streamplot ode solution

julia
using CairoMakie
+
+odeSol(x, y) = Point2f(-x, 2y) # x'(t) = -x, y'(t) = 2y
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y", backgroundcolor = :black)
+streamplot!(ax, odeSol, -2 .. 4, -2 .. 2, colormap = Reverse(:plasma),
+    gridsize = (32, 32), arrow_size = 10)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/streamplot/poincare_vander.html b/previews/PR54/examples/2d/streamplot/poincare_vander.html new file mode 100644 index 00000000..f10d481a --- /dev/null +++ b/previews/PR54/examples/2d/streamplot/poincare_vander.html @@ -0,0 +1,40 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

streamplot: Poincare and Van der Paul

julia
using CairoMakie
+
+nonStablePoincare(x, y) = Point2f(x * (x^2 + y^2 - 1) - y * (x^2 + y^2 + 1), y * (x^2 + y^2 - 1) + x * (x^2 + y^2 + 1))
+stableVanDerPaul(x, y) = Point2f(y, (1 - x^2) * y - x)
+semiStable(x, y) = Point2f(-y + x * (-1 + x^2 + y^2)^2, x + y * (-1 + x^2 + y^2)^2)
+titles = ["non-stable", "stable", "semi-stable"]
+functions = [nonStablePoincare, stableVanDerPaul, semiStable]
+cmaps = [:plasma, :viridis, :gnuplot2]
+
+fig = Figure(size = (1800, 600), fontsize = 24)
+axs = [Axis(fig[1, i], xlabel = "x", ylabel = "y", title = titles[i],
+    aspect = 1, backgroundcolor = :black) for i in 1:3]
+[streamplot!(axs[i], functions[i], -4 .. 4, -4 .. 4, colormap = Reverse(cmaps[i]),
+    gridsize = (32, 32), arrow_size = 10) for i in 1:3]
+[hideydecorations!(axs[2], grid = false, ticks = false) for i in 2:3]
+[limits!(axs[i], -4, 4, -4, 4) for i in 1:3]
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/streamplot/streamplot.html b/previews/PR54/examples/2d/streamplot/streamplot.html new file mode 100644 index 00000000..a9ee41c4 --- /dev/null +++ b/previews/PR54/examples/2d/streamplot/streamplot.html @@ -0,0 +1,65 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

streamplot: Electric field lines

julia
using CairoMakie, LinearAlgebra
+
+function E(q, rx, ry, x, y)
+    d = sqrt((x-rx)^2 + (y-ry)^2)^3
+    return (q * (x - rx) / d, q * (y - ry) / d)
+end
+function charges(; nq = 2)
+    qs = []
+    for i in 1:nq
+        q = i % 2 * 2 - 1
+        push!(qs, (q, cos( * i / nq), sin( * i / nq)))
+    end
+    qs
+end
+function fieldE(x,y)
+    Ex, Ey = 0, 0
+    for q in qs
+        ex, ey = E(q..., x, y)
+        Ex += ex
+        Ey += ey
+    end
+    Point(Ex, Ey)
+end
+
+fig = Figure(size = (600,400))
+ax1 = Axis(fig[1,1]; aspect = DataAspect())
+ax2 = Axis(fig[1,2]; aspect = DataAspect())
+
+qs = charges()
+streamplot!(ax1, fieldE, -2..2, -2..2; arrow_size = 6, linewidth = 0.5,
+    colorrange = (-3,3), colormap = ([:black, :black, :orange, :red]))
+[scatter!(ax1, Point(qs[i][2:3]), color = qs[i][1] > 0 ? :red : :dodgerblue,
+    markersize = 10) for i in eachindex(qs)]
+qs = charges(; nq = 4)
+streamplot!(ax2, fieldE, -2..2, -2..2; arrow_size = 6, linewidth = 0.5,
+    colorrange = (-3,3), colormap = ([:black, :black, :orange, :red]))
+[scatter!(ax2, Point(qs[i][2:3]), color = qs[i][1] > 0 ? :red : :dodgerblue,
+    markersize = 10) for i in eachindex(qs)]
+limits!(ax2, -2,2,-2,2)
+hidedecorations!(ax1; grid = false)
+hidedecorations!(ax2; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/text/your_name.html b/previews/PR54/examples/2d/text/your_name.html new file mode 100644 index 00000000..a7c361ea --- /dev/null +++ b/previews/PR54/examples/2d/text/your_name.html @@ -0,0 +1,39 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

text: rich text

julia
using GLMakie
+using CairoMakie
+CairoMakie.activate!(type = "svg")
+#GLMakie.activate!()
+
+fig = Figure(figure_padding= 0, size = (320, 48),
+    backgroundcolor=:transparent,
+    fontsize = 48)
+ax = Axis(fig[1,1], backgroundcolor=:transparent)
+text!(ax, [0], [0],
+    text= rich(rich("Your", font="Bold"), " Name", font =:regular),
+    align = (:center, :center), color = :white)
+hidedecorations!(ax)
+hidespines!(ax)
+fig
┌ Warning: Could not find font Bold, using TeX Gyre Heros Makie
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:1353
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/violins/airquality.html b/previews/PR54/examples/2d/violins/airquality.html new file mode 100644 index 00000000..e46c2d6d --- /dev/null +++ b/previews/PR54/examples/2d/violins/airquality.html @@ -0,0 +1,38 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

violin plot: airquality data

julia
using CairoMakie, RDatasets, Colors, ColorSchemes
+
+airquality = dataset("datasets", "airquality")
+categories = ["Ozone", "Solar.R", "Wind", "Temp"]
+colors = categorical_colors(:Set1, length(categories))
+
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xticks = (1:length(categories), categories))
+for (indx, f) in enumerate(categories)
+    datam = filter(x -> x !== missing, airquality[:, f])
+    a = fill(indx, length(datam))
+    violin!(ax, a, datam; width = 0.35, color = (colors[indx], 0.45),
+        strokecolor = colors[indx], show_median = true, mediancolor = :black)
+end
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/violins/collection_violins.html b/previews/PR54/examples/2d/violins/collection_violins.html new file mode 100644 index 00000000..1fdc7f6b --- /dev/null +++ b/previews/PR54/examples/2d/violins/collection_violins.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

several violins: Normal distributions

julia
using CairoMakie, Distributions, Random
+
+Random.seed!(124)
+n = 4
+colors = resample_cmap(:seaborn_colorblind, 8)
+sides = [:left, :right, :right]
+
+fig = Figure(size = (600,400))
+ax = Axis(fig[1,1]; #palette = (; patchcolor = colors)
+    )
+for i in [-5,5], j in 1:n
+    violin!(fill(j, 1000), rand(Normal(i,rand()+0.5), 1000),
+    side = i >-3 ? sides[rand(1:3)] : :both
+    )
+end
+violin!(fill(2.5, 1000), rand(Normal(0,2.5), 1000); color = :transparent,
+    strokewidth = 0.85, strokecolor = :grey10, show_median = true,
+    mediancolor = :black)
+violin!(fill(4.5, 1000), rand(Normal(2,2), 1000); color = (:dodgerblue,0.1),
+    strokewidth = 0.85, strokecolor = :dodgerblue, show_median = true,
+    medianlinewidth = 3)
+ax.xticks = (1:n, string.('A':'D'))
+hideydecorations!(ax; grid = false)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/2d/violins/single.html b/previews/PR54/examples/2d/violins/single.html new file mode 100644 index 00000000..e2c7b7f3 --- /dev/null +++ b/previews/PR54/examples/2d/violins/single.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

single violin

julia
using CairoMakie, Random
+
+Random.seed!(13)
+n = 3000
+data = randn(n)
+a = fill(1, n)
+fig = Figure(size = (600, 400))
+ax = Axis(fig[1, 1], xlabel = "variable", ylabel = "values",
+    xticks = ([1], ["normal Distribution"]))
+violin!(ax, a, data; width = 0.35, color = (:orangered, 0.45),
+    show_median = true, mediancolor = :navy, strokecolor = :black,
+    strokewidth = 1, label = "vertical")
+limits!(ax, 0, 2, -5, 5)

axislegend(ax, position = :rt)

julia
fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/contour3d/contour_v.html b/previews/PR54/examples/3d/contour3d/contour_v.html new file mode 100644 index 00000000..60b18b19 --- /dev/null +++ b/previews/PR54/examples/3d/contour3d/contour_v.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contour in 3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1..10 # start, stop, intervl
+x_r = y_r = z_r = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+vol = [f(ix, iy, iz) for ix in x_r, iy in y_r, iz in z_r]
+# now the figure
+fig = Figure(; size = (800,800))
+ax = Axis3(fig[1,1]; perspectiveness = 0.5, azimuth = 2.19,
+    elevation = 0.57, aspect = (1, 1, 1))
+contour!(ax, x, y, z, vol; levels = 10, colormap = :Egypt, transparency = true)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/contour3d/contourf_contour3d.html b/previews/PR54/examples/3d/contour3d/contourf_contour3d.html new file mode 100644 index 00000000..6a7eaaa0 --- /dev/null +++ b/previews/PR54/examples/3d/contour3d/contourf_contour3d.html @@ -0,0 +1,52 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

contourf and contour3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function peaks(; n = 49)
+    x = LinRange(-3, 3, n)
+    y = LinRange(-3, 3, n)
+    a = 3 * (1 .- x').^2 .* exp.(-(x'.^2) .- (y .+ 1).^2)
+    b = 10 * (x' / 5 .- x'.^3 .- y.^5) .* exp.(-x'.^2 .- y.^2)
+    c = 1 / 3 * exp.(-(x' .+ 1).^2 .- y.^2)
+    return (x, y, a .- b .- c)
+end
+x, y, z = peaks()
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200,800))
+    ax1 = Axis(fig[1,1], aspect = 1)
+    ax2 = Axis3(fig[1,2]; aspect = (1,1,0.7), perspectiveness = 0.5)
+    axs = [ax1, ax2]
+    cmap =  :diverging_bkr_55_10_c35_n256
+    contourf!(axs[1], x, y, z; levels = 0.1:0.08:0.9, mode = :relative,
+        colormap = cmap)
+    # bug, colormap cannot be transparent
+    contourf!(axs[2], x, y, z; levels = 14, colormap = cmap)
+    contour3d!(axs[2], x, y, z; levels = 14, colormap = cmap,
+        transparency = true, linewidth = 5)
+    limits!(axs[1], -3,3,-3,3)
+    hidedecorations!.(axs; grid = false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/lines3d/archimedean_spiral.html b/previews/PR54/examples/3d/lines3d/archimedean_spiral.html new file mode 100644 index 00000000..e7e63f9e --- /dev/null +++ b/previews/PR54/examples/3d/lines3d/archimedean_spiral.html @@ -0,0 +1,51 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

line: archimedean spiral

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+a, m, z₀ = 1, 2.1, 0
+φ = range(0,20π,length=500)
+r = a*φ
+x, y, z = r .* cos.(φ), r .* sin.(φ), m .* r .+ z₀;
+
+with_theme(theme_black()) do
+    fig = Figure(size = (1200, 800))
+    ax = LScene(fig[1,1])
+    line3d = lines!(x, y, z, color = z, colormap = :viridis)
+    lines!(x, y, 0*z, color = z, colormap = (:viridis, 0.65))
+
+    axis = ax.scene[OldAxis]
+    axis[:names, :axisnames] = ("x", "y", "z")
+    tstyle = axis[:names] #  get the nested attributes and work directly with them
+    tstyle[:fontsize] = 10
+    tstyle[:textcolor] = (:red, :green, :white)
+    tstyle[:font] = "helvetica"
+    tstyle[:gap] = 5
+    axis[:ticks][:textcolor] = :white
+    axis[:ticks][:fontsize] = 5
+    Colorbar(fig[1,2], line3d, label = "z",ticklabelsize = 14,
+        width = 12, height = Relative(2/4), tickalign=0)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/lines3d/filled3d_curve.html b/previews/PR54/examples/3d/lines3d/filled3d_curve.html new file mode 100644 index 00000000..86d432f0 --- /dev/null +++ b/previews/PR54/examples/3d/lines3d/filled3d_curve.html @@ -0,0 +1,50 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Filled curve in 3d

From: https://discourse.julialang.org/t/fill-a-curve-in-3d/37890/8

julia
using GLMakie
+GLMakie.activate!()
+
+x = 0:0.05:3;
+y = 0:0.05:3;
+z = @. sin(x) * exp(-(x+y))
+
+fig = Figure(; size=(600, 400))
+ax = Axis3(fig[1,1]; limits=((0,3), (0,3), (0,0.2)),
+    perspectiveness = 0.5,
+    azimuth = -0.5,
+    elevation = 0.3,)
+lines!(Point3f.(x, 0, z), transparency=true)
+lines!(Point3f.(0, y, z), transparency=true)
+band!(Point3f.(x, y, 0), Point3f.(x, y, z);
+    color=(:orangered, 0.25), transparency=true)
+lines!(Point3f.(x, y, z); color=(:orangered, 0.9), transparency=true)
+fig

Filled gradient under 3D curve

julia
fig = Figure(; size=(600, 400))
+ax = Axis3(fig[1,1]; limits=((0,3), (0,3), (0,0.2)),
+    perspectiveness = 0.5,
+    azimuth = -0.5,
+    elevation = 0.3,)
+
+band!(Point3f.(x, y, 0), Point3f.(x, y, z); color = z,
+    colormap = (:Spectral, 0.85), transparency=true)
+lines!(Point3f.(x, y, z); color=(:black, 0.9), transparency=true)
+fig

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/lines3d/line3d.html b/previews/PR54/examples/3d/lines3d/line3d.html new file mode 100644 index 00000000..c2018164 --- /dev/null +++ b/previews/PR54/examples/3d/lines3d/line3d.html @@ -0,0 +1,34 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/lines3d/lines_wire_contour_3d.html b/previews/PR54/examples/3d/lines3d/lines_wire_contour_3d.html new file mode 100644 index 00000000..3fe1ca35 --- /dev/null +++ b/previews/PR54/examples/3d/lines3d/lines_wire_contour_3d.html @@ -0,0 +1,53 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

lines, wireframe and contour in 3d

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function peaks(; n = 49)
+    x = LinRange(-3, 3, n)
+    y = LinRange(-3, 3, n)
+    a = 3 * (1 .- x').^2 .* exp.(-(x'.^2) .- (y .+ 1).^2)
+    b = 10 * (x' / 5 .- x'.^3 .- y.^5) .* exp.(-x'.^2 .- y.^2)
+    c = 1 / 3 * exp.(-(x' .+ 1).^2 .- y.^2)
+    return (x, y, a .- b .- c)
+end
+x, y, z = peaks(; n=30)
+with_theme(theme_dark()) do
+    fig =  Figure(size = (1200,800))
+    axs = [Axis3(fig[1,i]; aspect = :data) for i in 1:3]
+    contour3d!(axs[1], x, y, z; levels = 20, transparency = true)
+    contour!(axs[1], x, y, z; levels = 20, transformation = (:xy, minimum(z)),
+        transparency = true)
+    lines!(axs[2], cat(x, NaN, dims=1), y, vcat(z, fill(NaN,30)'),
+        color = repeat(maximum(z, dims=1)[1,:], inner=31),
+        transparency = false)
+    lines!(axs[2], cat(x, NaN, dims=1), y,
+        vcat(z, fill(NaN,30)')*0 .+ minimum(z); color = repeat(maximum(z, dims=1)[1,:], inner=31), transparency = true)
+    wireframe!(axs[3], x, y, z; color = :grey90, transparency = true)
+    wireframe!(axs[3], x, y, z*0 .+ minimum(z); color = :grey90,
+        transparency = true)
+    hidedecorations!.(axs; grid = false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/lines3d/wireframe_torus.html b/previews/PR54/examples/3d/lines3d/wireframe_torus.html new file mode 100644 index 00000000..7c70bb83 --- /dev/null +++ b/previews/PR54/examples/3d/lines3d/wireframe_torus.html @@ -0,0 +1,49 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

wireframe torus

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+# let's define the ranges and calculate the grid points on every direction
+U = LinRange(-pi, pi, 100)
+V = LinRange(-pi, pi, 20)
+x1 = [cos(u) + .5 * cos(u) * cos(v)      for u in U, v in V]
+y1 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+z1 = [.5 * sin(v)                        for u in U, v in V]
+x2 = [1 + cos(u) + .5 * cos(u) * cos(v)  for u in U, v in V]
+y2 = [.5 * sin(v)                        for u in U, v in V]
+z2 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V];
+
+# and now we plot the figure
+fig = Figure(; size =(600,600))
+ax = LScene(fig[1,1], show_axis = true)
+wireframe!(ax, x1, y1, z1; transparency = true)
+# some control over axis names.
+# A lot more options are available in ax.scene[OldAxis]
+axis = ax.scene[OldAxis]
+tstyle = axis[:names]
+tstyle[:fontsize] = 16
+tstyle[:gap] = 8
+axis[:ticks][:textcolor] = :black
+axis[:ticks][:fontsize] = 10
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/Earth_planes.html b/previews/PR54/examples/3d/meshes/Earth_planes.html new file mode 100644 index 00000000..0727b488 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/Earth_planes.html @@ -0,0 +1,51 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Earth on sphere surrounded by planes

julia
using GLMakie, Colors, LinearAlgebra
+using GeometryBasics, Downloads, FileIO
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+link = "https://www.solarsystemscope.com/textures/download/8k_earth_daymap.jpg"
+earth_img = load(Downloads.download(link))
+function SphereTess(; o=Point3f(0), r=1, tess=64)
+    return uv_normal_mesh(Tesselation(Sphere(o, r), tess))
+end
+
+function ssaoplanes()
+    fig = Figure()
+    ssao = Makie.SSAO(radius = 5.0, blur = 3)
+    ax = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax.scene.ssao.bias[] = 0.025
+    mesh!(ax, SphereTess(; o=Point3f(0.1, 0, 0), r=0.95);
+        color=circshift(earth_img, (0, 3000)), ssao=true)
+    # box
+    mesh!(ax, Rect3(Vec3f(-1, -1, -1.1), Vec3f(2, 2, 0.1));
+        color=RGB(0.082, 0.643, 0.918), ssao=true)
+    mesh!(ax, Rect3(Vec3f(-1, -1.1, -1.1), Vec3f(2, 0.1, 2.1));
+        color=RGB(0.929, 0.773, 0.0), ssao=true)
+    mesh!(ax, Rect3(Vec3f(-1, -1, -1.0), Vec3f(0.1, 2, 2.0));
+        color=RGB(0.91, 0.122, 0.361),
+        ssao=true)
+    fig
+end
+fig = with_theme(ssaoplanes, theme_dark())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/cpunkCube.html b/previews/PR54/examples/3d/meshes/cpunkCube.html new file mode 100644 index 00000000..56066430 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/cpunkCube.html @@ -0,0 +1,118 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie, FileIO
+using GeometryBasics
+using Downloads
+import Cascadia: Selector
+import Gumbo: parsehtml
+import HTTP
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen

Download images from twitter

julia
lucy = Downloads.download("https://pbs.twimg.com/media/FbbZqWTXkAA8KTo?format=jpg&name=large")
+lucy = load(lucy)
+lucy = lucy[1:1000,1:1000]
+
+david = Downloads.download("https://pbs.twimg.com/media/FdGmKklXEAAkdG1?format=jpg&name=large")
+david = load(david)
+david = david[1:1000,1:1000]
+
+faraday = Downloads.download("https://pbs.twimg.com/media/Fdq1ev-X0AM-tXv?format=jpg&name=large")
+faraday = load(faraday)
+faraday = faraday[1:1000,1:1000]
+
+lucydavid = Downloads.download("https://pbs.twimg.com/media/FdAs55qXoAAyG9l?format=jpg&name=large")
+lucydavid = load(lucydavid)
+
+luda = Downloads.download("https://pbs.twimg.com/media/Fcs-pGSX0AIdzWs?format=jpg&name=large")
+luda = load(luda)
+luda = luda[201-40:1240,end:-1:1]
+
+poster = Downloads.download("https://pbs.twimg.com/media/FZFjXDAWIAE-vAT?format=jpg&name=large")
+poster = load(poster)
+poster = poster[1+80:1080+80,end:-1:1]

Set images into the right (your) order

julia
imgs = [rotr90(lucydavid), lucy, rotl90(david),
+    rotr90(faraday), rotr90(rotr90(poster)), rotr90(rotr90(luda))]
+
+fig = Figure(figure_padding=0, size =(600,400))
+axs = [Axis(fig[i,j], aspect=1) for i in 1:2 for j in 1:3]
+[heatmap!(axs[i], imgs[i]) for i in 1:6]
+hidedecorations!.(axs)
+hidespines!.(axs)
+colgap!(fig.layout,0)
+rowgap!(fig.layout,0)
+imgcpunk = Makie.colorbuffer(fig)

Do the meshed cube

julia
function meshcube(o=Vec3f(0), sizexyz = Vec3f(1))
+    uvs = map(v -> v ./ (3, 2), Vec2f[
+    (0, 0), (0, 1), (1, 1), (1, 0),
+    (1, 0), (1, 1), (2, 1), (2, 0),
+    (2, 0), (2, 1), (3, 1), (3, 0),
+    (0, 1), (0, 2), (1, 2), (1, 1),
+    (1, 1), (1, 2), (2, 2), (2, 1),
+    (2, 1), (2, 2), (3, 2), (3, 1),
+    ])
+    m = normal_mesh(Rect3f(Vec3f(-0.5) .+ o, sizexyz))
+    m = GeometryBasics.Mesh(meta(coordinates(m);
+        uv = uvs, normals = normals(m)), faces(m))
+end
+
+m = meshcube();

Get stats

julia
function getstats()
+    r = HTTP.get("https://myanimelist.net/anime/42310/Cyberpunk__Edgerunners/stats")
+    h = parsehtml(String(r.body))
+    helm_table = eachmatch(Selector(".score-stats"), h.root)
+
+    htxt = helm_table[1].children[1]
+    rating = Float32[]
+    votes = Float32[]
+    for child in htxt.children
+        ele = eachmatch(Selector("td"), child)
+        echild = ele[1].children
+        push!(rating, parse(Float32, echild[1].text))
+        ediv = ele[2].children[1]
+        push!(votes, parse(Float32, split(ediv.children[2][2][1].text)[1][2:end]))
+        #parse(Float32, strip(split(ediv.children[2][1].text, "%")[1]))
+    end
+    return (rating, votes)
+end
getstats (generic function with 1 method)

Plot all together

julia
cmap_cpunk = ["#5479B8", "#CD38D1", "#8295A6", "#9EA4A4","#03B0F5",
+    "#2BDB52", "#BACBCF", "#F1F016", "#EEF9E4", "#FAF4FD"]
+
+rating, votes = getstats()
+percent = round.(votes/sum(votes)*100, digits=1)
+
+with_theme(theme_black()) do
+    fig = Figure(size= (1200,700), fontsize = 18)
+    ax1 = LScene(fig[1,1], show_axis=false)
+    ax2 = Axis(fig[1,2]; xlabel = "Rating score")
+    mesh!(ax1, m; color = imgcpunk, interpolate=false)
+    barplot!(ax2, rating, votes; color =reverse(cmap_cpunk))
+    text!(ax2, string.(percent).*"%", position = Point2f.(rating, votes),
+        align = (:center, :bottom))
+    text!(ax2, Point2f(1, 3maximum(votes)/4); text="Total votes: $(sum(votes))",
+        color=cmap_cpunk[8], fontsize= 28)
+    hideydecorations!(ax2; grid=false)
+    hidespines!(ax2, :l, :t, :r)
+    ax2.xticks = 1:10
+    Label(fig[2,1], "Source: https://www.cyberpunk.net/en/edgerunners\nImages: https://twitter.com/edgerunners",
+        fontsize = 14, tellwidth=false, halign=:left, color = cmap_cpunk[9])
+    Label(fig[2,2], "Stats: https://myanimelist.net/anime/42310/Cyberpunk__Edgerunners/stats",
+        fontsize = 14, tellwidth=false, halign=:right, color = cmap_cpunk[9])
+    colgap!(fig.layout,1)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/gfield.html b/previews/PR54/examples/3d/meshes/gfield.html new file mode 100644 index 00000000..cd35c04a --- /dev/null +++ b/previews/PR54/examples/3d/meshes/gfield.html @@ -0,0 +1,101 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Fake gravitation field, spheres and wireframes

julia
using GLMakie, LaTeXStrings, Colors, ColorSchemes
+using FileIO
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function alpha_colorbuffer(scene)
+    bg = scene.backgroundcolor[]
+    scene.backgroundcolor[] = RGBAf(0, 0, 0, 1)
+    b1 = copy(Makie.colorbuffer(scene))
+    scene.backgroundcolor[] = RGBAf(1, 1, 1, 1)
+    b2 = Makie.colorbuffer(scene)
+    scene.backgroundcolor[] = bg
+    return map(infer_alphacolor, b1, b2)
+end
+
+function infer_alphacolor(rgb1, rgb2)
+    rgb1 == rgb2 && return RGBAf(rgb1.r, rgb1.g, rgb1.b, 1)
+    c1 = Float64.((rgb1.r, rgb1.g, rgb1.b))
+    c2 = Float64.((rgb2.r, rgb2.g, rgb2.b))
+    alpha = @. 1 - (c1 - c2) * -1 # ( / (0 - 1))
+    meanalpha = clamp(sum(alpha) / 3, 0, 1)
+    meanalpha == 0 && return RGBAf(0, 0, 0, 0)
+    c = @. clamp((c1 / meanalpha), 0, 1)
+    return RGBAf(c..., meanalpha)
+end
+
+xx = 10 .^ (range(-1.5, stop = log10(4), length = 20))
+xx = vcat([0], xx)
+x = y = vcat(-xx[end:-1:1], xx)
+x3 = -4:0.25:4
+y3 = -4:0.25:4
+r(i, j) = sqrt(i^2 + j^2)
+
+z3 = [-1.5 / (1 + r(i, j))^(1 / 2) for i in x3, j in y3]
+x2 = -10:0.25:10
+y2 = -10:0.25:10
+z2 = [0 for i in x2, j in y2]
+
+pot(i, j) = -1.5 / (1 + r(i, j))^(1 / 2)
+xx = 10 .^ (range(-1.5, stop = log10(4), length = 50))
+xx = vcat([0], xx)
+θ = collect(range(0, , length = 50))
+
+x2 = xx .* cos.(θ)'
+y2 = xx .* sin.(θ)'
+z2 = pot.(x2, y2)
+vol = [-1.5 / (1 + r(i, j))^(1 / 2) for i in x, j in y]
+
+n = 101
+cmap = :cyclic_tritanopic_wrwc_70_100_c20_n256
+g(x) = exp(-x^2)
+alphas = [g(x) for x in range(-2, 3, 101)]
+cmap = resample_cmap(cmap, n; alpha=alphas)
+s = 8.0
+
+set_theme!(theme_dark())
+fig = Figure(size = (1200, 1200))
+axs = LScene(fig[1, 1], show_axis = false)
+surface!(axs, x2, y2, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2 .+ s, y2, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2 .+ s, y2 .+ s, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+surface!(axs, x2, y2 .+ s, z2, colormap = cmap, #colorrange = (0, 1.5),
+    transparency = :true)
+wireframe!(axs, x2, y2, z2, color = (:grey65, 0.1), transparency = true)
+wireframe!(axs, x2 .+ s, y2, z2, color = (:grey65, 0.15), transparency = true)
+wireframe!(axs, x2 .+ s, y2 .+ s, z2, color = (:grey65, 0.35), transparency = true)
+wireframe!(axs, x2, y2 .+ s, z2, color = (:grey65, 0.15), transparency = true)
+
+meshscatter!(axs, Point3f(0, 0, 0.2); color = "#e4c92a", markersize = 1.2)
+meshscatter!(axs, Point3f(0 + s, 0, 0.2); color = :white, markersize = 1.0)
+meshscatter!(axs, Point3f(0 + s, 0 + s, 0.2); color = "#dd3365", markersize = 1.0)
+meshscatter!(axs, Point3f(0, 0 + s, 0.2); color = "#3782b9", markersize = 1.0)
+#zoom!(axs.scene, cameracontrols(axs.scene), 0.87)
+center!(axs.scene)
+save("gfield.png", alpha_colorbuffer(fig.scene))
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/how_to_cube.html b/previews/PR54/examples/3d/meshes/how_to_cube.html new file mode 100644 index 00000000..29377710 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/how_to_cube.html @@ -0,0 +1,80 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie, TestImages, FileIO
+using GeometryBasics, Colors
+using Downloads
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen

Simple cubed mesh

julia
mr = Rect3f(Vec3f(-0.5), Vec3f(1))
+
+fig, ax, obj = mesh(mr; color = :white, transparency=true,
+    figure = (; size = (1200,600)))
+wireframe!(ax, mr; color = :black, transparency=true)
+mesh(fig[1,2], mr; color = [v[3] for v in coordinates(mr)],
+    colormap = :Spectral_11)
+fig

Adding some colours at random

julia
fig, ax, obj = mesh(mr; color = rand(length(coordinates(mr))),
+    colormap = :sunset, figure = (; size = (1200,600)))
+mesh(fig[1,2], mr; color = 1:length(coordinates(mr)),
+    colormap = :sunset)
+fig

A matrix (image) as colors

julia
img = testimage("chelsea")
+fig, ax, obj = mesh(mr; color =rand(10,10), interpolate=false,
+    colormap = :seaborn_icefire_gradient,
+    figure = (; size = (1200,600)))
+mesh(fig[1,2], mr; color = img, interpolate=false)
+fig

Note that the image is simple wrap around the mesh, and not in a goog way.

Wrap individual colors around mesh

Solution by ffreyer, define new uvs

julia
function meshcube(o=Vec3f(0), sizexyz = Vec3f(1))
+    uvs = map(v -> v ./ (3, 2), Vec2f[
+    (0, 0), (0, 1), (1, 1), (1, 0),
+    (1, 0), (1, 1), (2, 1), (2, 0),
+    (2, 0), (2, 1), (3, 1), (3, 0),
+    (0, 1), (0, 2), (1, 2), (1, 1),
+    (1, 1), (1, 2), (2, 2), (2, 1),
+    (2, 1), (2, 2), (3, 2), (3, 1),
+    ])
+    m = normal_mesh(Rect3f(Vec3f(-0.5) .+ o, sizexyz))
+    m = GeometryBasics.Mesh(meta(coordinates(m);
+        uv = uvs, normals = normals(m)), faces(m))
+end
+m = meshcube();
+
+# +z, +x, +y,
+# -x, -y, -z
+img = rand(RGBf, 2, 3)
+fig, ax, obj = mesh(m; color = img, interpolate=false,
+    figure = (; size = (1200,600)))
+mesh(fig[1,2], m; color = img)
+fig

Increasing the number of colours

julia
img = rand(RGBf, 2*6, 3*6)
+mesh(m; color = img, interpolate=false)

Putting an image

julia
img = testimage("chelsea");
+mesh(m; color = img, interpolate=false)

Now the image is splitted all around, hence, something else will be needed. I found the following work around. Where, an image with ratio (2,3) is pre-process, and where each entry corresponds to a different face.

Remember again, the position for each one of them are: +z, +x, +y, -x, -y, -z

Individual images per face

julia
timgs = ["bark_512", "bark_he_512", "brick_wall_he_512",
+    "woolen_cloth_he_512", "wood_grain_he_512", "straw_he_512"];
+
+
+fig = Figure(figure_padding=0, size =(600,400))
+axs = [Axis(fig[i,j], aspect=1) for i in 1:2 for j in 1:3]
+[heatmap!(axs[i], testimage(timgs[i])) for i in 1:6]
+hidedecorations!.(axs)
+hidespines!.(axs)
+colgap!(fig.layout,0)
+rowgap!(fig.layout,0)
+imgOut = Makie.colorbuffer(fig.scene)
+
+mesh(m; color = imgOut, interpolate=false)

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/isosurfaces.html b/previews/PR54/examples/3d/meshes/isosurfaces.html new file mode 100644 index 00000000..8c9759f2 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/isosurfaces.html @@ -0,0 +1,99 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Isosurfaces

by Ashton Bradley

julia
using GLMakie
+using Meshing, GeometryBasics
+GLMakie.activate!()
+
+function show_isosurface(f,h,ξ; color=(:dodgerblue,0.5), isoval=100)
+  algo = MarchingCubes(; iso=isoval)
+
+  s = [h(x,y,z) for x in ξ, y in ξ, z in ξ] .+ isoval
+
+  # generate the mesh using marching cubes
+
+  vts, fcs = Meshing.isosurface(s, algo)
+  mc = GeometryBasics.Mesh(Point3f.(vts), GeometryBasics.TriangleFace.(fcs))
+
+  return mesh(f, normal_mesh(mc);
+      color,
+      diffuse = Vec3f0(0.8),
+      specular = Vec3f0(1.1),
+      shininess = 30f0,
+      backlight = 5f0,
+      transparency=true,
+      axis = (; show_axis = false)
+      )
+end
show_isosurface (generic function with 1 method)

Torus

Isosurfaces for $h(x,y,z)=0$

julia
torus(x,y,z; c=20, a=15) = ((hypot(x,y)-c)^2+z^2-a^2)
+
+with_theme(theme_dark()) do
+  ξ = -40:0.5:40
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], torus, ξ; color = (:orangered, 0.5))
+  f
+end

Entzensberger star

julia
estar(x,y,z) = 100*(x^2*y^2 + y^2*z^2 + x^2*z^2) - (1 - x^2 - y^2 - z^2)^3
+
+with_theme(theme_dark()) do
+  Xm = 1
+  ξ = -Xm:0.01:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], estar, ξ);
+  f
+end

Tetrahedron

julia
tetra(x,y,z) = x^4 + 2*x^2*y^2 + 2*x^2*z^2 + y^4 + 2*y^2*z^2 + z^4 + 8*x*y*z - 10*x^2 - 10*y^2 - 10*z^2 + 20
+
+with_theme(theme_dark()) do
+  Xm = 10
+  ξ = -Xm:0.05:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], tetra, ξ; color = (:gold, 0.35));
+  f
+end

Decocube

julia
deco(x,y,z; b=1,c=2.2,t=1.2) = ((x^2 + y^2 - c^2)^2 + (z - 1)^2*(z + 1)^2)*((y^2 + z^2 - c^2)^2 +
+(x - 1)^2*(x + 1)^2)*((z^2 + x^2 - c^2)^2 + (y - 1)^2*(y + 1)^2) -
+t*(1 + b*(x^2 + y^2 + z^2))
+
+with_theme(theme_dark()) do
+  Xm = 2.5
+  ξ = -Xm:0.025:Xm
+
+  f = Figure(size=(900, 900))
+  show_isosurface(f[1,1], deco, ξ; color = (:silver, 0.65));
+  f
+end

All together

julia
with_theme(theme_dark()) do
+  Xm = [1, 10, 2.5]
+
+  ξ1 = -40:0.5:40
+  ξ2 = -Xm[1]:0.01:Xm[1]
+  ξ3 = -Xm[2]:0.05:Xm[2]
+  ξ4 = -Xm[3]:0.025:Xm[3]
+
+  f = Figure(size=(600, 600))
+  show_isosurface(f[1,1], torus, ξ1; color = (:orangered, 0.5))
+  show_isosurface(f[1,2], estar, ξ2);
+  show_isosurface(f[2,1], tetra, ξ3; color = (:gold, 0.35));
+  show_isosurface(f[2,2], deco, ξ4; color = (:silver, 0.65));
+  f
+  save("isosurfaces.png", f)
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/meshes.html b/previews/PR54/examples/3d/meshes/meshes.html new file mode 100644 index 00000000..b76fa8e0 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/meshes.html @@ -0,0 +1,67 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Meshes: Cylinder, Pyramid, Cone, Cube

julia
using GLMakie, Random, Colors, LinearAlgebra
+using GeometryBasics: Cylinder, Pyramid
+using Makie
+import GeometryBasics
+GLMakie.closeall() # close any open screen
+
+Random.seed!(3)
+
+cyl = Cylinder(Point{3, Float64}(1,2,3), Point{3, Float64}(2,3,4), 1.0)
+pyr = Pyramid(Point3f(0), 1f0, 1f0)
+rectmesh = Rect3(Point3f(-0.5), Vec3f(1))
+rectthin = Rect3(Point3f(-1), Vec3f(2,2,0.25))
+sphere = Sphere(Point3f(-0.5), 1)
+Cone(; quality = 10) = merge([
+    Makie._circle(Point3f(0), 0.5f0, Vec3f(0,0,-1), quality),
+    Makie._mantle(Point3f(0), Point3f(0,0,1), 0.5f0, 0f0, quality)])
+cone = Cone()
+rectMesh = GeometryBasics.mesh(rectmesh)
+rectThin = GeometryBasics.mesh(rectthin)
+cyL = GeometryBasics.mesh(cyl)
+
+cmap = resample_cmap(:Spectral_11, length(rectMesh.position))
+colors1 = [cmap[i] for (i,v) in enumerate(rectMesh.position)]
+colors2 = [RGBA(rand(4)...) for v in rectThin.position]
+colors3 = [norm(v) for v in cyL.position]
+markers = [sphere, rectmesh, cyl, pyr, cone]
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200,800))
+    axs = [Axis3(fig[i,j]; aspect = :data, perspectiveness = 0.5)
+        for j in 1:3, i in 1:2]
+    mesh!(axs[1], sphere, color = :white)
+    mesh!(axs[2], rectmesh, color = colors1)
+    mesh!(axs[3], pyr; color = (:dodgerblue, 0.85))
+    wireframe!(axs[3], pyr; color = :grey90)
+    mesh!(axs[4], cyl; color = colors3,
+        colormap = :diverging_tritanopic_cwr_75_98_c20_n256)
+    mesh!(axs[5], cone; transparency = true)
+    wireframe!(axs[5], cone; color = :grey90, linewidth = 0.5)
+    mesh!(axs[6], rectthin; color = colors2, shading = NoShading)
+    [meshscatter!(axs[6], Point3f(1.5rand(3) .- 0.5); marker = markers[i],
+        markersize = 0.25) for i in 1:5]
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/meshes/simplex.html b/previews/PR54/examples/3d/meshes/simplex.html new file mode 100644 index 00000000..6198d057 --- /dev/null +++ b/previews/PR54/examples/3d/meshes/simplex.html @@ -0,0 +1,69 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

simplex

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+vertices = [
+    0 0 0
+    1 0 0
+    0 1 0
+    0 0 1
+    ]
+faces = [
+    3 2 1
+    4 1 2
+    4 3 1
+    4 2 3
+    ]
+# m = GLMakie.GeometryBasics.Mesh(GLMakie.Makie.to_vertices(vertices), GLMakie.Makie.to_triangles(faces))
+# mesh(m)
+
+marker = Sphere(Point3f(0), 1) # 0 -> -0.5, fully inside, 0 -> 0.5 fully outside
+
+fig = Figure(size = (600,600))
+ax = LScene(fig[1,1], show_axis=false)
+m = mesh!(ax, vertices, faces; color = :white, transparency=true,)
+poly!(ax, vertices, faces; color = :transparent,
+    transparency=true, strokewidth = 1.0)
+meshscatter!(ax,
+    Point3f(1/3, 1/3,1/3),  # you need to calculate this for your use case
+    marker = marker, markersize = 0.025, transparency=true)
+# the following are not over the plane nither perpendicular.
+arrows!(ax,
+    [Point3f(1/3, 1/3,1/3)],  # you need to calculate this for your use case
+    [Point3f(0.2, 0.1,0.3)],  # you need to calculate this for your use case
+    arrowsize = Vec3f(0.05, 0.05, 0.08),
+    color = :red,
+    arrowcolor = :black)
+arrows!(ax,
+    [Point3f(1/3, 1/3,1/3)],  # you need to calculate this for your use case
+    [Point3f(-0.1, -0.1,0.3)],  # you need to calculate this for your use case
+    arrowsize = Vec3f(0.08, 0.08, 0.08),
+    linewidth = 0.02,
+    color = :dodgerblue,
+    arrowcolor = :orange)
+zoom!(ax.scene, cameracontrols(ax.scene), 0.9)
+rotate!(ax.scene, -0.1)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/RGBAcube.html b/previews/PR54/examples/3d/mscatters/RGBAcube.html new file mode 100644 index 00000000..1cb1af89 --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/RGBAcube.html @@ -0,0 +1,38 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

RGBAcube

julia
using GLMakie, Colors
+using GeometryBasics: Rect3f
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+positions = vec([Point3f(i / 5, j / 5, k / 5) for i = 1:7, j = 1:7, k = 1:7]) ## note 7 > 5 [factor in each i,j,k], whichs is misleading
+
+fig, ax, obj = meshscatter(positions;
+    marker = Rect3f(Vec3f(-0.5), Vec3f(1.8)),
+    transparency = true,
+    color = [RGBA(positions[i]..., 0.5) for i in eachindex(positions)],
+    figure = (;
+        size = (1200, 800))
+)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/RRGraph3D.html b/previews/PR54/examples/3d/mscatters/RRGraph3D.html new file mode 100644 index 00000000..4c1713cf --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/RRGraph3D.html @@ -0,0 +1,98 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Random Rectangular Graph

julia
# Adaptation from:
+# L Alonso, et. al. https://doi.org/10.1093/comnet/cnx053
+
+using LinearAlgebra, Random, GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function RRGAdjacencyM3D(; radius = 0.17, nodes = 500, rseed = 123)
+    Random.seed!(rseed)
+    xy = rand(nodes, 3)
+    x = xy[:, 1]
+    y = xy[:, 2]
+    z = xy[:, 3]
+
+    matrixAdjDiag = Diagonal(2 * randn(nodes))
+    matrixAdj = zeros(nodes, nodes)
+    for point in 1:nodes-1
+        xseps = (x[point+1:end] .- x[point]) .^ 2
+        yseps = (y[point+1:end] .- y[point]) .^ 2
+        zseps = (z[point+1:end] .- z[point]) .^ 2
+
+        distance = sqrt.(xseps .+ yseps .+ zseps)
+        dindx = findall(distance .<= radius) .+ point
+        if length(dindx) > 0
+            rnd = randn(length(dindx))
+            matrixAdj[point, dindx] = rnd
+            matrixAdj[dindx, point] = rnd
+        end
+    end
+    return (matrixAdj .+ matrixAdjDiag, x, y, z)
+end
+adjacencyM3D, x, y, z = RRGAdjacencyM3D()
+
+function getGraphEdges3D(adjMatrix3D, x, y, z)
+    xyzos = []
+    weights = []
+    for i in eachindex(x), j in i+1:length(x)
+        if adjMatrix3D[i, j] != 0.0
+            push!(xyzos, [x[i], y[i], z[i]])
+            push!(xyzos, [x[j], y[j], z[j]])
+            push!(weights, adjMatrix3D[i, j])
+            push!(weights, adjMatrix3D[i, j])
+        end
+    end
+    return (Point3f.(xyzos), Float32.(weights))
+end
+
+function plotGraph3D(adjacencyM3D, x, y, z)
+    cmap = (:Hiroshige, 0.75)
+    adjmin = minimum(adjacencyM3D)
+    adjmax = maximum(adjacencyM3D)
+    diagValues = diag(adjacencyM3D)
+    segm, weights = getGraphEdges3D(adjacencyM3D, x, y, z)
+
+    fig, ax, pltobj = linesegments(segm; color = weights, colormap = cmap,
+        linewidth = abs.(weights),
+        colorrange = (adjmin, adjmax),
+        figure = (;
+            size = (1200, 800),
+            fontsize = 24),
+        axis = (;
+            type = Axis3,
+            aspect = (1, 1, 1),
+            perspectiveness = 0.5))
+    meshscatter!(ax, x, y, z; color = diagValues,
+        markersize = abs.(diagValues) ./ 90,
+        colorrange = (adjmin, adjmax),
+        colormap = cmap)
+    Colorbar(fig[1, 2], pltobj, label = "weights", height = Relative(0.5))
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+with_theme(theme_dark()) do
+    plotGraph3D(adjacencyM3D, x, y, z)
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/SSAO_meshscatter.html b/previews/PR54/examples/3d/mscatters/SSAO_meshscatter.html new file mode 100644 index 00000000..2bf96aea --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/SSAO_meshscatter.html @@ -0,0 +1,45 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

SSAO and meshscatters

julia
# from https://makie.juliaplots.org/v0.15/documentation/lighting/#examples
+using GLMakie, Colors, LinearAlgebra
+using Random: seed!
+seed!(1313)
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+
+function ssaom()
+    positions = [Point3f(x, y, rand()) for x in -7:7 for y in -5:5]
+    fig = Figure(size=(1200, 800))
+    ssao = Makie.SSAO(radius = 6.0, blur = 3)
+    ax = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax.scene.ssao.bias[] = 0.025
+    meshscatter!(ax, positions; marker=Rect3(Point3f(-0.5), Vec3f(1)),
+        markersize=1, color=norm.(positions),
+        colormap=Reverse(:tol_light),
+        ssao=true
+    )
+    zoom!(ax.scene, cameracontrols(ax.scene), 0.65)
+    fig
+end
+fig = ssaom()
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/SSAO_mgrid.html b/previews/PR54/examples/3d/mscatters/SSAO_mgrid.html new file mode 100644 index 00000000..ea57b5be --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/SSAO_mgrid.html @@ -0,0 +1,70 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

SSAO meshscatters grid

julia
using GLMakie
+GLMakie.activate!(ssao=true)
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+positions = vec([(i, j, k) for i in x, j in y, k in z])
+vals = [f(ix, iy, iz) for ix in x, iy in y, iz in z]
+
+function ssaomeshscatter()
+    colormap = :starrynight
+    fig = Figure(size=(1800, 600))
+    ssao = Makie.SSAO(radius = 6.0, blur = 3)
+    ax11 = LScene(fig[1, 1]; show_axis=false, scenekw=(ssao=ssao,))
+    ax11.scene.ssao.bias[] = 0.025
+    ax12 = LScene(fig[1, 2]; show_axis=false, scenekw=(ssao=ssao,))
+    ax13 = LScene(fig[1, 3]; show_axis=false, scenekw=(ssao=ssao,))
+    meshscatter!(ax11, positions, color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap=(colormap, 0.5),
+        colorrange=(minimum(vals), maximum(vals)),
+        backlight=4.0f0,
+        ssao=true,
+    )
+    meshscatter!(ax12, positions; color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap,
+        colorrange=(minimum(vals), maximum(vals)),
+        ssao=true
+    )
+    meshscatter!(ax13, positions; color=vec(vals),
+        marker=Rect3f(Vec3f(-0.5), Vec3f(1)),
+        markersize=0.9,
+        colormap,
+        colorrange=(minimum(vals), maximum(vals)),
+        backlight=2.0f0,
+        ssao=true,
+        transparency=true
+    )
+    zoom!(ax11.scene, cameracontrols(ax11.scene), 1.2)
+    zoom!(ax12.scene, cameracontrols(ax12.scene), 1.2)
+    zoom!(ax13.scene, cameracontrols(ax13.scene), 1.2)
+    fig
+end
+with_theme(ssaomeshscatter, theme_dark())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/cube_mscatters.html b/previews/PR54/examples/3d/mscatters/cube_mscatters.html new file mode 100644 index 00000000..48ea80ca --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/cube_mscatters.html @@ -0,0 +1,58 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Assembled cube with smaller cubes: meshscatters

julia
using GLMakie, ColorSchemes
+using GeometryBasics: Rect3f
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+positions = vec([(i, j, k) for i in x, j in y, k in z])
+vals = [f(ix, iy, iz) for ix in x, iy in y, iz in z]
+m = Rect3f(Vec3f(-0.5), Vec3f(1))
+
+fig, ax, pltobj = meshscatter(positions;
+    color = vec(vals),
+    marker = m, markersize = 0.9,
+    colormap = (:Egypt, 0.75),
+    colorrange = (minimum(vals), maximum(vals)),
+    transparency = true,
+    shading = NoShading,
+    figure = (;
+        size = (1200, 800)
+        ),
+    axis = (;
+        type = Axis3,
+        perspectiveness = 0.5,
+        azimuth = 2.19,
+        elevation = 0.57,
+        xlabel = "x label",
+        ylabel = "y label",
+        zlabel = "z label",
+        aspect = (1, 1, 1))
+        )
+Colorbar(fig[1, 2], pltobj; label = "f values", height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+limits!(ax, -1, 11, -1, 11, -1, 11)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/gauss2d.html b/previews/PR54/examples/3d/mscatters/gauss2d.html new file mode 100644 index 00000000..c1a052fe --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/gauss2d.html @@ -0,0 +1,66 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

meshscatters and distributions

julia
using GLMakie, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+Random.seed!(13)
+x = -6:0.5:6
+y = -6:0.5:6
+z = 6exp.( -(x.^2 .+ y' .^ 2)./4)
+
+box = Rect3(Point3f(-0.5), Vec3f(1))
+n = 100
+g(x) = x^(1/10)
+alphas = [g(x) for x in range(0,1,length=n)]
+cmap_alpha = resample_cmap(:linear_worb_100_25_c53_n256, n, alpha = alphas)
+
+with_theme(theme_dark()) do
+    fig, ax, = meshscatter(x, y, z;
+        marker=box,
+        markersize = 0.5,
+        color = vec(z),
+        colormap = cmap_alpha,
+        colorrange = (0,6),
+        axis = (;
+            type = Axis3,
+            aspect = :data,
+            azimuth = 7.3,
+            elevation = 0.189,
+            perspectiveness = 0.5),
+        figure = (;
+            size =(1200,800)))
+    meshscatter!(ax, x .+ 7, y, z./2;
+        markersize = 0.25,
+        color = vec(z./2),
+        colormap = cmap_alpha,
+        colorrange = (0, 6),
+        #ambient = Vec3f(0.85, 0.85, 0.85), # lights?
+        backlight = 1.5f0)
+    xlims!(-5.5,10)
+    ylims!(-5.5,5.5)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/mscatters/lscene_limits.html b/previews/PR54/examples/3d/mscatters/lscene_limits.html new file mode 100644 index 00000000..4005c4d6 --- /dev/null +++ b/previews/PR54/examples/3d/mscatters/lscene_limits.html @@ -0,0 +1,36 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Sets limits on a LScene

julia
using GLMakie
+using Random
+Random.seed!(1618)
+GLMakie.activate!()
+
+fig = Figure()
+ax = LScene(fig[1, 1], scenekw = (;
+    limits=Rect3f(Vec3f(0,0,0),Vec3f(1.5, 1.5, 2.5)))
+    )
+meshscatter!(ax, rand(Point3f, 10); color = :orangered)
+meshscatter!(ax, rand(Point3f, 10) .+ Point3f(0,0,1);
+    color = :grey25, marker=Rect3f(Vec3f(-0.5), Vec3f(1)))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/band3d.html b/previews/PR54/examples/3d/surfaces/band3d.html new file mode 100644 index 00000000..242d8123 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/band3d.html @@ -0,0 +1,58 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

band in 3d

julia
using GLMakie, LaTeXStrings, SpecialFunctions, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+Random.seed!(13)
+with_theme(theme_black()) do
+    fig = Figure(size = (1200,800))
+    ax = Axis3(fig;
+        aspect = (1,0.5,0.5),
+        azimuth = 10.42,
+        elevation = 0.027,
+        perspectiveness=0.5)
+    x = 0:0.1:15
+    y = -1:0.1:7
+    horizontal = Point3f.(tuple.(15, y, 3exp.(-(y .-3).^2/3)))
+    for ν in 0:7
+        lines!(ax, x, x*0 .+ ν, besselj.(ν, x) .+ ν/3;
+            linewidth = 2,
+            color = :grey90,
+            label = latexstring("J_{$(ν)}(x)"))
+        band!(ax, Point3f.(tuple.(x, ν, ν/3)),
+            Point3f.(tuple.(x, ν, besselj.(ν, x) .+ ν/3));
+            color = 1:length(x),
+            colormap = :plasma)
+        text!(ax, latexstring("J_{$(ν)}(x)"), position = Point3f(15.2,ν, ν/3))
+    end
+    band!(ax, Point3f.(tuple.(0, y, 0.0)),
+        Point3f.(tuple.(0, y, 3exp.(-(y .-3).^2/3))); color = rand(length(y)))
+    band!(ax, horizontal[1:40], reverse(horizontal[42:end]); color = 1:40,
+        colormap = :bone_1)
+    lines!(ax, horizontal; color= :white, linewidth = 2)
+    hidedecorations!(ax; grid = false)
+    fig[1,1] = ax
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/branching.html b/previews/PR54/examples/3d/surfaces/branching.html new file mode 100644 index 00000000..6c8dbec7 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/branching.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

branching

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+t = 0:0.1:15
+u = -1:0.1:1
+x = [u * sin(t) for t in t, u in u]
+y = [u * cos(t) for t in t, u in u]
+z = [t / 4 for t in t, u in u]
+fig = surface(x, y, z; colormap = [:orangered, :orangered],
+    #lightposition = Vec3f(0, 0, 0), ambient = Vec3f(0.65, 0.65, 0.65),
+    backlight = 5.0f0, figure = (; size = (1200, 800)))
+wireframe!(x, y, z, overdraw = false, linewidth = 0.1) # try overdraw = true
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/complex_function.html b/previews/PR54/examples/3d/surfaces/complex_function.html new file mode 100644 index 00000000..4f7cf2c6 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/complex_function.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

complex function surface

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = -2:0.005:2
+y = -2:0.005:2
+f(z) = (z^2 + 1) / (z^2 - 1)
+fvals = [f(u + 1im * v) for u in x, v in y]
+fvalues = abs.(fvals)
+fargs = angle.(fvals)
+indxCut = fvalues .> 3
+fvalues[indxCut] .= 3.01
+
+fig, ax, pltobj = surface(x, y, fvalues, color = fargs,
+    colormap = :roma, colorrange = (-π, π),
+    backlight = 1.0f0, highclip = :black,
+    figure = (; size = (1200, 800), fontsize = 22))
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/constraints.html b/previews/PR54/examples/3d/surfaces/constraints.html new file mode 100644 index 00000000..b11ed3f9 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/constraints.html @@ -0,0 +1,60 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

constraints: split surfaces

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = LinRange(-2, 0.5, 501)
+y = LinRange(-2, 2, 501);
+# objective function
+z = 100 .* (y' .- x .^ 2) .^ 2 .+ (1 .- x) .^ 2;
+# build constraints
+zin = copy(z)
+zout1 = copy(z)
+zout2 = copy(z)
+for (i, x) in enumerate(x), (j, y) in enumerate(y)
+    if x * y >= 1
+        zin[i, j] = NaN
+        zout1[i, j] = z[i, j]
+        zout2[i, j] = NaN
+    elseif (x + y^2) >= 1
+        zin[i, j] = NaN
+        zout1[i, j] = NaN
+        zout2[i, j] = z[i, j]
+    else
+        zin[i, j] = z[i, j]
+        zout1[i, j] = NaN
+        zout2[i, j] = NaN
+    end
+end
+fig = Figure(size = (1200, 800), fontsize = 22)
+ax = Axis3(fig[1, 1], aspect = (1, 1, 1), perspectiveness = 0.5, elevation = π / 9,
+    azimuth = 0.2π, zgridcolor = :grey, ygridcolor = :grey, xgridcolor = :grey)
+pltobj = surface!(ax, x, y, zin; colormap = Reverse(:viridis))
+surface!(ax, x, y, zout1; colormap = [(:orangered, 0.5), (:orangered, 0.5)])
+surface!(ax, x, y, zout2; colormap = [(:dodgerblue, 0.5), (:dodgerblue, 0.5)])
+Colorbar(fig[1, 2], pltobj, label = "xy <=1 & x + y^2<=1",
+    height = Relative(0.5), width = 20)
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/gabriels_horn.html b/previews/PR54/examples/3d/surfaces/gabriels_horn.html new file mode 100644 index 00000000..6f73525b --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/gabriels_horn.html @@ -0,0 +1,46 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

gabriels horn: surface revolution

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(0.8, 6, 50)
+v = LinRange(0, , 50)
+X1 = [u for u in u, v in v]
+Y1 = [(1/u) * cos(v) for u in u, v in v]
+Z1 = [(1/u) * sin(v) for u in u, v in v]
+
+fig = Figure(size=(1200, 800))
+ax = LScene(fig[1, 1], show_axis=false)
+pltobj = surface!(ax, -X1, -Y1, Z1; shading = FastShading,
+    #ambient=Vec3f(0.65, 0.65, 0.65),
+    backlight=1.0f0, color=sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap=Reverse(:bone_1), transparency=true,
+    )
+wireframe!(ax, -X1, -Y1, Z1; transparency = true,
+    color = :gray, linewidth = 0.5)
+zoom!(ax.scene, cameracontrols(ax.scene), 0.98)
+Colorbar(fig[1, 2], pltobj, height=Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/klein_bottle.html b/previews/PR54/examples/3d/surfaces/klein_bottle.html new file mode 100644 index 00000000..c7f0da04 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/klein_bottle.html @@ -0,0 +1,41 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

klein bottle

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+# The bottle
+u = LinRange(0, π, 100)
+v = LinRange(0, , 100)
+x = [-2 / 15 * cos(u) * (3 * cos(v) - 30 * sin(u) + 90 * cos(u)^4 * sin(u)
+    - 60 * cos(u)^6 * sin(u) + 5 * cos(u) * cos(v) * sin(u)) for u in u, v in v]
+y = [-1 / 15 * sin(u) * (3 * cos(v) - 3 * cos(u)^2 * cos(v) - 48 * cos(u)^4 * cos(v) + 48 * cos(u)^6 * cos(v)
+    - 60 * sin(u) + 5 * cos(u) * cos(v) * sin(u) - 5 * cos(u)^3 * cos(v) * sin(u)
+    - 80 * cos(u)^5 * cos(v) * sin(u) + 80 * cos(u)^7 * cos(v) * sin(u)) for u in u, v in v]
+z = [2 / 15 * (3 + 5 * cos(u) * sin(u)) * sin(v) for u in u, v in v]
+
+fig = Figure(size = (1200, 800))
+ax = LScene(fig[1, 1], show_axis = false)
+surface!(ax, x, y, z; color = sqrt.(x.^2 .+ y.^2), colormap = (:Spectral_11, 0.8))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/onecolor.html b/previews/PR54/examples/3d/surfaces/onecolor.html new file mode 100644 index 00000000..11bdd610 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/onecolor.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

surface with one color

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+t = range(0, , length = 50)
+u = -1:0.1:1
+x = [u * sin(t) for t in t, u in u]
+y = [u * cos(t) for t in t, u in u]
+z = [u for t in t, u in u]
+fig = surface(x, y, z, colormap = [:dodgerblue, :dodgerblue],
+    #lightposition = Vec3f(0, 0, 0.8), ambient = Vec3f(0.6, 0.6, 0.6),
+    backlight = 2.0f0)
+wireframe!(x, y, z; overdraw = false, linewidth = 0.1) # try overdraw = true
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/revolution_surface.html b/previews/PR54/examples/3d/surfaces/revolution_surface.html new file mode 100644 index 00000000..17b8ef54 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/revolution_surface.html @@ -0,0 +1,41 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

revolution surface

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(0, 1, 50)
+v = LinRange(0, , 50)
+X1 = [u for u in u, v in v]
+Y1 = [(u^4 - u^2) * cos(v) for u in u, v in v]
+Z1 = [(u^4 - u^2) * sin(v) for u in u, v in v]
+
+fig, ax, pltobj = surface(X1, Y1, Z1; shading = FastShading,
+    #ambient = Vec3f(0.65, 0.65, 0.65),
+    backlight = 1.0f0, color = sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap = :viridis, transparency = true,
+    figure = (; size = (1200, 800), fontsize = 22))
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/revolution_surface_s.html b/previews/PR54/examples/3d/surfaces/revolution_surface_s.html new file mode 100644 index 00000000..c4c9ca32 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/revolution_surface_s.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

revolution surface s

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+u = LinRange(-1.5, 2, 50)
+v = LinRange(0, 2 * pi, 50)
+X1 = [u for u in u, v in v]
+Y1 = [(u^2 + 1) * cos(v) for u in u, v in v]
+Z1 = [(u^2 + 1) * sin(v) for u in u, v in v]
+
+fig, ax, pltobj = surface(X1, Y1, Z1; shading = FastShading,
+    #ambient = Vec3f(0.95, 0.95, 0.95),
+    backlight = 1.0f0, color = sqrt.(X1 .^ 2 .+ Y1 .^ 2 .+ Z1 .^ 2),
+    colormap = :Isfahan2, transparency = true,
+    figure = (; size = (1200, 800), fontsize = 22))
+wireframe!(X1, Y1, Z1; linewidth = 0.2, transparency = true)
+Colorbar(fig[1, 2], pltobj, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/surface.html b/previews/PR54/examples/3d/surfaces/surface.html new file mode 100644 index 00000000..bc2bfe6e --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/surface.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

surface + contour + wireframe

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = LinRange(-2, 2, 51)
+z = (-x .* exp.(-x .^ 2 .- (y') .^ 2)) .* 4
+zmin, zmax = minimum(z), maximum(z)
+cmap = :viridis
+
+fig = Figure(size = (1200, 800), fontsize = 22)
+ax = Axis3(fig[1, 1], aspect = :data, perspectiveness = 0.5, elevation = π / 9,
+    xzpanelcolor = (:black, 0.75), yzpanelcolor = (:black, 0.75),
+    zgridcolor = :grey, ygridcolor = :grey, xgridcolor = :grey)
+sm = surface!(ax, x, y, z; colormap = cmap, colorrange = (zmin, zmax),
+    transparency = true)
+xm, ym, zm = minimum(ax.finallimits[])
+contour!(ax, x, y, z; levels = 20, colormap = cmap, linewidth = 2,
+    colorrange = (zmin, zmax), transformation = (:xy, zmin),
+    transparency = true)
+wireframe!(ax, x, y, z; overdraw = true, transparency = true,
+    color = (:black, 0.1))
+Colorbar(fig[1, 2], sm, height = Relative(0.5))
+colsize!(fig.layout, 1, Aspect(1, 1.0))
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/surface_filled_sides.html b/previews/PR54/examples/3d/surfaces/surface_filled_sides.html new file mode 100644 index 00000000..d8101325 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/surface_filled_sides.html @@ -0,0 +1,127 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = range(-3, 3, length=100)
+y = range(-2, 2, length=100)
+z = [sin(x + y^2) for x in x, y in y]
+xpt = [x for x in x, y in y]
+ypt = [y for x in x, y in y];
+
+function boundary_values(a)
+    return [a[1,:]..., a[2:end,end]..., a[end,end-1:-1:1]...,a[end-1:-1:1,1]...]
+end
+
+bxpt = boundary_values(xpt)
+bypt = boundary_values(ypt)
+bzpt = boundary_values(z)
+
+upper = Point3f.(bxpt, bypt, bzpt)
+lower = Point3f.(bxpt, bypt, bzpt*0.0 .+ minimum(bzpt))
+lower_colors = bzpt*0.0 .+ minimum(bzpt);

Plotting sides

julia
with_theme(theme_dark()) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    ax  = Axis3(fig[1,1]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+
+    surface!(ax, xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(ax, upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(ax, lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(ax, lower, upper; color = bzpt, colormap)
+    fig
+end

Sides, colour gradient bottom to top

julia
with_theme(theme_dark()) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    ax  = Axis3(fig[1,1]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+
+    surface!(ax, xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(ax, upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(ax, lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(ax, lower, upper; color = [lower_colors..., bzpt...], colormap)
+    fig
+end

Different views and options

julia
with_theme(theme_dark(), size = (1250,1200)) do
+    colormap = :linear_worb_100_25_c53_n256
+    fig = Figure()
+    axs  = [Axis3(fig[i,j]; aspect =(1,1,0.5),
+        perspectiveness = 0.5f0,
+        azimuth = -1.275π * 1.77,
+        elevation = pi/4.5, protrusions=0)
+        for i in 1:2 for j in 1:2
+    ]
+    surface!(axs[1], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=false,
+        )
+    surface!(axs[2], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=true)
+    lines!(axs[2], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[2], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+
+    surface!(axs[3], xpt, ypt, z;
+        colormap=(colormap, 0.1),
+        shading = FastShading,
+        transparency=true,
+        )
+    lines!(axs[3], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[3], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(axs[3], lower, upper; color = bzpt, colormap)
+
+    surface!(axs[4], xpt, ypt, z;
+        colormap,
+        shading = FastShading,
+        transparency=false
+        )
+    lines!(axs[4], upper; color = :white, linewidth=1.25,
+        transparency=true)
+    lines!(axs[4], lower; color = :gold, linewidth=1.25,
+        transparency=true)
+    band!(axs[4], lower, upper; color = bzpt, colormap)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/tesseralSphericalH.html b/previews/PR54/examples/3d/surfaces/tesseralSphericalH.html new file mode 100644 index 00000000..06ef2c92 --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/tesseralSphericalH.html @@ -0,0 +1,66 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Tesseral Spherical Harmonics

julia
using GLMakie
+using AssociatedLegendrePolynomials
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function Y(θ, ϕ, l, m)
+    if m < 0
+        return (-1)^m *2 * Nlm(l, abs(m)) * Plm(l, abs(m), cos(θ)) * sin(abs(m) * ϕ)
+    elseif m == 0
+        return sqrt((2 * l + 1) /) * Plm(l, m, cos(θ))
+    else
+        return (-1)^m *2 * Nlm(l, m) * Plm(l, m, cos(θ)) * cos(m * ϕ)
+    end
+end
+# Grids of polar and azimuthal angles
+θ = LinRange(0, π, 200)
+ϕ = LinRange(0, , 200)
+x = [sin(θ) * sin(ϕ) for θ in θ, ϕ in ϕ]
+y = [sin(θ) * cos(ϕ) for θ in θ, ϕ in ϕ]
+z = [cos(θ) for θ in θ, ϕ in ϕ]
+l = 10
+m = 1
+Ygrid = [Y(θ, ϕ, l, m) for θ in θ, ϕ in ϕ]
+Ylm = abs.(Ygrid)
+cmap = [:dodgerblue, :white, :orangered]
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200, 800), fontsize = 22)
+    axs = [Axis3(fig[1, j], aspect = :data) for j in 1:2]
+    pltobj = surface!(axs[1], x, y, z; color = Ygrid,
+        colormap = cmap,
+        shading = NoShading)
+    surface!(axs[2], Ylm .* x, Ylm .* y, Ylm .* z;
+        color = Ygrid,
+        colormap = cmap,
+        shading = NoShading)
+    Colorbar(fig[1, 3], pltobj, label = "Yₗₘ(θ,ϕ)", tickwidth = 2, tickalign = 1,
+        width = 25, ticksize = 25, height = Relative(0.5))
+    fig[0, 1:2] = Label(fig, "Tesseral Spherical Harmonics l = $(l), m = $(m)",
+        fontsize = 30, color = (:white, 0.85))
+    hidedecorations!.(axs; grid = false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/surfaces/torus.html b/previews/PR54/examples/3d/surfaces/torus.html new file mode 100644 index 00000000..61c4976e --- /dev/null +++ b/previews/PR54/examples/3d/surfaces/torus.html @@ -0,0 +1,64 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Torus surfaces

julia
using GLMakie
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+U = LinRange(-pi, pi, 100)
+V = LinRange(-pi, pi, 20)
+x1 = [cos(u) + 0.5 * cos(u) * cos(v) for u in U, v in V]
+y1 = [sin(u) + 0.5 * sin(u) * cos(v) for u in U, v in V]
+z1 = [0.5 * sin(v) for u in U, v in V]
+x2 = [1 + cos(u) + 0.5 * cos(u) * cos(v) for u in U, v in V]
+y2 = [0.5 * sin(v) for u in U, v in V]
+z2 = [sin(u) + 0.5 * sin(u) * cos(v) for u in U, v in V]
+
+fig = Figure(; size = (1200, 800))
+ax = LScene(fig, show_axis = true)
+tori1 = surface!(ax, x1, y1, z1; colormap = :viridis, shading = NoShading,
+    transparency = true)
+tori2 = surface!(ax, x2, y2, z2; colormap = :plasma, shading = NoShading,
+    transparency = false)
+wireframe!(ax, x1, y1, z1; linewidth = 0.5, transparency = true)
+
+axis = ax.scene[OldAxis]
+axis[:names, :axisnames] = ("x", "y", "z")
+tstyle = axis[:names] #  get the nested attributes and work directly with them
+
+tstyle[:fontsize] = 15
+tstyle[:textcolor] = (:red, :green, :black)
+tstyle[:font] = "helvetica"
+tstyle[:gap] = 10
+axis[:ticks][:textcolor] = :black
+axis[:ticks][:fontsize] = 10
+cbar1 = Colorbar(fig, tori1, label = "z", width = 25, ticklabelsize = 20,
+    labelsize = 20, ticksize = 25, tickalign = 1, height = Relative(0.5))
+cbar2 = Colorbar(fig, tori2, label = "z", width = 25, flipaxis = false,
+    labelsize = 20, ticklabelsize = 20, ticksize = 25, tickalign = 1,
+    height = Relative(0.5))
+fig[1, 2] = ax
+fig[1, 3] = cbar1
+fig[1, 1] = cbar2
+colgap!(fig.layout, 2)
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/volume/volume.html b/previews/PR54/examples/3d/volume/volume.html new file mode 100644 index 00000000..0f83fed0 --- /dev/null +++ b/previews/PR54/examples/3d/volume/volume.html @@ -0,0 +1,54 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

volume

julia
using GLMakie, ColorSchemes
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+x = y = z = 1:10
+f(x, y, z) = x^2 + y^2 + z^2
+vol = [f(ix, iy, iz) for ix in x, iy in y, iz in z]
+fig, ax, _ = volume(x, y, z, vol;
+    colorrange = (minimum(vol), maximum(vol)),
+    colormap = :Egypt, transparency = true,
+    figure = (; size = (1200, 800)),
+    axis = (;
+        type = Axis3,
+        perspectiveness = 0.5,
+        azimuth = 2.19,
+        elevation = 0.57,
+        aspect = (1, 1, 1)
+        )
+    )
+fig
┌ Warning: Encountered an `AbstractVector` with value 1:10 on side x in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value 1:10 on side y in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value 1:10 on side z in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/3d/volume/volume_contour_scatters.html b/previews/PR54/examples/3d/volume/volume_contour_scatters.html new file mode 100644 index 00000000..dd6504b0 --- /dev/null +++ b/previews/PR54/examples/3d/volume/volume_contour_scatters.html @@ -0,0 +1,80 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

volume, contour and scatters

julia
using GLMakie, ColorSchemes
+using GeometryBasics: Rect3f
+GLMakie.closeall() # close any open screen
+
+x = y = z = -1:0.2:1
+vol1 = [ix * iy * iz for ix in x, iy in y, iz in z]
+points3d = [Point3f(ix, iy, iz) for ix in x, iy in y, iz in z];
+# scale everything to the interval 0,1 (things don't seem to work with colorrange)
+vol2 = (vol1 .+ 1) ./ 2;
+# colormap with transparency in the middle
+cmap = :Hiroshige
+n = 101
+g(x) = x^2
+alphas = [g(x) for x in range(-1, 1, length = n)]
+cmap_alpha = resample_cmap(cmap, n; alpha = alphas)
+# the plot
+fig = Figure(size = (1200, 1200))
+ax1 = Axis3(fig[1, 1], perspectiveness = 0.5, azimuth = 7.19,
+    elevation = 0.57, aspect = (1, 1, 1))
+ax2 = Axis3(fig[1, 2], perspectiveness = 0.5, azimuth = 6.62,
+    elevation = 0.57, aspect = (1, 1, 1))
+ax3 = Axis3(fig[2, 1], perspectiveness = 0.5, azimuth = 7.38,
+    elevation = 0.57, aspect = (1, 1, 1))
+ax4 = Axis3(fig[2, 2], perspectiveness = 0.5, azimuth = 6.64,
+    elevation = 0.57, aspect = (1, 1, 1))
+
+volume!(ax1, x, y, z, vol2; colormap = cmap, transparency = true)
+contour!(ax2, x, y, z, vol1; colormap = cmap, alpha = 0.05,
+    levels = [collect(-1:0.01:-0.3)..., collect(0.3:0.01:1)...])
+meshscatter!(ax3, vec(points3d); color = vec(vol1), colormap = cmap_alpha)
+meshscatter!(ax4, vec(points3d); color = vec(vol1), colormap = cmap_alpha,
+    marker = Rect3f(Vec3f(-1), Vec3f(2)))
+limits!(ax4, -1.2, 1.2, -1.2, 1.2, -1.2, 1.2)
+fig
┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side x in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side y in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side z in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side x in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side y in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+┌ Warning: Encountered an `AbstractVector` with value -1.0:0.2:1.0 on side z in `convert_arguments` for the `ImageLike` trait.
+│         Using an `AbstractVector` to specify one dimension of an `ImageLike` is deprecated because `ImageLike` sides always need exactly two values, start and stop.
+│         Use interval notation `start .. stop` or a two-element tuple `(start, stop)` instead.
+└ @ Makie ~/.julia/packages/Makie/GWb7z/src/conversions.jl:405
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/animations/gravities.html b/previews/PR54/examples/animations/gravities.html new file mode 100644 index 00000000..6321543a --- /dev/null +++ b/previews/PR54/examples/animations/gravities.html @@ -0,0 +1,154 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Falling bodies in the Solar System.

julia
using GLMakie, FileIO
+GLMakie.activate!()
+# See following links for references:
+# https://twitter.com/AnsonBiggs/status/1444823816031510529/photo/1
+# https://github.com/JuliaAnimators/Javis.jl/blob/master/examples/gravities.jl
+diameters = Dict(
+    "Mercury" => 4879,
+    "Venus" => 12104,
+    "Earth" => 12756,
+    "Moon" => 3475,
+    "Mars" => 6792,
+    "Jupiter" => 142984,
+    "Saturn" => 120536,
+    "Uranus" => 51118,
+    "Neptune" => 49528,
+    "Pluto" => 2370)
+struct Body
+    position::Int
+    name::String
+    gravity::Real
+    color::String
+    radius::Real
+end
+Body(pos, name, grav, color) = Body(pos, name, grav, color, log(diameters[name]) * 2)
+bodies = [
+    Body(1, "Mercury", 3.7, "snow4")
+    Body(2, "Venus", 8.9, "navajowhite")
+    Body(3, "Earth", 9.8, "lightskyblue")
+    Body(4, "Moon", 1.6, "gainsboro")
+    Body(5, "Mars", 3.7, "orangered")
+    Body(6, "Jupiter", 23.1, "olive")
+    Body(7, "Saturn", 9, "burlywood")
+    Body(8, "Uranus", 8.7, "cyan3")
+    Body(9, "Neptune", 11, "dodgerblue")
+    Body(10, "Pluto", 0.7, "rosybrown4")
+]
+framerate = 24
+height = 1000 # meters
+
+frames = let
+    # Get planet with slowest acceleration
+    slowest = [p.gravity for p in bodies] |> minimum
+    # Kinematic equation to determine seconds to fall from height
+    time = 2 * height / slowest |> sqrt
+    # Calculate total frames and add a few seconds at the end to display final result
+    ceil(Int, time * framerate) + framerate * 5
+end
+
+fontsize = 12
+f = Observable(1)
+with_theme(theme_dark()) do
+    fig = Figure(; size=(900, 500))
+    axs = [Axis(fig[i, j]) for j in 1:11, i in 1:3]
+    for (idx, body) in enumerate(bodies)
+        # Kinematic equations to calculate how many frames each planet will be active
+        t_final = 2 * height / body.gravity |> sqrt
+        v_final = body.gravity * t_final
+        frame_final = ceil(Int, t_final * framerate)
+        # Calculate time of current frame for kinematic math
+        time = @lift($f / framerate)
+        # Calculate planets current position
+        body_y = @lift(height - 0.5 * body.gravity * $time^2)
+        sec = @lift($body_y <= 0 ? round(t_final, digits = 1) : round($time, digits = 1))
+        velocity = @lift($body_y <= 0 ? round(v_final, digits = 1) : round(body.gravity * $time, digits = 1))
+        body_y = @lift($body_y <= 0 ? 0 : $body_y)
+
+        # Set planet's position
+        scatter!(axs[idx+1, 2], @lift(Point2f(1, $body_y)), color = body.color, markersize = 25)
+        text!(axs[idx+1, 1], @lift(string($sec, "s")),
+            position = Point2f(1, 1),
+            fontsize = fontsize, color = @lift($body_y <= 0 ? "orange" : "grey90"),
+            align = (:left, :center))
+        text!(axs[idx+1, 1],
+            @lift(string($velocity, "m/s")),
+            position = Point2f(1, 0), fontsize = fontsize,
+            color = @lift($body_y <= 0 ? "orange" : "grey90"),
+            align = (:left, :center))
+
+        ylims!(axs[idx+1, 2], -30, height + 30)
+
+        scatter!(axs[idx+1,3], [Point2f(0,0)]; color = @lift($body_y <= 0 ? body.color : "grey9"),
+            strokecolor = :white, markersize = 85,
+            strokewidth = @lift($body_y <= 0 ? 2 : 0.25))
+        # Set text that is static during entire planet translation
+        text!(axs[idx+1, 1], body.name, position = Point2f(1, 3),
+            fontsize = fontsize, align = (:left, :center))
+        text!(axs[idx+1, 1], string(body.gravity, "m/s²"),
+            position = Point2f(1, 2), fontsize = fontsize,
+            align = (:left, :center))
+        limits!(axs[idx+1, 1], 0, 3, -0.5, 3.5)
+    end
+    ylims!(axs[1, 2], -15, height + 15)
+    text!(axs[1, 2], "\n1 Km", position = Point2f(0, 1000),
+        color=:orangered, fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 2], "0 Km", position = Point2f(0, 0),
+        color=:dodgerblue, fontsize = fontsize, align = (:left, :center))
+
+    text!(axs[1, 1], "Body:", position = Point2f(0, 3),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Acceleration:", position = Point2f(0, 2),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Time:", position = Point2f(0, 1),
+        fontsize = fontsize, align = (:left, :center))
+    text!(axs[1, 1], "Velocity:", position = Point2f(0, 0),
+        fontsize = fontsize, align = (:left, :center))
+    limits!(axs[1, 1], 0, 3, -0.5, 3.5)
+
+    [hidedecorations!(axs[idx, k]) for idx in 1:11, k in 1:3]
+    [hidespines!(axs[idx, k]) for idx in 1:11, k in 1:3]
+
+    Label(fig[0, :], "Falling Bodies in the Solar System\n ", font=:bold,
+        tellwidth = false, color = :grey70, fontsize=16)
+    Label(fig[0, :],
+        rich("Visualization by ",
+        rich("Lazaro Alonso\n ", color=:dodgerblue)),
+        justification=:left,
+        halign=1.0
+        )
+    rowgap!(fig.layout, 0)
+    colgap!(fig.layout, 0)
+    rowsize!(fig.layout, 1, Auto(0.15))
+    rowsize!(fig.layout, 3, Auto(0.2))
+    fig
+
+    record(fig, "gravities.mp4", framerate = 2 * framerate) do io
+        for i in 1:frames
+            f[] = i
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
"gravities.mp4"
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/animations/rotating_with_time.html b/previews/PR54/examples/animations/rotating_with_time.html new file mode 100644 index 00000000..0a930890 --- /dev/null +++ b/previews/PR54/examples/animations/rotating_with_time.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Rotating disc points

julia
using GLMakie
+GLMakie.activate!()
+# http://juliaplots.org/MakieReferenceImages/gallery//record_video/index.html
+
+f(t, v, s) = (sin(v + t) * s, cos(v + t) * s, (cos(v + t) + sin(v)) * s)
+t = Observable(time())
+pos1 = lift(t-> f.(t, range(0, stop = 2pi, length = 50), 1), t)
+pos2 = lift(t-> f.(t * 2.0, range(0, stop = 2pi, length = 50), 1.5), t)
+connectingLines = @lift(vcat([[$pos1[idx], $pos2[idx]] for idx in 1:length($pos1)]...))
+color = @lift(1:length($pos1)).val
+colorLines = @lift(1:length($connectingLines)).val
+markersize = 0.05
+
+limits = Rect3f(Vec3f(-1.5, -1.5, -3), Vec3f(3, 3, 6))
+fig = Figure(; size = (800,800))
+ax = LScene(fig[1,1]; scenekw=(limit=limits, ))
+meshscatter!(ax, pos1; color, markersize)
+meshscatter!(ax, pos2; color, markersize)
+linesegments!(ax, connectingLines, color = colorLines, linestyle = :dot)
+fig
+
+record(fig,  "rotatingWithTime.mp4", 1:120) do i
+    t[] = time()
+end
"rotatingWithTime.mp4"
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/animations/scatter_and_line.html b/previews/PR54/examples/animations/scatter_and_line.html new file mode 100644 index 00000000..a1f4d189 --- /dev/null +++ b/previews/PR54/examples/animations/scatter_and_line.html @@ -0,0 +1,56 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Animate line and point: Projectile motion

julia
using GLMakie
+GLMakie.activate!()
+
+# let's define some trajectory equations:
+x(t; v₀ = 270, θ = 60) = v₀ * t * cos* π / 180)
+y(t; v₀ = 270, θ = 60, g = 9.8) = v₀ * t * sin* π / 180) - g * t^2 / 2
+
+# Define a point function
+loc_point(t) = Point2f(x(t), y(t))
+# and a time span to calculate some coordinates
+t = 0:0.5:50
+# initial point
+traj = Observable(loc_point.(t[1:2]))
+lead_point = Observable(loc_point(t[2]))
+
+# first frame, initial plot
+fig = Figure(; size = (600,400))
+ax = Axis(fig[1,1]; xlabel = "x", ylabel = "y")
+lines!(ax, traj; color = :grey45, linewidth = 2)
+scatter!(lead_point; color = :orangered, markersize = 15)
+fig
+# the animation is done by updating the Observables
+record(fig, "scatterAndLine.mp4") do io
+    for t_i in t[3:end]
+        push!(traj[], loc_point(t_i)) # add new point to trajectory
+        lead_point[] = loc_point(t_i) # update leading point
+        ax.title = "t = $(t_i)"
+        autolimits!(ax)
+        ylims!(ax, -1000, 3000)
+        traj[] = traj[] #  trigger all updates for the new frame
+        recordframe!(io)  # record a new frame
+    end
+end
"scatterAndLine.mp4"
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/animations/scatter_size.html b/previews/PR54/examples/animations/scatter_size.html new file mode 100644 index 00000000..bea6968f --- /dev/null +++ b/previews/PR54/examples/animations/scatter_size.html @@ -0,0 +1,48 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Animate markersize growth

julia
using GLMakie, Random
+GLMakie.activate!()
+
+Random.seed!(123)
+npts = 100
+initms = 8 * rand(npts)
+with_theme(theme_dark()) do
+    msize = Observable(initms) # this is the variable that will change
+    # first frame, initial plot
+    fig, ax = scatter(2 * rand(npts), rand(npts), markersize = msize,
+        color = initms, colormap = (:Greek, 0.75), strokewidth = 0.5,
+        strokecolor = :white,
+        figure = (size = (1200, 800), fontsize = 22),
+        axis = (xlabel = "x", ylabel = "y",))
+    limits!(ax, 0, 2, 0, 1)
+    # the animation is done by updating the Observable values
+    # change assets->(your folder) to make it work in your local env
+    record(fig, "animScatters.mp4",
+        framerate = 24, profile = "main") do io
+        for i in 1:0.1:8
+            msize[] = i * initms
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/animations/travelling_solar_system.html b/previews/PR54/examples/animations/travelling_solar_system.html new file mode 100644 index 00000000..d1b55cca --- /dev/null +++ b/previews/PR54/examples/animations/travelling_solar_system.html @@ -0,0 +1,84 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

The speed of light in the solar system

julia
using GLMakie
+GLMakie.activate!()
+
+# https://www.jpl.nasa.gov/edu/pdfs/scaless_reference.pdf
+# 1au = 149597870700 # meters
+distances = [0, 0.39, 0.72, 1, 1.52, 5.2, 9.54, 19.2, 30.06] * 149597870700 # meters
+speed = 299792458 # meters / second
+diameters = [696340 * 2, 4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528] # km
+colors = ["snow4", "navajowhite", "lightskyblue", "orangered", "olive",
+    "burlywood", "cyan3", "dodgerblue"]
+names = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
+
+point = Observable(Point2f(0, 0))
+tail = Observable(Point2f[(0, 0)])
+ms = Observable(20.0)
+tempo = Observable(0.0)
+msP = diameters / maximum(diameters) * 545
+
+with_theme(theme_dark()) do
+    fig = Figure(; size=(900, 400))
+    axS = Axis(fig[1, 1])
+    axP = Axis(fig[1, 2]; title = "The speed of light in the solar system", titlesize = 14)
+    scatter!(axS, [-3.9], [0]; markersize = msP[1], color = :white)
+    scatter!(axP, distances[2:end], fill(0, length(distances[2:end]));
+        markersize = msP[2:end], color = colors)
+    colsize!(fig.layout, 1, Auto(0.1))
+    colgap!(fig.layout, 0)
+    hidedecorations!.([axP, axS])
+    hidespines!.([axP, axS])
+    xlims!(axS, -1, 1)
+    ylims!(axS, -1, 1)
+    Label(fig[1, 2, Top()], "so fast! 😃", fontsize = 16, halign=1)
+    Label(fig[1, 2, Top()], "so slow 😢", fontsize = 16, halign=0.0)
+    Label(fig[1,1:2, Bottom()], rich("Visualization by ",
+        rich("Lazaro Alonso", color=:dodgerblue)),
+        color = :white, halign=1)
+    text!(axP, names, position = tuple.(distances[2:end], [1, -1, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5]))
+    stem!(axP, distances[2:end], [1, -1, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5]; color = colors,
+        stemcolor = colors, trunkcolor = :white, trunklinestyle = :dashdotdot,
+        trunkwidth = 1, stemwidth = 0.85, markersize = 8)
+
+    for i = 1:5
+        lines!(axP, @lift(length($tail) < 5 ? $tail : $tail[end:-1:end-Int64(round(0.01 * i * length($tail)))]);
+            linewidth = 4 - i * 0.7, color = (:white, 1 - 0.1 * i))
+    end
+    scatter!(axP, point; color = (:white, 0.85), markersize = 15, marker = '▶')
+    text!(axP, @lift("$($tempo) hours"), position = point; color = :gold,
+        align = (:center, :bottom))
+    fig
+    record(fig, "travellingSolarSystem.mp4", framerate = 48) do io
+        for frame in LinRange(0.001, distances[end] + distances[5], 1000)
+            new_point = Point2f(frame, 0.0)
+            push!(tail[], new_point)
+            point[] = new_point
+            tempo[] = round((frame / speed) / 60 / 60, digits = 2)
+            tail[] = tail[]
+            xlims!(axP, 0, frame + frame * 0.08)
+            recordframe!(io)
+        end
+    end
+end
"travellingSolarSystem.mp4"
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/MarketData.html b/previews/PR54/examples/aog/MarketData.html new file mode 100644 index 00000000..30f2c3e8 --- /dev/null +++ b/previews/PR54/examples/aog/MarketData.html @@ -0,0 +1,44 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using MarketData, DataFrames
+using AlgebraOfGraphics, CairoMakie
+using Statistics

Close Price

julia
plt = data(cl)*mapping(:timestamp, :Close)*visual(Lines)
+
+with_theme(theme_ggplot2(), size = (600,400)) do
+    plt |> draw
+end

Prices

julia
labels = [:Open, :High, :Low, :Close]
+plt = data(ohlc)
+plt *= mapping(:timestamp, labels .=> "value", color =dims(1)=>renamer(labels) => "series ")
+
+with_theme(theme_light(), size = (600,400)) do
+    plt * visual(Lines) |> draw
+end

StockChart

julia
df = DataFrame(ohlc)
+pltd = data(df[200:280,:])
+plt = pltd * mapping(:timestamp, :Open => "StockChart")
+plt *= mapping(color = (:Open, :Close) => isless => "Open<Close") # fillto=:Close, because of this, the plot is wrong
+plt *= visual(BarPlot)
+
+with_theme(theme_dark(), size = (800,500)) do
+    draw(plt, scales(Color = (; palette = [:deepskyblue, :firebrick3])))
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/ablines.html b/previews/PR54/examples/aog/ablines.html new file mode 100644 index 00000000..c672dbe7 --- /dev/null +++ b/previews/PR54/examples/aog/ablines.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie, AlgebraOfGraphics

Following the syntax from https://docs.makie.org/v0.18.0/examples/plotting_functions/ablines/index.html for ablines, we reproduce that plot with AoG

julia
p_1to1 =  mapping([0],[1]) * visual(ABLines) # declare data-arguments and visual layer
+# declare the dataset
+p_not1to1  = data((; intercepts = [1,2,3], slopes=[1,1.5,2]))
+# declare the arguments of the analysis
+p_not1to1 *= mapping(:intercepts, :slopes, color=:intercepts => nonnumeric)
+# define your visual layer, what kind of plot do you want?
+p_not1to1 *= visual(ABLines, color = [:red, :blue, :orange], linestyle=:dash)
+
+with_theme(theme_ggplot2(), size = (600,400)) do
+    p_1to1 + p_not1to1 |> draw
+end

julia
with_theme(theme_ggplot2(), size = (600,400)) do
+    fig = Figure()
+    ax = Axis(fig[1,1])
+    aog = draw!(ax, p_1to1 + p_not1to1)
+    scatter!(ax, 10*rand(10), 10*rand(10); color=:red, label = "scatter")
+    limits!(ax, 0, 10, 0, 10)
+    legend!(fig[1, 2], aog)
+    Legend(fig[1,2], ax, valign = 0.2)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/datasaurus.html b/previews/PR54/examples/aog/datasaurus.html new file mode 100644 index 00000000..9abe675f --- /dev/null +++ b/previews/PR54/examples/aog/datasaurus.html @@ -0,0 +1,68 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CSV, Downloads, DataFrames
+using AlgebraOfGraphics, CairoMakie
+using Statistics
+
+#https://github.com/jumpingrivers/datasauRus
+#https://www.autodesk.com/research/publications/same-stats-different-graphs
+link = "https://raw.githubusercontent.com/jumpingrivers/datasauRus/main/inst/extdata/DatasaurusDozen-Long.tsv"
+file = Downloads.download(link)
+dsaurus = CSV.read(file, DataFrame, delim = '\t')
+
+plt = data(dsaurus) * mapping(:x => "", :y => "", layout=:dataset)
+with_theme(theme_light(), size = (1600,1200), fontsize = 24) do
+    draw(plt) ## palettes = (layout=wrap(cols=3),)
+end

ggplot2 theme

julia
with_theme(theme_ggplot2(), size = (1600,1200), fontsize = 24) do
+    fig = Figure()
+    g = GridLayout(fig[1,1])
+    wfacet = draw!(g, plt)
+    bxs = [Box(g[i,j, Top()], color = (:grey70, 0.95),
+        strokevisible = false) for i in 1:4 for j in 1:4]
+    [translate!(bxs[i].blockscene, 0,0,-1) for i in 1:15]
+    delete!.(bxs[14:end])
+    fig
+end

Adding some stats

julia
gdf = groupby(dsaurus, :dataset);
+stats = sort(combine(gdf, [:x, :y] .=> mean, [:x, :y] .=> std, [:x, :y] => cor));
+
+plt *= visual(strokewidth=0.95, strokecolor=:black, color =(:white,0.5));

dark theme

julia
with_theme(theme_dark(), size = (1600,1200), fontsize = 24) do
+
+    fig = Figure()
+    g = GridLayout(fig[1,1])
+    wfacet = draw!(g, plt) ## palettes = (layout=wrap(cols=3),)
+    # this should be also something automatic from AoG
+    bxs = [Box(g[i,j, Top()], color = (:grey30, 0.25),
+        strokevisible = false) for i in 1:4 for j in 1:4]
+    [translate!(bxs[i].blockscene, 0,0,-1) for i in 1:15]
+    delete!.(bxs[14:end])
+    # plot some stats
+    axstats = Axis(g[4, 2])
+    [text!(axstats, t, position = (0.05, 0.9 - (i-1)*0.15), align = (:left, :top))
+        for (i,t) in enumerate(names(stats)[2:end])]
+    [text!(axstats, ":  "*string(t), position = (0.3, 0.9 - (i-1)*0.15), align = (:left, :top))
+            for (i,t) in enumerate(values(stats[1,2:end]))]
+    limits!(0,1,0,1)
+    hidedecorations!(axstats)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/density_ridges.html b/previews/PR54/examples/aog/density_ridges.html new file mode 100644 index 00000000..ca96c2cb --- /dev/null +++ b/previews/PR54/examples/aog/density_ridges.html @@ -0,0 +1,54 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+import AlgebraOfGraphics as AoG
+
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+
+p_len  = data(penguins)
+p_len *= AoG.density()
+p_len *= mapping(:flipper_length_mm => (t -> t / 10), color=:species)
+
+with_theme(theme_light(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    p_len |> draw
+end

julia
p_len  = data(penguins)
+# p_len = AoG.density()
+p_len *= mapping(:flipper_length_mm, color=:species)
+p_len *= AoG.density()
+p_len *= visual(direction=:y, offset = 1.0, # direction is not working!
+    alpha = 0.2, strokewidth = 1.5, strokecolor = :grey20)
+draw(p_len)

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/penguins.html b/previews/PR54/examples/aog/penguins.html new file mode 100644 index 00000000..1f271a63 --- /dev/null +++ b/previews/PR54/examples/aog/penguins.html @@ -0,0 +1,55 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie, PalmerPenguins, DataFrames
+using GLM: lm, @formula, predict
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+function plotPenguins()
+    penguins = getPenguins()
+    palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+        marker=[:circle, :utriangle, :rect])
+    cycle = Cycle([:color, :marker], covary=true)
+    with_theme(theme_light(), palette=palette, Scatter=(cycle=cycle,)) do
+        fig = Figure(size=(600, 400))
+        ax = Axis(fig[1, 1], title="Flipper and bill length",
+            xlabel="Flipper length (mm)", ylabel="Bill length (mm)")
+        for penguin in ["Adelie", "Chinstrap", "Gentoo"]
+            specie = filter(:species => ==(penguin), penguins)
+            x = specie[!, :flipper_length_mm]
+            y = specie[!, :bill_length_mm]
+            linearModel = lm(@formula(Y ~ X), DataFrame(X=x, Y=y))
+= predict(linearModel)
+            scatter!(ax, x, y; markersize=12, label=penguin)
+            lines!(ax, x, ŷ; label=penguin, linewidth=4)
+        end
+        axislegend("Penguin species", position=:rb, backgroundcolor=(:grey90, 0.15),
+            titlesize=12, labelsize=12, merge=true)
+        return fig
+    end
+end
+fig = plotPenguins()

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/penguins3d.html b/previews/PR54/examples/aog/penguins3d.html new file mode 100644 index 00000000..76f25015 --- /dev/null +++ b/previews/PR54/examples/aog/penguins3d.html @@ -0,0 +1,68 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+import AlgebraOfGraphics as AoG
+using GLMakie
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+p3d  = data(penguins)
+p3d *= AoG.density()
+p3d *= mapping(:bill_length_mm, :bill_depth_mm)
+p3d *= visual(Wireframe, linewidth=0.05, transparency=true)
+p3d *= mapping(color = :species);

Let's define 3 new default colors

julia
colors = tuple.([:grey10, :orange, :dodgerblue], 0.5)
+palstyle = (; color=colors, patchcolor = colors);

Penguins 3d Wireframe density

julia
with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    draw(p3d; axis = (type = Axis3, perspectiveness = 0.5, aspect=(1, 1, 1)))
+end

Penguins histogram

julia
phist = data(penguins)
+phist *= AoG.histogram(; bins = 28)
+phist *= mapping(:bill_length_mm => "bill length mm", color =:species, stack = :species);
+
+with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    phist |> draw
+end

AoG and plain Makie

Currently, density plots with direction=:y is not supported by AoG, but you can just do it with plain Makie and combine everything into a nice layout.

julia
with_theme(theme_ggplot2(),size = (600,400), palette=palstyle) do
+    pnames = ["Chinstrap", "Adelie","Gentoo"]
+    bill_depths = [filter(:species => x -> x == n, penguins)[!,:bill_depth_mm] for n in pnames]
+
+    fig = Figure(; size = (700, 700))
+    draw!(fig[2,1], p3d; axis = (type = Axis3, perspectiveness = 0.5, aspect=(1, 1, 1)))
+    draw!(fig[1,1], phist)
+    # plain Makie
+    axd = Axis(fig[2,2], ylabel = "bill depth mm")
+    [density!(axd, b_depth, direction = :y, strokewidth = 1, label = pnames[i])
+        for (i,b_depth) in enumerate(bill_depths)]
+    Legend(fig[1,2], axd, tellheight = true)
+    # some extra tweaks
+    colsize!(fig.layout, 1, Relative(3/4))
+    rowsize!(fig.layout, 1, Relative(1/4))
+    rowgap!(fig.layout,0)
+    colgap!(fig.layout,0)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/penguinsAoG.html b/previews/PR54/examples/aog/penguinsAoG.html new file mode 100644 index 00000000..14241452 --- /dev/null +++ b/previews/PR54/examples/aog/penguinsAoG.html @@ -0,0 +1,50 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using GLMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+GLMakie.activate!()
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+# declare the dataset
+p_len  = data(penguins)
+# declare the arguments of the analysis
+p_len *= mapping(:flipper_length_mm => (t -> t / 10) => "flipper length (cm)",
+    :bill_length_mm => (t -> t / 10) => "bill length (cm)")
+# declare the grouping and the respective visual attribute
+p_len *= mapping(color=:species)
+
+with_theme(theme_ggplot2(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    draw(p_len * mapping(marker=:species) + p_len * linear();
+        axis = (; title="Flipper and bill length"))
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/penguinsBoxes.html b/previews/PR54/examples/aog/penguinsBoxes.html new file mode 100644 index 00000000..57929891 --- /dev/null +++ b/previews/PR54/examples/aog/penguinsBoxes.html @@ -0,0 +1,70 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+
+penguins = getPenguins()
+# declare new plot attributes
+palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+    marker=[:circle, :utriangle, :rect])
+cycle = Cycle([:color, :marker], covary=true)
+
+p_len  = data(penguins)
+p_len *= mapping(:flipper_length_mm => (t -> t / 10),
+    :bill_length_mm => (t -> t / 10))
+p_len *= mapping(color=:species, marker=:species)
+
+bpl = data(penguins)
+bpl *= mapping(:species, :bill_length_mm => (t -> t / 10), color = :species)
+bpl *= visual(Makie.BoxPlot)
+
+bplt = data(penguins)
+bplt *= mapping(:species, :flipper_length_mm => (t -> t / 10), color = :species)
+bplt *= visual(Makie.BoxPlot, orientation = :horizontal)
+
+with_theme(theme_light(),size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+    fig = Figure()
+    axs = [Axis(fig[2,1], xlabel = "flipper length (cm)", ylabel = "bill length (cm)"),
+        Axis(fig[1,1]), Axis(fig[2,2])]
+    dots = draw!(axs[1], p_len)
+    draw!(axs[2], bplt)
+    draw!(axs[3], bpl)
+    # getting the right layout aspect
+    colsize!(fig.layout, 1, Auto(4.0))
+    rowsize!(fig.layout, 1, Auto(1/3))
+    colgap!(fig.layout,3)
+    rowgap!(fig.layout, 3)
+    linkxaxes!(axs[1], axs[2])
+    linkyaxes!(axs[1], axs[3])
+    hidedecorations!.(axs[2:3], grid=false)
+    legend!(fig[1,2], dots)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/penguinsViolins.html b/previews/PR54/examples/aog/penguinsViolins.html new file mode 100644 index 00000000..2122cfca --- /dev/null +++ b/previews/PR54/examples/aog/penguinsViolins.html @@ -0,0 +1,72 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie, PalmerPenguins, DataFrames
+using AlgebraOfGraphics
+
+
+function getPenguins()
+    # ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"
+    penguins = dropmissing(DataFrame(PalmerPenguins.load()))
+    return penguins
+end
+let
+    penguins = getPenguins()
+    # declare new plot attributes
+    palette = (color=tuple.(["#FC7808", "#8C00EC", "#107A78"], 0.65),
+        marker=[:circle, :utriangle, :rect])
+    cycle = Cycle([:color, :marker], covary=true)
+
+    p_len  = data(penguins)
+    p_len *= mapping(:flipper_length_mm => (t -> t / 10),
+        :bill_length_mm => (t -> t / 10))
+    p_len *= mapping(color=:species, marker=:species)
+
+    bpl = data(penguins)
+    bpl *= mapping(:species, :bill_length_mm => (t -> t / 10), color = :species)
+    bpl *= visual(Violin)
+
+    bplt = data(penguins)
+    bplt *= mapping(:species, :flipper_length_mm => (t -> t / 10), color = :species)
+    bplt *= visual(Violin, orientation = :horizontal)
+
+    fig = with_theme(theme_light(), size = (600,400), palette=palette, Scatter=(cycle=cycle,)) do
+        fig = Figure()
+        axs = [Axis(fig[2,1], xlabel = "flipper length (cm)", ylabel = "bill length (cm)"),
+            Axis(fig[1,1]), Axis(fig[2,2])]
+        dots = draw!(axs[1], p_len)
+        draw!(axs[2], bplt)
+        draw!(axs[3], bpl)
+        # getting the right layout aspect
+        colsize!(fig.layout, 1, Auto(4.0))
+        rowsize!(fig.layout, 1, Auto(1/3))
+        colgap!(fig.layout,3)
+        rowgap!(fig.layout, 3)
+        linkxaxes!(axs[1], axs[2])
+        linkyaxes!(axs[1], axs[3])
+        hidedecorations!.(axs[2:3], grid=false)
+        legend!(fig[1,2], dots)
+        fig
+    end
+
+end
CairoMakie.Screen{SVG}

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/aog/scatterlinesAoG.html b/previews/PR54/examples/aog/scatterlinesAoG.html new file mode 100644 index 00000000..17c764f1 --- /dev/null +++ b/previews/PR54/examples/aog/scatterlinesAoG.html @@ -0,0 +1,37 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie, AlgebraOfGraphics

Here I try to follow as much as possible the philosophy of AoG. from here

julia
# create some data
+x = range(-π, π, length=50)
+y = sin.(x)
+df = (; x, y)
+# declare the dataset
+xy  = data(df)
+# declare the arguments of the analysis
+xy *= mapping(:x, :y)
+# define your visual layer, what kind of plot do you want?
+xy *= visual(ScatterLines)
+# draw your figure
+with_theme(theme_ggplot2(), size = (600,400)) do
+    xy |> draw
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/dashboards/colorschemes.html b/previews/PR54/examples/dashboards/colorschemes.html new file mode 100644 index 00000000..e5afe92e --- /dev/null +++ b/previews/PR54/examples/dashboards/colorschemes.html @@ -0,0 +1,53 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

colorschemes options: Slider + volume

julia
using GLMakie, ColorSchemes, Random
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function plotVolColormaps(; rseed = 123)
+    Random.seed!(rseed)
+    # all colormaps from colorschemes
+    cs = collect(keys(colorschemes))
+    cmapIdx = Observable(1)
+    cmap = @lift(cs[$cmapIdx])
+    # the actual figure
+    x = y = z = -1.7:0.05:1.7
+    xs = ys = zs = -1.7..1.7
+    r(i, j, k) = sqrt(i^2 + j^2 + k^2)
+    A = [rand() / r(i, j, k)^2 for i in x, j in y, k in z]
+
+    fig = Figure(size = (1200, 800))
+    ax = Axis3(fig[1, 1];
+        aspect = (1, 1, 1),
+        perspectiveness = 0.5,
+        elevation = π / 9
+        )
+    volume!(ax, xs, ys, zs, A; colormap = cmap, transparency = true, colorrange = (0,5))
+    fig[0, 1] = GLMakie.Label(fig, @lift("Colormap: $(cs[$cmapIdx]), id : $($cmapIdx)"), fontsize = 20,
+        tellheight = true, tellwidth = false)
+    sl = Slider(fig[1, 2], range = 1:length(cs), startvalue = 1021, horizontal = false)
+    connect!(cmapIdx, sl.value)
+    fig
+end
+fig = with_theme(plotVolColormaps, theme_dark())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/dashboards/matcap.html b/previews/PR54/examples/dashboards/matcap.html new file mode 100644 index 00000000..9f2cd511 --- /dev/null +++ b/previews/PR54/examples/dashboards/matcap.html @@ -0,0 +1,80 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Mesh with matcap: Slider

julia
using GLMakie
+using FileIO, Downloads, JSON
+using Makie.GeometryBasics: Pyramid
+using GeometryBasics
+using Colors, LinearAlgebra
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+pyr = Pyramid(Point3f(0), 1.0f0, 1.0f0)
+rectmesh = Rect3(Point3f(-0.5), Vec3f(1))
+sphere = Sphere(Point3f(-0.5), 1)
+Cone(; quality=10) = merge([
+    Makie._circle(Point3f(0), 0.5f0, Vec3f(0, 0, -1), quality),
+    Makie._mantle(Point3f(0), Point3f(0, 0, 1), 0.5f0, 0.0f0, quality)])
+cone = Cone()
+
+brain = load(Makie.assetpath("brain.stl"))
+matball = load(Makie.assetpath("matball_base.obj"))
+matball_inner = load(Makie.assetpath("matball_inner.obj"))
+matball_outer = load(Makie.assetpath("matball_outer.obj"))
+# download more ids from here:
+# https://raw.githubusercontent.com/MakieOrg/BeautifulMakie/main/data/
+#ids = JSON.parsefile("matcapIds.json")
+
+ids = ["F79686_FCCBD4_E76644_E76B56",
+    "F9E6C7_FCF7DF_EDD3AA_F1D4B4",
+    "FBB43F_FBE993_FB552E_FCDD65",
+    "FBB82D_FBEDBF_FBDE7D_FB7E05"]
+function plotmat()
+    idx = Observable(1)
+    idpng = @lift(ids[$idx])
+    matcap = @lift(load(Downloads.download("https://raw.githubusercontent.com/nidorx/matcaps/master/1024/$($idpng).png")))
+
+    shading = FastShading
+    fig = Figure(size=(900, 600))
+    axs = [LScene(fig[i, j]; show_axis=false)
+            for j in 1:3, i in 1:2]
+    mesh!(axs[5], sphere; matcap, shading)
+    mesh!(axs[3], rectmesh; matcap, shading, transparency=true)
+    mesh!(axs[4], pyr; matcap, shading)
+    mesh!(axs[2], matball; matcap, shading)
+    mesh!(axs[2], matball_inner; matcap, shading)
+    mesh!(axs[2], matball_outer; matcap, shading)
+    mesh!(axs[6], cone; matcap, shading)
+    mesh!(axs[1], brain; matcap, shading)
+    GLMakie.rotate!(axs[2].scene, 2.35)
+    center!(axs[2].scene)
+    zoom!(axs[2].scene, cameracontrols(axs[2].scene), 0.75)
+    zoom!(axs[3].scene, cameracontrols(axs[3].scene), 1.2)
+    zoom!(axs[4].scene, cameracontrols(axs[4].scene), 1.2)
+    sl = Slider(fig[1:2, 4], range=1:length(ids), startvalue=2, horizontal=false)
+    connect!(idx, sl.value)
+    fig[0, 1:3] = GLMakie.Label(fig, @lift("idnum [$(1*$idx)] png material : $(ids[$idx])"), fontsize=20,
+        tellheight=true, tellwidth=false)
+    fig
+end
+fig = with_theme(plotmat, theme_dark())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/dashboards/tesseral_spherical_harmonics.html b/previews/PR54/examples/dashboards/tesseral_spherical_harmonics.html new file mode 100644 index 00000000..cf9cf00c --- /dev/null +++ b/previews/PR54/examples/dashboards/tesseral_spherical_harmonics.html @@ -0,0 +1,82 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Tesseral Spherical Harmonics: Slider + Menu

julia
using GLMakie, ColorSchemes
+using AssociatedLegendrePolynomials
+GLMakie.activate!()
+GLMakie.closeall() # close any open screen
+
+function Y(θ, ϕ, l, m)
+    if m < 0
+        return (-1)^m *2 * Nlm(l, abs(m)) * Plm(l, abs(m), cos(θ)) * sin(abs(m) * ϕ)
+    elseif m == 0
+        return sqrt((2 * l + 1) /) * Plm(l, m, cos(θ))
+    else
+        return (-1)^m *2 * Nlm(l, m) * Plm(l, m, cos(θ)) * cos(m * ϕ)
+    end
+end
+# Grids of polar and azimuthal angles
+θ = LinRange(0, π, 200)
+ϕ = LinRange(0, , 200)
+x = [sin(θ) * sin(ϕ) for θ in θ, ϕ in ϕ]
+y = [sin(θ) * cos(ϕ) for θ in θ, ϕ in ϕ]
+z = [cos(θ) for θ in θ, ϕ in ϕ]
+l = Observable(4)
+m = Observable(1)
+cmap = "Hiroshige"
+
+with_theme(theme_dark()) do
+    fig = Figure(size = (1200, 800))
+    menu = Menu(fig, options = ["Hiroshige", "Spectral_11", "diverging_bkr_55_10_c35_n256",
+        "diverging_cwm_80_100_c22_n256", "diverging_gkr_60_10_c40_n256",
+        "diverging_linear_bjr_30_55_c53_n256",
+        "diverging_protanopic_deuteranopic_bwy_60_95_c32_n256"])
+    Ygrid = lift(l, m) do l, m
+        [Y(θ, ϕ, l, m) for θ in θ, ϕ in ϕ]
+    end
+    Ylm = @lift(abs.($Ygrid))
+    Ygrid2 = @lift(vec($Ygrid))
+
+    ax1 = Axis3(fig[1, 1], aspect = :data, perspectiveness = 0.5, elevation = π / 8, azimuth = 2.225π)
+    ax2 = Axis3(fig[1, 2], aspect = :data, perspectiveness = 0.5, elevation = π / 8, azimuth = 2.225π)
+    pltobj1 = surface!(ax1, x, y, z; color = Ygrid, colormap = cmap, shading = NoShading)
+    pltobj2 = surface!(ax2, @lift($Ylm .* x), @lift($Ylm .* y), @lift($Ylm .* z), color = Ygrid,
+        colormap = cmap, shading = NoShading)
+    limits!(ax2, -0.5, 0.5, -0.5, 0.5, -1, 1)
+    # cbar = Colorbar(fig[1, 3], pltobj1, label = "Yₗₘ(θ,ϕ)", width = 11, tickalign = 1, tickwidth = 1)
+    fig[0, 1:2] = GLMakie.Label(fig, @lift("Tesseral Spherical Harmonics l = $($l), m = $($m)"), fontsize = 20)
+    fig[1, 0] = vgrid!(
+        GLMakie.Label(fig, "Colormap", width = nothing),
+        menu; tellheight = false, width = 150)
+    on(menu.selection) do s
+        pltobj1.colormap = s
+        pltobj2.colormap = s
+    end
+    sl = Slider(fig[end+1, 1:2], range = 1:30, startvalue = 6)
+    sl2 = Slider(fig[end+1, 1:2], range = @lift(-$(sl.value):1:$(sl.value)))
+    connect!(l, sl.value)
+    connect!(m, sl2.value)
+    # tight_ticklabel_spacing!(cbar)
+    # display(fig)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/astronauts.html b/previews/PR54/examples/datavis/astronauts.html new file mode 100644 index 00000000..4e9d796e --- /dev/null +++ b/previews/PR54/examples/datavis/astronauts.html @@ -0,0 +1,143 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Astronauts

julia
using CairoMakie, HTTP, CSV, DataFrames, DataFramesMeta, Suppressor
+using Images, ColorSchemes, Colors, Statistics
+using Downloads
+using Lazy: @>
+CairoMakie.activate!(type = "png")
+
+function plotastro()
+    data_url = "https://bit.ly/3kmlGn2"
+    @suppress begin
+        global astronauts
+        astronauts = CSV.File(HTTP.download(data_url)) |> DataFrame
+    end
+    offhr, rPts, α = 3.5, 45, 35
+    astro = @> begin
+        astronauts
+        @orderby(:year_of_mission)
+        @subset(:total_eva_hrs .> 0.0)
+        @transform(:ntotEVA = :total_eva_hrs / maximum(:total_eva_hrs))
+        @transform( = LinRange(0,  - / length(:name), length(:name)))
+        @transform(:align = tuple.(ifelse.(π / 2 .< .< / 2, ^(:right), ^(:left)), ^(:center)))
+        @transform(:texttheta = ifelse.(π / 2 .< .< / 2,  .+ π, ))
+        @transform(:evaM = log10.((60 * :eva_hrs_mission / median(60 * :eva_hrs_mission)) .+ offhr))
+        @transform(:xM = rPts * :evaM .* cos.(), :yM = rPts * :evaM .* sin.())
+        @transform(:xMnm = rPts * (:evaM .- :total_number_of_missions .* :evaM ./ α) .* cos.())
+        @transform(:yMnm = rPts * (:evaM .- :total_number_of_missions .* :evaM ./ α) .* sin.())
+    end
+    valYear = @> begin
+        astro
+        @subset([true; :year_of_mission[2:end] .!= :year_of_mission[1:end-1]])
+    end
+    vehicles = @> begin
+        astro
+        @subset([true; :ascend_shuttle[2:end] .!= :ascend_shuttle[1:end-1]])
+    end
+    tierra = "https://eoimages.gsfc.nasa.gov/images/imagerecords/8000/8108/ipcc_bluemarble_west_front.jpg"
+    @suppress begin
+        global imgEarth
+        tierra = Downloads.download(tierra)
+        imgEarth = load(tierra)
+        imgEarth = imgEarth[:,120:end-120]
+    end
+
+    function getPoints(xi, yi, xf, yf)
+        xyos = []
+        for i in 1:length(xo)
+            push!(xyos, [xi[i], yi[i]])
+            push!(xyos, [xf[i], yf[i]])
+        end
+        xyos
+    end
+    x, y = astro.xM, astro.yM # end points
+    xs, ys = astro.xMnm, astro.yMnm # short lines starts
+    xo = yo = zeros(length(x)) # origin
+    xnb, ynb = 90 * cos.(astro.θ), 90 * sin.(astro.θ)
+    xne, yne = 100 * cos.(astro.θ), 100 * sin.(astro.θ)
+    ps, colorp = 0.5 .+ 3astro.ntotEVA, astro.total_eva_hrs # point size, color palette
+    gridLines = LinRange(log10(offhr), maximum(astro.evaM), 6)
+    horas = (10 .^ gridLines .- offhr) * median(60 * astro.eva_hrs_mission) / 60
+    xg = [rPts * gl .* cos.(astro.θ) for gl in gridLines]
+    yg = [rPts * gl .* sin.(astro.θ) for gl in gridLines]
+    # in order to use linesegments (faster to plot)
+    xyos = getPoints(xo, yo, xs, ys)
+    xys = getPoints(xs, ys, x, y)
+    xybe = getPoints(xnb, ynb, xne, yne)
+    cpDo = repeat(colorp, inner = 2)
+    psDo = repeat(ps, inner = 2)
+
+    with_theme(theme_black()) do
+        fig = Figure(size = (1200, 1200))
+        cmap = :rainbow2
+        ax = CairoMakie.Axis(fig[1, 1],
+            title = "ASTRONAUTS' EXTRAVEHICULAR ACTIVITIES",
+            autolimitaspect = 1)
+        hidespines!(ax)
+        hidedecorations!(ax)
+        image!(-20 .. 20, -20 .. 20, rotr90(imgEarth))
+        text!(astro.name, position = @.(Point2f(cos(astro.θ), sin(astro.θ)) * 85),
+            rotation = astro.texttheta, fontsize = 6, align = astro.align)
+        text!(string.(valYear.year_of_mission),
+            position = @.(Point2f(cos(valYear.θ), sin(valYear.θ)) * 65),
+            rotation = valYear.texttheta, fontsize = 10, align = valYear.align)
+        text!(vehicles.ascend_shuttle,
+            position = @.(Point2f(cos(vehicles.θ), sin(vehicles.θ)) * 73),
+            rotation = vehicles.texttheta, fontsize = 6, align = vehicles.align)
+
+        pltobj = scatter!(ax, astro[:, :xM], astro[:, :yM], color = colorp,
+            colormap = cmap, markersize = 3 * ps, strokewidth = 0)
+
+        linesegments!(Point2f.(xyos), color = cpDo, linewidth = psDo / 2, colormap = (cmap, 0.15))
+        linesegments!(Point2f.(xys), color = cpDo, linewidth = psDo / 2, colormap = cmap)
+        linesegments!(Point2f.(xybe), color = cpDo, linewidth = psDo / 3, colormap = (cmap, 0.5))
+
+        Colorbar(fig[1, 1], pltobj,
+            label = "Total duration of all extravehicular activities in hours",
+            tellheight = false, tellwidth = false, ticklabelsize = 12, flipaxis = true,
+            vertical = false, ticksize = 15, tickalign = 1, width = Relative(1.5 / 4),
+            halign = :right, valign = :bottom, labelsize = 12)
+
+        for (indx, gl) in enumerate(gridLines)
+            xg, yg = rPts * gl .* cos.(astro.θ), rPts * gl .* sin.(astro.θ)
+            hrs = Int64(round(horas[indx], digits = 0))
+            lines!(xg, yg, linewidth = 0.5, linestyle = :dash, color = :white)
+            text!(string.(hrs), position = (xg[1] + 0.5, y[1] + 0.5),
+                color = "#FFDD33", fontsize = 14)
+        end
+        lines!([rPts * gridLines[1], rPts * gridLines[end]], [0, 0], linestyle = :dash,
+            linewidth = 2, color = "#FFDD33")
+        text!("evaM (hrs)", position = Point2f(47, -3.5), color = "#FFDD33", fontsize = 16)
+        text!("evaM ≡ Duration of extravehicular \n activities during the mission in hours",
+            position = Point2f(rPts * gridLines[end-2], 90), color = "#FFDD33", fontsize = 16)
+        text!("using Makie", position = Point2f(-99, -94), fontsize = 18, color = :white)
+        text!("Visualization by Lazaro Alonso and Julius Krumbiegel ",
+            position = Point2f(-99, -97), fontsize = 12, color = "#61AFEF")
+        text!("Data - Astronaut Database - Mariya Stavnichuk and Tatsuya Corlett",
+            position = Point2f(-99, -99), fontsize = 10)
+        limits!(ax, -100, 100, -100, 100)
+        fig
+    end
+end
+fig = plotastro()
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/candlestick.html b/previews/PR54/examples/datavis/candlestick.html new file mode 100644 index 00000000..60f04446 --- /dev/null +++ b/previews/PR54/examples/datavis/candlestick.html @@ -0,0 +1,53 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

candlestick

julia
using CairoMakie, Random, TimeSeries, MarketData, Dates
+
+tempo = string.(timestamp(ohlc))
+lentime = length(tempo)
+slice_dates = range(1,lentime, step = lentime÷20)
+
+colors = values(ohlc.Close) .> values(ohlc.Open)
+lowV = values(ohlc.Low)
+highV = values(ohlc.High)
+linesegs = []
+for i in 1:lentime
+    push!(linesegs, Point2f(i, lowV[i]))
+    push!(linesegs, Point2f(i, highV[i]))
+end
+linesegs = Point2f.(linesegs)
+cmap = ["#f64325", "#78f518"]
+with_theme(theme_dark()) do
+    fig = Figure(; size = (1200, 700), font = "sans", fontsize = 20)
+    ax = Axis(fig; ygridcolor = "#65866b",
+        xgridcolor = "#65866b", xgridstyle=:dash, ygridstyle=:dash)
+    barplot!(ax, 1:lentime, values(ohlc.Open), fillto = values(ohlc.Close),
+        color = colors,strokewidth = 0.5, strokecolor = colors, colormap = cmap)
+    linesegments!(ax, linesegs, color = colors, colormap = cmap)
+    xlims!(ax, 200, 300)
+    ylims!(ax, 13,24)
+    ax.xticks = (slice_dates, tempo[slice_dates])
+    ax.xticklabelrotation = π/4
+    fig[1,1] = ax
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/earthquakes.html b/previews/PR54/examples/datavis/earthquakes.html new file mode 100644 index 00000000..2e04a2a3 --- /dev/null +++ b/previews/PR54/examples/datavis/earthquakes.html @@ -0,0 +1,92 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Earthquakes

julia
using CSV, DataFrames
+using GLMakie, Colors, ColorSchemes
+using FileIO, Downloads
+GLMakie.activate!()
+# Original reference: https://glowy-earthquakes.glitch.me
+
+urlimg = "https://upload.wikimedia.org/wikipedia/commons/9/96/NASA_bathymetric_world_map.jpg"
+earth_img = load(Downloads.download(urlimg))
+function sphere(; r = 1.0, n = 32)
+    θ = LinRange(0, π, n)
+    φ = LinRange(-π, π, 2 * n)
+    x = [r * cos(φ) * sin(θ) for θ in θ, φ in φ]
+    y = [r * sin(φ) * sin(θ) for θ in θ, φ in φ]
+    z = [r * cos(θ) for θ in θ, φ in φ]
+    return (x, y, z)
+end
+
+# https://earthquake.usgs.gov/earthquakes/map/?extent=-68.39918,-248.90625&extent=72.60712,110.74219
+urldata = "https://raw.githubusercontent.com/MakieOrg/BeautifulMakie/main/data/"
+file1 = Downloads.download(urldata * "2021_01_2021_05.csv")
+file2 = Downloads.download(urldata * "2021_06_2022_01.csv")
+earthquakes1 = CSV.read(file1, DataFrame)
+earthquakes2 = CSV.read(file2, DataFrame)
+earthquakes = vcat(earthquakes1, earthquakes2)
+
+# depth unit, km
+function toCartesian(lon, lat; r = 1.02, cxyz = (0, 0, 0))
+    x = cxyz[1] + (r + 1500_000) * cosd(lat) * cosd(lon)
+    y = cxyz[2] + (r + 1500_000) * cosd(lat) * sind(lon)
+    z = cxyz[3] + (r + 1500_000) * sind(lat)
+    return (x, y, z) ./ 1500_000
+end
+
+lons, lats = earthquakes.longitude, earthquakes.latitude
+depth = earthquakes.depth
+mag = earthquakes.mag
+
+toPoints3D = [Point3f([toCartesian(lons[i], lats[i];
+    r = -depth[i] * 1000)...]) for i in eachindex(lons)]
+ms = (exp.(mag) .- minimum(exp.(mag))) ./ maximum(exp.(mag) .- minimum(exp.(mag)))
+
+with_theme(theme_black()) do
+    fig = Figure(size = (900, 900), fontsize = 20)
+    ax = LScene(fig[1, 1], show_axis = false)
+    pltobj = meshscatter!(ax, toPoints3D; markersize = ms / 20 .+ 0.001, color = mag,
+        colormap = resample_cmap(:afmhot, 256)[10:end], shading = FastShading)
+    surface!(ax, sphere(; r = 1.0)..., color = tuple.(earth_img, 0.1),
+        shading = FastShading, transparency = true)
+    Colorbar(fig[1, 2], pltobj, label = "Magnitude", height = Relative(1.5 / 4))
+    Label(fig[1, 1, Top()],
+        rich("Visualization by ",
+        rich("Lazaro Alonso\n", color=:dodgerblue),
+        rich("using Makie", color=:orangered)),
+        justification=:left,
+        halign=1.0
+        )
+    Label(fig[1, 1, Top()], "Earthquakes on Earth. Jan-2021 to Jan-2022\nOriginal data from USGS",
+        halign=0.0, justification=:left)
+    zoom!(ax.scene, cameracontrols(ax.scene), 0.55)
+    rotate!(ax.scene, 3.0)
+    save("earthquakes.png", fig; update=false)
+    ##run this to get a smooth animation
+    record(fig, "earthquakes.mp4", framerate = 24, update=false) do io
+        for i in 3.0:0.015:9.5
+            rotate!(ax.scene, i)
+            recordframe!(io)  # record a new frame
+        end
+    end
+end
"earthquakes.mp4"

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/eigenvals_densities.html b/previews/PR54/examples/datavis/eigenvals_densities.html new file mode 100644 index 00000000..2da40991 --- /dev/null +++ b/previews/PR54/examples/datavis/eigenvals_densities.html @@ -0,0 +1,122 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie
+using StatsBase, LinearAlgebra
+using Interpolations, OnlineStats
+using Distributions
+CairoMakie.activate!(type = "png")
+
+function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
+
+function getcounts!(h, fn; n = 100)
+    for _ in 1:n
+        vals = eigvals(fn())
+        x0 = real.(vals)
+        y0 = imag.(vals)
+        fit!(h, zip(x0,y0))
+    end
+end
getcounts! (generic function with 1 method)

See http://www.bohemianmatrices.com/gallery/ for more info and inspiration!

4x4 random

julia
m(;a=10rand()-5, b=10rand()-5) = [0 0 0 a; -1 -1 1 0; b 0 0 0; -1 -1 -1 -1]
+
+h = HeatMap(range(-3.5,3.5,length=1200), range(-3.5,3.5, length=1200))
+getcounts!(h, m; n=500_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax,-3.5..3.5, -3.5..3.5, eq_hist(h.counts); colormap = :bone_1)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Tridiagonal

julia
mtri() = Array(Tridiagonal(2rand(19) .-1, 2rand(20) .-1, 2rand(19) .-1))
+
+h = HeatMap(range(-3,3,length=1200÷2),range(-2,2,length=1200÷2))
+getcounts!(h, mtri; n=250_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -3..3, -2..2, eq_hist(h.counts); colormap = :bone_1)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Beta distribution

julia
(; n = 6) = 2rand(Beta(0.01,0.01), n,n) .-1
+h = HeatMap(range(-3,3,length=1200),range(-2,2,length=1200))
+getcounts!(h, mβ; n=500_000)
+
+with_theme(theme_black()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -3..3, -2..2,eq_hist(h.counts);
+        colormap = [:black, :white, :white])
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

3x3 random

julia
m3(;a=9rand()-5,b=9rand()-5) = [a 1 -1; -1 b 0; 1 -1 -1]
+h = HeatMap(range(-4,4,length=1200),range(-2,2,length=1200))
+getcounts!(h, m3; n = 500_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,400))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -4..4, -2..2,eq_hist(h.counts);
+        colormap = :CMRmap)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Tridiagonal 30x30 [-1,1]

julia
mtrin(; n =30) = Array(Tridiagonal(rand([-1.0,1.0],n-1), zeros(n), rand([-1.0,1.0],n-1)))
+
+h = HeatMap(range(-2,2,length=1200),range(-2,2,length=1200))
+
+getcounts!(h, mtrin; n = 50_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -2..2, -2..2, eq_hist(h.counts);
+        colormap = :linear_kry_5_95_c72_n256)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

8x8 random [-1, -1/f, 0, 1/f, 1]

julia
mrand(; f=1000,n=8) = rand([-1.0, -1/f, 0, 1/f, 1.0],n,n)
+h = HeatMap(range(-2,2,length=800), range(-2,2,length=800))
+getcounts!(h, mrand; n = 250_000)
+
+with_theme(theme_dark()) do
+    fig = Figure(figure_padding=0,size=(600,600))
+    ax = Axis(fig[1,1]; aspect = DataAspect())
+    heatmap!(ax, -2..2, -2..2, eq_hist(h.counts);
+        colormap = :hot)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/eigenvals_evolution.html b/previews/PR54/examples/datavis/eigenvals_evolution.html new file mode 100644 index 00000000..e46567e4 --- /dev/null +++ b/previews/PR54/examples/datavis/eigenvals_evolution.html @@ -0,0 +1,81 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie
+using StatsBase, LinearAlgebra
+CairoMakie.activate!(type = "png")

Let M1 and M2 be two complex valued random matrices nxn. How do eigenvalues of M1 (1-t) + M2 t move in ℂ when t ranges in [0,1]? Inspired by https://twitter.com/S_Conradi/status/1571205148914995200

julia
function xy(a,b; n = 500)
+    xs= Float64[]
+    ys = Float64[]
+    for t in range(0,1, length=n)
+        vals = eigvals(a *(1-t) .+ b*t)
+        x0 = real.(vals)
+        y0 = imag.(vals)
+        push!(xs, x0...)
+        push!(ys, y0...)
+    end
+    return (xs, ys)
+end
xy (generic function with 1 method)

Unitary matrices

julia
function m12u(n=10)
+    U = randn(n, n) .+ 2im * randn(n, n)
+    u1 = eigvecs(U .+ transpose(conj(U)))
+    U = randn(n, n) + 1im * randn(n, n)
+    u2 = eigvecs(U .+ transpose(conj(U)))
+    return u1, u2
+end
+
+n = 100
+a, b =  m12u(100)
+xs, ys = xy(a,b)
+colors = repeat(1:n,inner=500)
+
+with_theme(theme_black()) do
+    fig=Figure(size=(800,800))
+    ax = Axis(fig[1,1])
+    scatter!(Point2f.(xs,ys); color=colors, markersize = 1,
+        colormap=[:yellow, :white, :orangered]
+        )
+    limits!(ax, -0.7,0.7,-0.7,0.7)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

Complex valued random matrices

https://twitter.com/S_Conradi/status/1571205148914995200

julia
function m12(n=10)
+    a = ((2rand(n,n) .-1) .+ (2im*rand(n,n) .-1))
+    b = ((2rand(n,n) .-1) .+ (2im*rand(n,n) .-1))
+    return a, b
+end
+
+n = 100
+a, b =  m12(n)
+xs, ys = xy(a,b)
+colors = repeat(1:n,inner=500)
+
+with_theme(theme_black()) do
+    fig=Figure(size=(800,800))
+    ax = Axis(fig[1,1])
+    scatter!(Point2f.(xs,ys); color=colors, markersize = 1,
+        colormap=[:yellow, :white, :orangered]
+        )
+    limits!(ax, -8,8,-8,8)
+    hidedecorations!(ax)
+    hidespines!(ax)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/fractals.html b/previews/PR54/examples/datavis/fractals.html new file mode 100644 index 00000000..52377d8d --- /dev/null +++ b/previews/PR54/examples/datavis/fractals.html @@ -0,0 +1,138 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
julia
using CairoMakie
+using StatsBase
+using LinearAlgebra
+using Interpolations
+CairoMakie.activate!(type = "png")

We use the following function to do histogram equalization over our fractals. This helps a lot with color instensities.

julia
function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
eq_hist (generic function with 1 method)

Also, a smoothing function over the iterations is defined as

julia
function normIterations(n, zn, b)
+    return n - (log(log(abs(zn))) - log(log(b)))/log(2.0)
+end
normIterations (generic function with 1 method)

Mandelbrot definitions

julia
function mandelbrot(c, b, itmap)
+    z = c
+    for n in 1:b
+        if z.re * z.re + z.im * z.im > 4
+            return itmap(n, z, b)
+        end
+        z = z^2 + c
+    end
+    return 0.0
+end
+
+function mandelbrot_set!(img, xi, xf, yi, yf, npoints; b=1024)
+    for (i,x) in enumerate(range(xi, xf, length=npoints))
+        for (j,y) in enumerate(range(yi, yf, length=npoints))
+            color = mandelbrot(x + 1im*y, b, normIterations)
+            img[i,j] = color
+        end
+    end
+end
mandelbrot_set! (generic function with 1 method)

Mandelbrot plot

julia
npoints = 600
+img = zeros(npoints, npoints)
+mandelbrot_set!(img, -2.0,0.5,-1.25,1.25, npoints)
+
+fig = Figure(figure_padding=0,size=(600,600))
+ax = Axis(fig[1,1]; aspect = DataAspect())
+heatmap!(ax, eq_hist(img); colormap=:inferno)
+hidedecorations!(ax)
+hidespines!(ax)
+fig

A few more awesome examples can be done with the following parameters:

julia
xyrange=[
+    [ -0.74877,-0.74872,0.06505,0.06510],
+    [0.32642717997233067, 0.3265289052327473,-0.05451000956418885, -0.05443371561887635],
+    [-1.9963806954442953, -1.996380695443582,2.628704923646517e-7, 2.62871027270105e-7],
+    [0.3476108223238668926295, 0.3476108223245338122665,0.0846794087369283253550, 0.0846794087374285150830],
+    [-0.650790400000000001192,-0.648844800000000001192,0.44539837880859369792, 0.44685757880859369792],
+    [-0.9548899408372031, -0.9548896813770819,0.2525416487455764, 0.2525418433406673],
+    [0.254828857465066226270, 0.254828889245416226270,-0.000605561881950000235, -0.000605538046687500235],
+    [-0.882297664710767940063, -0.882297662380940440063,0.235365461981556923486,0.235365463728927548486],
+    [-0.6534376561891502063520, -0.6534376520406489856480,0.3635691455538367401120, 0.3635691486652126556400],
+    [0.25740289813988496306, 0.25740289814296891154,0.49283797442018109421, 0.49283797442249278541]]
+
+bs = [2500,3000,1000,10_000, 10_000,10_000, 50_000, 10_000,10_000,50_000]
+cmaps = [:plasma, :bone_1, :viridis, :CMRmap, :gist_stern,
+    :linear_bmy_10_95_c78_n256, :Hiroshige, :seaborn_icefire_gradient,
+    :sunset, :sun]
+
+fig = Figure(size=(1200,900))
+axs = [Axis(fig[i,j]; aspect = DataAspect()) for i in 1:3 for j in 1:4]
+npoints = 300
+img = zeros(npoints, npoints)
+for idx in 1:10
+    mandelbrot_set!(img,xyrange[idx]..., npoints; b=bs[idx])
+    heatmap!(axs[idx], eq_hist(img); colormap=cmaps[idx])
+end
+hidedecorations!.(axs)
+colgap!(fig.layout, 1)
+rowgap!(fig.layout,1)
+hidespines!.(axs)
+fig

Julia set definitions

julia
function juliamap(x, y, c, b, itmap)
+    z = (x + 1im*y)^2 + c
+    for k in 1:b
+        if z.re * z.re + z.im * z.im > 4
+            return itmap(k, z, b)
+        end
+        z = z^2 + c
+    end
+    return 0.0
+end
+function julia_set!(img, xi, xf, yi, yf, npoints; b=1024, c=-0.835 - 1im*0.2321)
+    for (i,x) in enumerate(range(xi, xf, length=npoints))
+        for (j,y) in enumerate(range(yi, yf, length=npoints))
+            color = juliamap(x, y, c, b, normIterations)
+            img[i,j] = color
+        end
+    end
+end
julia_set! (generic function with 1 method)

Julia set plot

julia
npoints = 600
+img = zeros(npoints, npoints)
+julia_set!(img, -1.7, 1.7, -1.7, 1.7, npoints)
+
+fig = Figure(figure_padding=0,size=(600,600))
+ax = Axis(fig[1,1]; aspect = DataAspect())
+heatmap!(ax, log10.(img); colormap=:bone_1)
+hidedecorations!(ax)
+hidespines!(ax)
+fig

Julia set examples

julia
cvalues = [0.274 - 0.008 * 1im, 0.285 + 0.01*1im,
+    -0.70176 - 0.3842*1im, -0.8 + 0.156*1im,
+    -0.7269 + 0.1889*1im, -0.1 + 0.65*1im,
+    -0.382 + 0.618*1im, -0.449 + 0.571*1im]
+
+fig = Figure(size=(1200,600))
+axs = [Axis(fig[i,j]; aspect = DataAspect()) for i in 1:2 for j in 1:4]
+npoints = 300
+img = zeros(npoints, npoints)
+for idx in 1:8
+    julia_set!(img,-1.7, 1.7, -1.7, 1.7, npoints; b=1000, c=cvalues[idx])
+    heatmap!(axs[idx], log10.(img); colormap=cmaps[idx])
+end
+hidedecorations!.(axs)
+colgap!(fig.layout, 1)
+rowgap!(fig.layout,1)
+hidespines!.(axs)
+fig

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/leos.html b/previews/PR54/examples/datavis/leos.html new file mode 100644 index 00000000..f890faf4 --- /dev/null +++ b/previews/PR54/examples/datavis/leos.html @@ -0,0 +1,121 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Leos

julia
using Downloads, GLMakie
+using Colors, Statistics
+using FileIO
+GLMakie.activate!()
+# some data
+names = ["Leonardo Dicaprio", "Gisele Bundchen", "Bar Refaeli",
+        "Blake Lively", "Erin Heatherton", "Toni Garrn", "Kelly Rohrbach",
+        "Nina Agdal", "Camila Morrone"]
+namesfiles = join.(split.(lowercase.(names)), "_")
+
+y_xticks = 1998:2022
+ys_xticks = string.(1998:2022)
+yd_xticks = ["'"*t[3:4] for t in ys_xticks]
+age_leo = 24 .+ collect(1:length(y_xticks)) .- 1
+
+age_gf = [18:23, 20:25, 23, 22, 20:21,25, 24:25, 20:25]
+years = [1998:2003, 2004:2009, 2010, 2011, 2012:2013, 2014,
+    2015:2016, 2017:2022]
+# helper functions
+# Inspired by https://github.com/tashapiro/tanya-data-viz/tree/main/dicaprio-gfs
+function getPicture(; name = "leonardo_dicaprio",
+        imgs_link = "https://raw.githubusercontent.com/tashapiro/tanya-data-viz/main/dicaprio-gfs/images/")
+    load(Downloads.download(joinpath(imgs_link, name * ".png")))
+end
+function poly3(t, p0, p1, p2, p3)
+    Point2f((1-t)^3 .* p0 .+ t*p1*(3*(1-t)^2) + p2*(3*(1-t)*t^2) .+ p3*t^3)
+end
+function BezierPath(o, f, co, cf; t = range(0,1, length=30))
+    return [poly3(t, o, co, cf, f) for t in t]
+end
+function posFig(ax, x; yoff=100, ylow = 15)
+    o = ax.scene.viewport[].origin - Point2f(0, yoff)
+    return Makie.project(ax.scene, Point2f(x, ylow)) + o
+end
+function supLine(p1, p2; x=0,y=8)
+    [p1 .+ Point2f(x,y), p1, p2, p2 .+ Point2f(x,y)]
+end
+
+pictures = [getPicture(; name = n) for n in namesfiles]
+cmap = resample_cmap(Reverse(:Hiroshige), 9)
+blue = colorant"#6EE2FFFF";
+grey = colorant"#D0DFE699";
+# αcolors = [blue, grey, (grey, 0.1), (blue,0.65)] # try this one 😄
+αcolors = [blue, blue, (grey, 0.0), (grey,0.0)]
+αcolorsLeg = [blue, (grey, 0.0), (grey,0.0), blue]
+
+legleo = MarkerElement(color =1.2cmap[2:3:end], marker = :circle, markersize = 20,
+        points = Point2f[(0, 0.5), (1, 0.5), (2, 0.5)])
+leggirl = PolyElement(color = αcolorsLeg, strokecolor = :white, strokewidth = 0.85,
+    points = Point2f[(-0.2, 0), (2.2, 0), (2.2,1), (-0.2, 1)])
+
+with_theme(theme_black()) do
+    fig = Figure(; size = (1200,800))
+    ax = Axis(fig[1,1:9], ylabel = "Age [Years]", xlabel = "")
+    lines!(ax, y_xticks, age_leo; label = "Leo's age", color = age_leo,
+        linestyle = :dot, colormap = 1.2cmap[2:end])
+    scatter!(ax, y_xticks, age_leo; label = "Leo's age", color = age_leo,
+        markersize = 10, colormap = 1.2cmap[2:end])
+    [barplot!.(years[i], age_gf[i]; color = αcolors,label = "Girlfriend's age",
+        strokewidth=0.85, strokecolor= (:white,1)) for i in eachindex(years)]
+    [scatter!(ax, [2009,2014, 2016, 2022], fill(25 +1,4);
+        color = (blue, 0.1), markersize = 50-3i) for i in 1:10]
+    lines!(ax,supLine(Point2f(2009,29), Point2f(2022,29); x=0,y=-3); color=blue)
+    lines!(ax,supLine(Point2f(2014,29), Point2f(2016,29); x=0,y=-3); color=blue)
+    text!(ax, "Threshold", position = (2014,30))
+    [text!(string.(age_gf[i]), position = Point2f.(years[i], age_gf[i] .+0.5),
+        align = (:center, :bottom), fontsize = 16) for i in eachindex(age_gf)]
+    text!(string.(age_leo), position = Point2f.(y_xticks, age_leo .+0.5),
+        align = (:center, :bottom), fontsize = 16)
+    ax.xticks = (y_xticks, yd_xticks)
+    ax.yticks = 0:5:55
+    ylims!(ax,15,52)
+    xlims!(ax,1997,2023)
+    hidespines!.(ax)
+    # pictures
+    aximgs = [Axis(fig[2,i], aspect = 1, xlabel = join(split(names[i]), "\n"),
+        xlabelcolor = blue) for i in 1:9]
+    [image!(aximgs[i], rotr90(pictures[i])) for i in eachindex(pictures)]
+    hidedecorations!.(aximgs; label =false)
+    hidespines!.(aximgs)
+    aximgs[1].xlabelcolor = "#F79D1EFF"
+    limits!.(aximgs,1,78,1,78)
+    # connecting lines in fig space!
+    ops = [posFig(ax, mean(years[i]); yoff=250, ylow = 15) for i in 1:8]
+    fps = [posFig(aximgs[i], 39; yoff=120, ylow = 78) for i in 2:9]
+    supls = [supLine(posFig(ax, years[i][begin]; yoff=250, ylow = 15),
+        posFig(ax, years[i][end], yoff=250, ylow = 15)) for i in 1:8]
+    [lines!(fig.scene, supls[k], color = 1.2cmap[k+1]) for k in 1:8]
+    [lines!(fig.scene, BezierPath(ops[k], fps[k], [ops[k][1],ops[k][2]-30],
+        [fps[k][1],fps[k][2]+30]); color = 1.2cmap[k+1]) for k in 1:8]
+    rowsize!(fig.layout,2,Auto(0.2))
+    rowgap!(fig.layout, 60)
+    Legend(fig[1,1], [legleo, leggirl], ["      Leo's age", "      Girlfriend's age"],
+        halign = :left, valign = :top,tellheight=false,tellwidth=false,
+        margin = (30, 10, 10, 10), framecolor = (:white,0.2))
+    Label(fig[0,:], "Leo's Syndrome", color = "#F79D1EFF", fontsize = 32)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/multipleTitles.html b/previews/PR54/examples/datavis/multipleTitles.html new file mode 100644 index 00000000..6235e0cc --- /dev/null +++ b/previews/PR54/examples/datavis/multipleTitles.html @@ -0,0 +1,74 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Multiple Titles

julia
using CairoMakie
+using Random

from this post

julia
Random.seed!(1234)
+
+x = range(2007, 2035, length = 1000)
+
+function randdata(n)
+    data = cumsum(randn(1000))
+    data .-= range(first(data), last(data), length = 1000)
+    data .* 0.1
+end
+euro = randdata(1000)
+japan = randdata(1000) .+ 1
+uk = randdata(1000) .- 2
+emerging = randdata(1000) .- 6
+
+with_theme(theme_dark(), size = (650, 450)) do
+    fig = Figure()
+    ax = Axis(fig[1, 1], xgridvisible = false, ygridvisible = false, xticksvisible = false, alignmode = Outside(), xticks = 2007:4:2031, ytrimspine = true,
+        palette = (; color = [:deepskyblue, :firebrick3, :dodgerblue4, :goldenrod1]))
+
+    hidespines!(ax, :b, :t, :r)
+    hlines!(ax, 0, color = :grey90, linewidth = 1)
+
+    for (label, data) in ["Euro" => euro, "Japan" => japan, "UK" => uk, "Emerging markets" => emerging]
+        lines!(ax, x, data; label, linewidth = 2)
+    end
+
+    titlelayout = GridLayout(fig[0, 1], halign = :left, tellwidth = false)
+    Label(titlelayout[1, 1], "Interest rate differentials", halign = :left, fontsize = 30, font="TeX Gyre Heros Bold Makie")
+    Label(titlelayout[2, 1], "Differences in monetary policy are a key driver of the strong dollar.", halign = :left, fontsize = 20)
+    Label(titlelayout[3, 1], "(versus US interest rate, percent)", halign = :left)
+    rowgap!(titlelayout, 0)
+
+    for (label, (year, y)) in ["Global\nfinancial\ncrisis" => (2008, 8), "Taper\ntantrum" => (2013, 8), "China\n2015\ncrisis" => (2015.4, 6), "Russia invasion\nof Ukraine" => (2022.1, 8)]
+        lines!(ax, [year, year], [-10, y], color = :grey90, linestyle = :dash)
+        text!(ax, year, y, text = label, align = (:left, :top), offset = (10, 0), fontsize = 14)
+    end
+
+    ylims!(ax, -11, 11)
+    xlims!(ax, 2007, 2035)
+
+    axislegend(position = (0.5, 1.05), orientation = :horizontal,
+        framevisible = false)
+
+    Label(fig[2, 1], """
+    Sources: Bloomberg Finance L.P.; Haver Analytics; and IMF staff calculations.
+    Notes: Differential is calculated as US overnight bank funding rate minus foreign
+    inter-bank rate. The dots depict the forward paths for nominal interest rates.
+    """, tellwidth = false, halign = :left, justification = :left)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/datavis/strange_attractors.html b/previews/PR54/examples/datavis/strange_attractors.html new file mode 100644 index 00000000..891a7b72 --- /dev/null +++ b/previews/PR54/examples/datavis/strange_attractors.html @@ -0,0 +1,78 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Here, we reproduce the outputs from this link: https://examples.pyviz.org/attractors/attractors.html

Strange attractors

An attractor is a set of values to which a numerical system tends to evolve. An attractor is called a strange attractor if the resulting pattern has a fractal structure.

In order to achieve the desire output we just need the following functions.

julia
using GLMakie, StatsBase, OnlineStats
+using LinearAlgebra, Interpolations
+GLMakie.activate!()

Trajectory

julia
function trajectory(fn, x0, y0, kargs; n = 1000) #  kargs = a, b, c, d
+    x, y = zeros(n+1), zeros(n+1)
+    x[1], y[1] = x0, y0
+    for i = 1:n
+        x[i+1], y[i+1] = fn(x[i], y[i], kargs...)
+    end
+    x, y
+end
trajectory (generic function with 1 method)

Aggregation

julia
function aggHist(x, y; nbinsx = 400, nbinsy = 400)
+    xedges = range(extrema(x)..., length = nbinsx)
+    yedges = range(extrema(y)..., length = nbinsy)
+    o = fit!(HeatMap(xedges, yedges), zip(x, y))
+    return o
+end
aggHist (generic function with 1 method)

Equalization

julia
function eq_hist(matrix; nbins = 256 * 256)
+    h_eq = fit(Histogram, vec(matrix), nbins = nbins)
+    h_eq = normalize(h_eq, mode = :density)
+    cdf = cumsum(h_eq.weights)
+    cdf = cdf / cdf[end]
+    edg = h_eq.edges[1]
+    interp_linear = LinearInterpolation(edg, [cdf..., cdf[end]])
+    out = reshape(interp_linear(vec(matrix)), size(matrix))
+    return out
+end
eq_hist (generic function with 1 method)

Clifford

julia
function Clifford(x, y, a, b, c, d)
+    sin(a * y) + c * cos(a * x), sin(b * x) + d * cos(b * y)
+end
Clifford (generic function with 1 method)

Some interesting values

julia
cargs = [[0, 0, -1.3, -1.3, -1.8, -1.9],
+    [0, 0, -1.4, 1.6, 1.0, 0.7],
+    [0, 0, 1.7, 1.7, 0.6, 1.2],
+    [0, 0, 1.7, 0.7, 1.4, 2.0],
+    [0, 0, -1.7, 1.8, -1.9, -0.4],
+    [0, 0, 1.1, -1.32, -1.03, 1.54],
+    [0, 0, 0.77, 1.99, -1.31, -1.45],
+    [0, 0, -1.9, -1.9, -1.9, -1.0],
+    [0, 0, 0.75, 1.34, -1.93, 1.0],
+    [0, 0, -1.32, -1.65, 0.74, 1.81],
+    [0, 0, -1.6, 1.6, 0.7, -1.0],
+    [0, 0, -1.7, 1.5, -0.5, 0.7]
+]
+
+with_theme(theme_black()) do
+    fig = Figure(size = (1200,900))
+    axs = [Axis(fig[i,j], aspect=1) for i in 1:3 for j in 1:4]
+    for i in 1:12
+        x, y = trajectory(Clifford, cargs[i][1:2]..., cargs[i][3:end]; n = 300_000)
+        o = aggHist(x, y; nbinsx = 300, nbinsy = 300)
+        m = eq_hist(o.counts)
+        heatmap!(axs[i], o.xedges, o.yedges, m; colormap = :inferno)
+        axs[i].title = join(string.(cargs[1]), ", ")
+    end
+    hidedecorations!.(axs)
+    hidespines!.(axs)
+    rowgap!(fig.layout,5)
+    colgap!(fig.layout,1)
+    fig
+end

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/blue_marble.html b/previews/PR54/examples/geo/blue_marble.html new file mode 100644 index 00000000..b72836ab --- /dev/null +++ b/previews/PR54/examples/geo/blue_marble.html @@ -0,0 +1,44 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Blue marble

julia
using GLMakie, FileIO
+using Downloads: download
+GLMakie.activate!()
+
+earth_img = load(download("https://upload.wikimedia.org/wikipedia/commons/5/56/Blue_Marble_Next_Generation_%2B_topography_%2B_bathymetry.jpg"))
+n = 1024 ÷ 4 # 2048
+θ = LinRange(0, π, n)
+φ = LinRange(0, , 2 * n)
+x = [cos(φ) * sin(θ) for θ in θ, φ in φ]
+y = [sin(φ) * sin(θ) for θ in θ, φ in φ]
+z = [cos(θ) for θ in θ, φ in φ]
+
+fig = Figure(size = (800, 600), backgroundcolor = :grey80)
+ax = LScene(fig[1, 1], show_axis = false)
+surface!(ax, x, y, z;
+    color = earth_img,
+    shading = NoShading,
+    backlight = 1.5f0
+    )
+zoom!(ax.scene, cameracontrols(ax.scene), 0.65)
+GLMakie.rotate!(ax.scene, Vec3f(0, 0, 1), 3.0)
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/coastlines.html b/previews/PR54/examples/geo/coastlines.html new file mode 100644 index 00000000..2f2117f3 --- /dev/null +++ b/previews/PR54/examples/geo/coastlines.html @@ -0,0 +1,30 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Coastlines

This should create a GeoAxis, then on top we plot the coastlines from from Natural Earth.

julia
using GLMakie, GeoMakie
+GLMakie.activate!()
+
+fig = Figure(; size=(600, 400))
+ax = GeoAxis(fig[1, 1]; title="coastlines")
+lines!(ax, GeoMakie.coastlines())
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/donut_earth_sun.html b/previews/PR54/examples/geo/donut_earth_sun.html new file mode 100644 index 00000000..72431c85 --- /dev/null +++ b/previews/PR54/examples/geo/donut_earth_sun.html @@ -0,0 +1,62 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Torus surfacec with sun and moon textures

julia
using GLMakie,  FileIO
+using Downloads: download
+GLMakie.activate!()
+
+nasa = "https://eoimages.gsfc.nasa.gov/images/imagerecords/"
+earth_link = nasa * "73000/73963/gebco_08_rev_bath_3600x1800_color.jpg"
+earth = load(download(earth_link))
+sun_link = "https://www.solarsystemscope.com/textures/download/2k_sun.jpg"
+sun = load(download(sun_link))
+n = 1024 ÷ 4 # 2048
+U = LinRange(-pi, pi, 2n)
+V = LinRange(-pi, pi, n)
+x1 = [cos(u) + .5 * cos(u) * cos(v)      for u in U, v in V]
+y1 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+z1 = [.5 * sin(v)                        for u in U, v in V]
+x2 = [1 + cos(u) + .5 * cos(u) * cos(v)  for u in U, v in V]
+y2 = [.5 * sin(v)                        for u in U, v in V]
+z2 = [sin(u) + .5 * sin(u) * cos(v)      for u in U, v in V]
+
+with_theme(theme_dark()) do
+    fig, ax, = surface(x1, y1, z1;
+        color = earth'[:,end:-1:1],
+        shading = FastShading,
+        backlight = 1.5f0,
+        axis=(;
+            type=Axis3,
+            aspect = :data,
+            perspectiveness = 0.5,
+            azimuth = -1.56,
+            elevation = 0.58),
+        figure = (;
+        size = (1200,800)))
+    surface!(ax, x2, y2, z2;
+        color = sun'[:,end:-1:1],
+        shading = FastShading,
+        backlight = 1.5f0)
+    hidedecorations!(ax; grid=false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/moon.html b/previews/PR54/examples/geo/moon.html new file mode 100644 index 00000000..67928f36 --- /dev/null +++ b/previews/PR54/examples/geo/moon.html @@ -0,0 +1,47 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Moon texture onto a sphere

julia
using GLMakie, FileIO
+using Downloads: download
+GLMakie.activate!()
+
+moon = load(download("https://svs.gsfc.nasa.gov/vis/a000000/a004600/a004675/phases.0001_print.jpg"))
+n = 1024 # 2048
+θ = LinRange(0, pi, n)
+φ = LinRange(0, 2 * pi, 2 * n)
+x = [cos(φ) * sin(θ) for θ in θ, φ in φ]
+y = [sin(φ) * sin(θ) for θ in θ, φ in φ]
+z = [cos(θ) for θ in θ, φ in φ]
+
+fig = Figure(size=(900, 900), backgroundcolor="#748AA6")
+ax = Axis3(fig, aspect=:data, viewmode=:fitzoom, #perspectiveness = 0.5,
+    azimuth=0.01π, elevation=0.85π,)
+surface!(ax, x, y, z;
+    color=moon,
+    shading = FastShading,
+    backlight=1.5f0
+    )
+hidedecorations!(ax)
+hidespines!(ax)
+fig[1, 1] = ax
+fig
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/projections.html b/previews/PR54/examples/geo/projections.html new file mode 100644 index 00000000..16e2fcc8 --- /dev/null +++ b/previews/PR54/examples/geo/projections.html @@ -0,0 +1,73 @@ + + + + + + More projections | Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Geo Projections

julia
using GLMakie, GeoMakie
+GLMakie.activate!()
+
+sproj = ["+proj=weren", "+proj=crast",
+    "+proj=wink1", "+proj=wink2", "+proj=wintri", "+proj=poly",
+    "+proj=putp1", "+proj=putp2", "+proj=putp3", "+proj=putp3p", "+proj=putp4p", "+proj=putp5",
+    "+proj=putp5p", "+proj=putp6", "+proj=putp6p", "+proj=qua_aut", "+proj=robin", "+proj=rouss",
+    "+proj=rpoly", "+proj=sinu"]
+
+# let's plot just a few
+function plotproj()
+    fig = Figure(size=(1600, 900))
+    k = 1
+    for i in 1:2, j in 1:2
+        ga = GeoAxis(fig[i, j]; dest=sproj[k], title=sproj[k])
+        # hidedecorations!(ga)
+        lines!(ga, GeoMakie.coastlines()) # plot coastlines from Natural Earth.
+        k += 1
+    end
+    fig
+end
+
+fig = plotproj()

More projections

julia
projections = ["+proj=adams_hemi", "+proj=adams_ws1", "+proj=adams_ws2",
+    "+proj=aea +lat_1=29.5 +lat_2=42.5", "+proj=aeqd", "+proj=airy", "+proj=aitoff",
+    "+proj=apian", "+proj=august", "+proj=bacon", "+proj=bertin1953", "+proj=bipc +ns",
+    "+proj=boggs", "+proj=bonne +lat_1=10", "+proj=cass", "+proj=cea",
+    "+proj=chamb +lat_1=10 +lon_1=30 +lon_2=40", "+proj=collg", "+proj=comill",
+    "+proj=crast", "+proj=denoy", "+proj=eck1", "+proj=eck2", "+proj=eck3",
+    "+proj=eck4", "+proj=eck5", "+proj=eck6", "+proj=eqc", "+proj=eqdc +lat_1=55 +lat_2=60",
+    "+proj=eqearth", "+proj=euler +lat_1=67 +lat_2=75", "+proj=fahey", "+proj=fouc", "+proj=fouc_s",
+    "+proj=gall", "+proj=geos +h=35785831.0 +lon_0=-60 +sweep=y", "+proj=gins8", "+proj=gn_sinu +m=2 +n=3",
+    "+proj=goode", "+proj=guyou", "+proj=hammer", "+proj=hatano",
+    "+proj=igh", "+proj=igh_o +lon_0=-160", "+proj=imw_p +lat_1=30 +lat_2=-40", "+proj=isea",
+    "+proj=kav5", "+proj=kav7", "+proj=laea", "+proj=lagrng", "+proj=larr", "+proj=lask",
+    "+proj=lcca +lat_0=35", "+proj=leac", "+proj=loxim",
+    "+proj=lsat +ellps=GRS80 +lat_1=-60 +lat_2=60 +lsat=2 +path=2", "+proj=mbt_s", "+proj=mbt_fps",
+    "+proj=mbtfpp", "+proj=mbtfpq", "+proj=mbtfps", "+proj=merc", "+proj=mill", "+proj=misrsom +path=1",
+    "+proj=moll", "+proj=murd1 +lat_1=30 +lat_2=50",
+    "+proj=murd3 +lat_1=30 +lat_2=50", "+proj=natearth", "+proj=natearth2",
+    "+proj=nell", "+proj=nell_h", "+proj=nicol",
+    "+proj=ob_tran +o_proj=mill +o_lon_p=40 +o_lat_p=50 +lon_0=60", "+proj=ocea", "+proj=oea +m=1 +n=2",
+    "+proj=omerc +lat_1=45 +lat_2=55", "+proj=ortel", "+proj=ortho", "+proj=patterson", "+proj=poly",
+    "+proj=putp1", "+proj=putp2", "+proj=putp3", "+proj=putp3p", "+proj=putp4p", "+proj=putp5",
+    "+proj=putp5p", "+proj=putp6", "+proj=putp6p", "+proj=qua_aut", "+proj=robin", "+proj=rouss",
+    "+proj=rpoly", "+proj=sinu", "+proj=times", "+proj=tissot +lat_1=60 +lat_2=65", "+proj=tmerc",
+    "+proj=tobmerc", "+proj=tpeqd +lat_1=60 +lat_2=65", "+proj=urm5 +n=0.9 +alpha=2 +q=4",
+    "+proj=urmfps +n=0.5", "+proj=vandg", "+proj=vandg2", "+proj=vandg3", "+proj=vandg4",
+    "+proj=vitk1 +lat_1=45 +lat_2=55", "+proj=wag1", "+proj=wag2", "+proj=wag3", "+proj=wag4",
+    "+proj=wag5", "+proj=wag6", "+proj=wag7", "+proj=webmerc +datum=WGS84", "+proj=weren",
+    "+proj=wink1", "+proj=wink2", "+proj=wintri"];
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/geo/vertical_feature_mask.html b/previews/PR54/examples/geo/vertical_feature_mask.html new file mode 100644 index 00000000..3ac57bc6 --- /dev/null +++ b/previews/PR54/examples/geo/vertical_feature_mask.html @@ -0,0 +1,65 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

vertical 3d band over map

julia
using GLMakie, GeoMakie
+using Downloads: download
+using FileIO
+GLMakie.activate!()
+
+earth_img = load(download("https://upload.wikimedia.org/wikipedia/commons/5/56/Blue_Marble_Next_Generation_%2B_topography_%2B_bathymetry.jpg"))
+
+fig = Figure(; size=(800, 400), fontsize=22)
+ax = LScene(fig[1,1])
+lines!(ax, GeoMakie.coastlines(), transparency=true)
+lines!(ax, GeoMakie.coastlines()[95], color=:red, linewidth=5, transparency=true)
+image!(ax, -180..180, -90..90, earth_img'[:,end:-1:1])
+fig
+
+idx_l = findmax(length.(GeoMakie.coastlines()))
+longpath = GeoMakie.coastlines()[idx_l[2]]
+@show idx_l
+
+
+linepath = Point3f[]
+for p in longpath
+    push!(linepath, Point3f(p[1]..., 0))
+    push!(linepath, Point3f(p[1]..., 0))
+end
+
+linepathh = Point3f[]
+for p in longpath
+    push!(linepathh, Point3f(p[1]..., 20))
+    push!(linepathh, Point3f(p[1]..., 20))
+end
+
+fig = Figure(size=(800, 400), fontsize=22)
+ax = LScene(fig[1,1]; show_axis=false)
+lines!(ax, GeoMakie.coastlines(), transparency=true, color=:white)
+lines!(ax, linepath, color = :orangered, linewidth=2.5, transparency=true)
+lines!(ax, linepathh, color = :white, linewidth=2.5, transparency=true)
+band!(ax, linepath, linepathh, color = repeat(1:1384,outer=2), transparency=true)
+image!(ax, -180..180, -90..90, earth_img'[:,end:-1:1])
+rotate!(ax.scene, 2*pi/2.6)
+fig
+zoom!(ax.scene, cameracontrols(ax.scene), 30)
+# center!(ax.scene)
idx_l = (692, 95)
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/rpr/sphere_plane.html b/previews/PR54/examples/rpr/sphere_plane.html new file mode 100644 index 00000000..eaedccf5 --- /dev/null +++ b/previews/PR54/examples/rpr/sphere_plane.html @@ -0,0 +1,24 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Info

Transfering examples from here https://github.com/lazarusA/RPRMakieNotes

using GLMakie, GeometryBasics using RPRMakie, RadeonProRender using LinearAlgebra, Colors, FileIO

background/sky color

img = [colorant"grey90" for i in 1:1, j in 1:1]

color as an array/image, hence a normal image also works

lights = [EnvironmentLight(1.0, img'), PointLight(Vec3f(2,0,2.0), RGBf(8.0, 6.0, 5.0))]

custom Tesselation over an Sphere

function SphereTess(; o=Point3f(0), r=1, tess=64) return uv_normal_mesh(Tesselation(Sphere(o, r), tess)) end plane = Rect3f(Vec3f(-5,-2,-1.05), Vec3f(10,4,0.05))

the actual figure

fig=Figure(; size=(900, 900)) ax=LScene(fig[1, 1]; show_axis=false, scenekw=(;lights=lights)) screen=RPRMakie.RPRScreen(size(ax.scene); plugin=RPR.Northstar, iterations=250) matsys=screen.matsys mesh!(ax, SphereTess(); color=RGB(0.082, 0.643, 0.918), material=RPR.DiffuseMaterial(matsys)) mesh!(ax, plane; color=:gainsboro, material=RPR.DiffuseMaterial(matsys))

GLMakie.activate!() zoom!(ax.scene, cameracontrols(ax.scene), 0.22) display(fig) context, task = RPRMakie.replace_scene_rpr!(ax.scene, screen) nothing # avoid printing stuff into the repl imageOut = colorbuffer(screen)

save("SpherePlaneSky.png", imageOut) # save just screen scene.

Warning

This only works under windows and linux.

+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/themes/black_epicycloid.html b/previews/PR54/examples/themes/black_epicycloid.html new file mode 100644 index 00000000..970cac1e --- /dev/null +++ b/previews/PR54/examples/themes/black_epicycloid.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Black theme

julia
using CairoMakie
+
+function EpicycloidLines()
+    ecycl_x(r, k, θ) = r * (k .+ 1) .* cos.(θ) .- r * cos.((k .+ 1) .* θ)
+    ecycl_y(r, k, θ) = r * (k .+ 1) .* sin.(θ) .- r * sin.((k .+ 1) .* θ)
+    θ = LinRange(0, 6.2π, 1000)
+    tronLegacy = ["#FF410DFF", "#6EE2FFFF", "#F7C530FF", "#95CC5EFF",
+        "#D0DFE6FF", "#F79D1EFF", "#748AA6FF"]
+
+    fig = Figure(size = (600, 400), fonts = (; regular="sans"))
+    ax = Axis(fig[1, 1], aspect = 1, title = "Epicycloid",
+        xlabel = "x(θ) = r(k+1)cos(θ) -rcos((k+1)θ)",
+        ylabel = "y(θ) = r(k+1)cos(θ) -rcos((k+1)θ)")
+    [lines!(ecycl_x(2k, k, θ), ecycl_y(2k, k, θ), linewidth = 1.5, label = "$(k)",
+        color = tronLegacy[indx]) for (indx, k) in enumerate(2:0.5:5)]
+    Legend(fig[1, 2], ax, "k , r = 2k")
+    colsize!(fig.layout, 1, Aspect(1, 1.0))
+    fig
+end
+fig = with_theme(EpicycloidLines, theme_black())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/themes/dark_surface_contour3d_streamplot.html b/previews/PR54/examples/themes/dark_surface_contour3d_streamplot.html new file mode 100644 index 00000000..2770f880 --- /dev/null +++ b/previews/PR54/examples/themes/dark_surface_contour3d_streamplot.html @@ -0,0 +1,55 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Dark theme

julia
# example modified from  mthelm85
+using GLMakie, ForwardDiff
+GLMakie.activate!()
+f(x, y) = -5 * x * y * exp(-x^2 - y^2)
+x = y = -1:0.05:1.0
+z = [f(i, j) for i in x, j in y];
+# This is the same function as above, just modified so that it will
+# work with ForwardDiff
+g(x, y) = [-5 * x * y * exp(-x^2 - y^2)]
+J(xx, yy) = ForwardDiff.jacobian(x -> g(x[1], x[2]), [xx, yy])
+field(i, j) = Point2f(J(i, j)[1], J(i, j)[2])
+
+zmin, zmax = minimum(z), maximum(z)
+cmap = :viridis
+function plot()
+    fig = Figure(size = (1200, 800))
+    ax1 = Axis3(fig[1, 1], aspect = (1, 1, 1), perspectiveness = 0.5,
+        elevation = π / 3.5, azimuth = 0.1π,)
+    ax2 = Axis(fig[1, 2], aspect = DataAspect(), xlabel = "x", ylabel = "y")
+    surface!(ax1, x, y, z; colormap = cmap, colorrange = (zmin, zmax),
+        transparency = true)
+    contour3d!(ax1, x, y, z .+ 0.005; levels = 15, linewidth = 2, color = :white,
+        transparency = true)
+    wireframe!(ax1, x, y, z; color = (:black, 0.1),
+        transparency = true)
+    streamplot!(ax1, field, -1 .. 1, -1 .. 1; colormap = cmap, gridsize = (40, 40),
+        arrow_size = 15, linewidth = 1, transformation = (:xy, -zmax))
+    streamplot!(ax2, field, -1 .. 1, -1 .. 1; colormap = cmap, gridsize = (40, 40),
+        arrow_size = 15, linewidth = 1)
+    fig
+end
+fig = with_theme(plot, theme_dark())
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/themes/ggplot2_stem.html b/previews/PR54/examples/themes/ggplot2_stem.html new file mode 100644 index 00000000..b61c84a9 --- /dev/null +++ b/previews/PR54/examples/themes/ggplot2_stem.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

ggplot2 theme

julia
using CairoMakie, Random
+Random.seed!(2)
+t = 0.3:0.3:
+my_markers = [:circle, :rect, :utriangle, :dtriangle, :diamond, :pentagon,
+    :cross, :xcross]
+with_theme(theme_ggplot2()) do
+    fig, ax, = stem(t, 1.5exp.(-t/5).*cos.(t); color = 1:length(t),
+        colormap = :linear_wyor_100_45_c55_n256, stemcolor = 1:length(t),
+        stemcolormap = :linear_wcmr_100_45_c42_n256,
+        figure = (; size = (600,400)))
+    stem!(t .+ 0.15, -cos.(t) ./ t .+ 0.25; color = :transparent,
+        stemwidth = 0.5, marker = :rect, markersize = 10, strokewidth = 1,
+        strokecolor = :black)
+    stem!(1:8, 1.5randn(8); marker = my_markers,
+        color = tuple.(resample_cmap(:mk_12, 8), 0.65), stemlinestyle = :dash,
+        stemcolor = resample_cmap(:mk_12, 8), markersize = 15*rand(8) .+ 10,
+        strokewidth = 1.5, strokecolor = resample_cmap(:mk_12, 8))
+    hidedecorations!(ax; grid = false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/themes/light_ngon.html b/previews/PR54/examples/themes/light_ngon.html new file mode 100644 index 00000000..371effd1 --- /dev/null +++ b/previews/PR54/examples/themes/light_ngon.html @@ -0,0 +1,42 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

light theme

julia
using CairoMakie, GeometryBasics
+
+n = 20
+function ngonShape(h, k, r, n)
+    Polygon([Point2f(h .+ r * sin.(m * / n), k .+ r * cos.(m * / n)) for m in 1:n])
+end
+polysCentric = [ngonShape(0, 0, 3 / i^1.5, i) for i in 3:n]
+polysCircular = [ngonShape(2 / 2 * sin(θ), 2 / 2 * cos(θ), 0.15 /idx, idx + 2)
+                    for (idx, θ) in enumerate(LinRange(0,  * (1 - 1 / (n - 2)), n - 2))]
+cmap = cgrad(:Homer1, n)
+
+with_theme(theme_light()) do
+    fig, ax, = poly(polysCentric; color = 1:n-2, colormap = cmap,
+        axis = (; aspect = DataAspect()), figure = (; size = (600, 400)))
+    poly!(polysCircular; color = 1:n-2, colormap = cmap)
+    hidedecorations!(ax; grid = false)
+    hidespines!(ax)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/examples/themes/minimal_series.html b/previews/PR54/examples/themes/minimal_series.html new file mode 100644 index 00000000..53ee61a4 --- /dev/null +++ b/previews/PR54/examples/themes/minimal_series.html @@ -0,0 +1,43 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

minimal theme

julia
using CairoMakie, Random, LaTeXStrings
+
+Random.seed!(123)
+m = 200
+function spiral(; a = 1, n = 100, h = 0, k = 0)
+    φ = LinRange(rand() + 1, , n)
+    h .+ rand(-1:2:1) * a * cos.(φ) ./ φ, k .+ rand(-1:2:1) * a * sin.(φ) ./ φ
+end
+x = raw"x=a\,\cos(\varphi)/\varphi,\quad "
+y = raw"y=a\,\sin(\varphi)/\varphi,\quad "
+curves = [spiral(; a = rand(), h = rand(-1:1)) for i in 1:m]
+
+with_theme(theme_minimal()) do
+    fig = Figure(size = (600, 400))
+    ax = Axis(fig[1, 1])
+    series!(curves; color = categorical_colors(:inferno, m), linewidth = 1.5)
+    text!(latexstring(x * y * "\\varphi>0"), position = (-1, -1))
+    hidedecorations!(ax; grid = false)
+    fig
+end
+ + + + \ No newline at end of file diff --git a/previews/PR54/extinction_event.png b/previews/PR54/extinction_event.png new file mode 100644 index 00000000..88c28844 Binary files /dev/null and b/previews/PR54/extinction_event.png differ diff --git a/previews/PR54/hashmap.json b/previews/PR54/hashmap.json new file mode 100644 index 00000000..bb3d68fb --- /dev/null +++ b/previews/PR54/hashmap.json @@ -0,0 +1 @@ +{"examples_2d_arrows_arrows.md":"CIbjkpVw","examples_2d_band_band.md":"BLKYUh4k","examples_2d_band_band_confidence_error.md":"DqpQ2ZCX","examples_2d_band_band_ribbon.md":"BVw99554","examples_2d_band_filled_under.md":"C6oglETs","examples_2d_band_filled_under_bell.md":"BjlS1Csc","examples_2d_bars_barplot_cmap_y_error.md":"CHnktPP2","examples_2d_bars_barplot_y_error.md":"C8-mYIma","examples_2d_bars_stripped_bars.md":"Cj3rSUy4","examples_2d_bars_x_barplot_error_y_error.md":"CFPN6LSd","examples_2d_boxplots_airquality.md":"CJoN9iik","examples_2d_boxplots_boxplots_collection.md":"CZvJjt3h","examples_2d_boxplots_vertical_horizontal.md":"BA-Sp9NA","examples_2d_contour_complex_function.md":"tRD7nEPm","examples_2d_contour_contour_over_heatmap.md":"CEQJ4I5T","examples_2d_contour_egg_shape.md":"BFjUX5W_","examples_2d_contour_overlayed_functions.md":"DJe553t1","examples_2d_contour_qubit.md":"BHSxXKfy","examples_2d_density_density.md":"BCM05v3Q","examples_2d_density_mtcars_density.md":"BKppsPLG","examples_2d_errorbars_errorbars.md":"D_DDeRbo","examples_2d_errorbars_simple_x_y.md":"BMK6Tzct","examples_2d_errorbars_y_colormap.md":"4-tpCPKF","examples_2d_heatmaps_heatmap.md":"Cg1kJyqT","examples_2d_heatmaps_heatmap1sharedcbar.md":"BnznKOoE","examples_2d_heatmaps_heatmap2sharedcbars.md":"B314zEBU","examples_2d_heatmaps_heatmapcbarbottom.md":"uqbEi1sC","examples_2d_heatmaps_heatmapcbarleft.md":"BVT0SvbT","examples_2d_heatmaps_heatmapcbartop.md":"nrlfqSLQ","examples_2d_heatmaps_heatmapgrid.md":"Cdlbm4FJ","examples_2d_heatmaps_heatmapirregular.md":"C92i0hY-","examples_2d_heatmaps_heatmapirregularcategories.md":"CRFpnb_f","examples_2d_heatmaps_heatmaplogirregular.md":"ADoGDHvx","examples_2d_heatmaps_heatmapscaleadd.md":"DypX8-kX","examples_2d_heatmaps_heatmapscalecrosshair.md":"DthI8kX0","examples_2d_heatmaps_heatmapscaledetail.md":"DDnp7_p7","examples_2d_heatmaps_heatmapscalesections.md":"YQDH029l","examples_2d_heatmaps_heatmapxyz.md":"xoRRG6Nd","examples_2d_heatmaps_text_heatmap.md":"B8r3dWkG","examples_2d_histogram_bins_counts.md":"Dwkv4H3-","examples_2d_histogram_hist.md":"BQsxZtVB","examples_2d_histogram_hist_alpha.md":"C6P5yhme","examples_2d_histogram_hist_pdf.md":"CfhVM169","examples_2d_histogram_hists_on_the_sides.md":"BwDpC4U1","examples_2d_histogram_normalizations.md":"CL4DidGM","examples_2d_histogram_parallel_image_hist.md":"CDOiotGk","examples_2d_lines_line_cmap.md":"-j1KaVNg","examples_2d_lines_line_cmaps.md":"Bn_zg9uU","examples_2d_lines_line_cmaps_a.md":"BjsnXVqH","examples_2d_lines_line_colored.md":"CzECVZP8","examples_2d_lines_line_colored_cbar.md":"D0xLVnf7","examples_2d_lines_line_inset.md":"BryVgftL","examples_2d_lines_line_inset_h.md":"CGOQhoge","examples_2d_lines_line_latex.md":"Cy-pwkWL","examples_2d_lines_line_latex_bessel.md":"CP9azSjX","examples_2d_lines_line_latex_bessels.md":"CvN_j1x5","examples_2d_lines_line_single.md":"B4NzGZ5c","examples_2d_lines_line_time.md":"T_kqjYie","examples_2d_lines_line_twin_axis.md":"agQB4w0o","examples_2d_lines_line_two.md":"DU73hW04","examples_2d_lines_line_xlog.md":"TSyDTIUB","examples_2d_lines_line_xylog.md":"RD7pJCKc","examples_2d_lines_line_ylog.md":"CPaoqO1n","examples_2d_linesegments_linesegments.md":"C0l_9yWZ","examples_2d_linesegments_rrgraph.md":"DC3Ik15w","examples_2d_poly_poly_ngon.md":"C1P-mCcs","examples_2d_poly_poly_strokes.md":"CqGYITjT","examples_2d_scatterlines_markers.md":"CsHdQPIh","examples_2d_scatterlines_scatters_line.md":"CDHn9Bw-","examples_2d_scatterlines_scatters_line_leg_out.md":"DmMIKM58","examples_2d_scatterlines_simple.md":"lS80BQiL","examples_2d_scatterlines_spirals.md":"B4ptSVAi","examples_2d_scatters_bubble_plot.md":"BP7nO_aC","examples_2d_scatters_bubble_plot_logxy.md":"CHlXU0Sc","examples_2d_scatters_iris_dataset.md":"Dg2Cv-Ym","examples_2d_scatters_makie_contributors.md":"DNyY6uBB","examples_2d_scatters_scatter.md":"zpe1uA74","examples_2d_scatters_scatters_colormap.md":"B_cGhug2","examples_2d_scatters_scatters_legend.md":"8schuQYL","examples_2d_series_series.md":"CHFXDNP8","examples_2d_stairs_stairs.md":"CzCqlo1d","examples_2d_stem_stem.md":"CtI1UuaV","examples_2d_streamplot_complex_polya_field.md":"DFSVan5e","examples_2d_streamplot_field_heatmap.md":"CBqALkfW","examples_2d_streamplot_ode_solution.md":"DV8Jque9","examples_2d_streamplot_poincare_vander.md":"Dc3-O8im","examples_2d_streamplot_streamplot.md":"Tmb4Rpvh","examples_2d_text_your_name.md":"DPJGT4hc","examples_2d_violins_airquality.md":"DKQc4rjP","examples_2d_violins_collection_violins.md":"C10RTrqP","examples_2d_violins_single.md":"CtDW_ULK","examples_3d_contour3d_contour_v.md":"8oLtoGAU","examples_3d_contour3d_contourf_contour3d.md":"BMI3Jk1x","examples_3d_lines3d_archimedean_spiral.md":"ISnhd9yg","examples_3d_lines3d_filled3d_curve.md":"BdEI3RxW","examples_3d_lines3d_line3d.md":"CuD5-UEv","examples_3d_lines3d_lines_wire_contour_3d.md":"rFyE931g","examples_3d_lines3d_wireframe_torus.md":"UlMfCois","examples_3d_meshes_cpunkcube.md":"Dy-h-Eqw","examples_3d_meshes_earth_planes.md":"C_nc2zfm","examples_3d_meshes_gfield.md":"Df00j-Ui","examples_3d_meshes_how_to_cube.md":"NIfvvzom","examples_3d_meshes_isosurfaces.md":"Bnee8gGc","examples_3d_meshes_meshes.md":"Bi_3X-hK","examples_3d_meshes_simplex.md":"Dbe5wsub","examples_3d_mscatters_cube_mscatters.md":"UqnGlyj6","examples_3d_mscatters_gauss2d.md":"DBL9BpGK","examples_3d_mscatters_lscene_limits.md":"ChThjSh-","examples_3d_mscatters_rgbacube.md":"B9k2cvVF","examples_3d_mscatters_rrgraph3d.md":"DDrPFdiY","examples_3d_mscatters_ssao_meshscatter.md":"BlFd7w4X","examples_3d_mscatters_ssao_mgrid.md":"DIluXjJB","examples_3d_surfaces_band3d.md":"CnF7a0MP","examples_3d_surfaces_branching.md":"CSpBHYrT","examples_3d_surfaces_complex_function.md":"Dds7wsJd","examples_3d_surfaces_constraints.md":"CLJ3VWjE","examples_3d_surfaces_gabriels_horn.md":"DRmZxjMJ","examples_3d_surfaces_klein_bottle.md":"BnGsXz6R","examples_3d_surfaces_onecolor.md":"DkEw32tW","examples_3d_surfaces_revolution_surface.md":"DKqYytjP","examples_3d_surfaces_revolution_surface_s.md":"Ba7b_Dkf","examples_3d_surfaces_surface.md":"DfxrdlLp","examples_3d_surfaces_surface_filled_sides.md":"CxiWrG0i","examples_3d_surfaces_tesseralsphericalh.md":"BjQkJZ8e","examples_3d_surfaces_torus.md":"DIqhLVmu","examples_3d_volume_volume.md":"BrOYgu8K","examples_3d_volume_volume_contour_scatters.md":"COcGzrPH","examples_animations_gravities.md":"MwYDoBr3","examples_animations_rotating_with_time.md":"BHXI2BnO","examples_animations_scatter_and_line.md":"B1ESDK7p","examples_animations_scatter_size.md":"C9OwcTrd","examples_animations_travelling_solar_system.md":"Bz7HSwCA","examples_aog_ablines.md":"C4co5gbt","examples_aog_datasaurus.md":"m4p58h1b","examples_aog_density_ridges.md":"CIKDwVoo","examples_aog_marketdata.md":"BgNHr28j","examples_aog_penguins.md":"DgcZRG2f","examples_aog_penguins3d.md":"CgjnBrNM","examples_aog_penguinsaog.md":"BSK9bNYj","examples_aog_penguinsboxes.md":"Biyub_SK","examples_aog_penguinsviolins.md":"BjeH_i37","examples_aog_scatterlinesaog.md":"BQVEkQN_","examples_dashboards_colorschemes.md":"BLSq65Dj","examples_dashboards_matcap.md":"8ZN8FOnL","examples_dashboards_tesseral_spherical_harmonics.md":"DRV_plco","examples_datavis_astronauts.md":"BqZB_ViY","examples_datavis_candlestick.md":"CjaGAGaQ","examples_datavis_earthquakes.md":"Bj4gs_LC","examples_datavis_eigenvals_densities.md":"yeekZ650","examples_datavis_eigenvals_evolution.md":"C1f_CNKB","examples_datavis_fractals.md":"B1EKLIWm","examples_datavis_leos.md":"_efLa6bX","examples_datavis_multipletitles.md":"CfKQyaRU","examples_datavis_strange_attractors.md":"fh4aI26s","examples_geo_blue_marble.md":"CLL2-xe0","examples_geo_coastlines.md":"Bsb8nk6q","examples_geo_donut_earth_sun.md":"B5IukdPz","examples_geo_moon.md":"KasTUa4x","examples_geo_projections.md":"duVsqYxF","examples_geo_vertical_feature_mask.md":"CMtLHglf","examples_rpr_sphere_plane.md":"Da6-qWUX","examples_themes_black_epicycloid.md":"DLfBjASC","examples_themes_dark_surface_contour3d_streamplot.md":"C4tC7kgh","examples_themes_ggplot2_stem.md":"BsTSMJl_","examples_themes_light_ngon.md":"_tr35OQx","examples_themes_minimal_series.md":"Br6kYRwR","index.md":"BEMx_znn","pkgs_versions.md":"BwRs8z6D"} diff --git a/previews/PR54/icon_makie.png b/previews/PR54/icon_makie.png new file mode 100644 index 00000000..50d46d4d Binary files /dev/null and b/previews/PR54/icon_makie.png differ diff --git a/previews/PR54/index.html b/previews/PR54/index.html new file mode 100644 index 00000000..7f9228c1 --- /dev/null +++ b/previews/PR54/index.html @@ -0,0 +1,24 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/previews/PR54/line_cmaps_a.svg b/previews/PR54/line_cmaps_a.svg new file mode 100644 index 00000000..23af75c1 --- /dev/null +++ b/previews/PR54/line_cmaps_a.svg @@ -0,0 +1,1517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/line_latex_bessels.svg b/previews/PR54/line_latex_bessels.svg new file mode 100644 index 00000000..d8d52308 --- /dev/null +++ b/previews/PR54/line_latex_bessels.svg @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR54/makie.svg b/previews/PR54/makie.svg new file mode 100644 index 00000000..85034590 --- /dev/null +++ b/previews/PR54/makie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/previews/PR54/makie_contributors.png b/previews/PR54/makie_contributors.png new file mode 100644 index 00000000..39e073a4 Binary files /dev/null and b/previews/PR54/makie_contributors.png differ diff --git a/previews/PR54/meshes.png b/previews/PR54/meshes.png new file mode 100644 index 00000000..6d5097e0 Binary files /dev/null and b/previews/PR54/meshes.png differ diff --git a/previews/PR54/pkgs_versions.html b/previews/PR54/pkgs_versions.html new file mode 100644 index 00000000..ec87865b --- /dev/null +++ b/previews/PR54/pkgs_versions.html @@ -0,0 +1,72 @@ + + + + + + Beautiful Makie + + + + + + + + + + + + + +
Skip to content

Packages versions

The examples here were autogenerated using:

julia
using Pkg
+Pkg.status()
Status `~/work/BeautifulMakie/BeautifulMakie/docs/Project.toml`
+  [cbdf2221] AlgebraOfGraphics v0.8.0
+  [c9ce4bd3] ArchGDAL v0.10.4
+  [2119f1ac] AssociatedLegendrePolynomials v1.0.1
+  [336ed68f] CSV v0.10.14
+  [13f3f980] CairoMakie v0.12.6
+  [54eefc05] Cascadia v1.0.2
+  [35d6a980] ColorSchemes v3.26.0
+  [5ae59095] Colors v0.12.11
+  [a93c6f00] DataFrames v1.6.1
+  [1313f7d8] DataFramesMeta v0.15.3
+  [82cc6244] DataInterpolations v6.1.0
+  [31c24e10] Distributions v0.25.110
+  [e30172f5] Documenter v1.5.0
+  [4710194d] DocumenterVitepress v0.1.1
+  [5789e2e9] FileIO v1.16.3
+  [f6369f11] ForwardDiff v0.10.36
+  [add2ef01] GDAL v1.8.0
+  [38e38edf] GLM v1.9.0
+  [e9467ef8] GLMakie v0.10.6
+  [db073c08] GeoMakie v0.7.3
+  [5c1252a2] GeometryBasics v0.4.11
+  [bc5e4493] GitHub v5.9.0
+  [708ec375] Gumbo v0.8.2
+  [cd3eb016] HTTP v1.10.8
+⌃ [6218d12a] ImageMagick v1.2.1
+  [916415d5] Images v0.26.1
+  [a98d9a8b] Interpolations v0.15.1
+  [682c06a0] JSON v0.21.4
+  [b964fa9f] LaTeXStrings v1.3.1
+  [50d2b5c4] Lazy v0.15.1
+  [98b081ad] Literate v2.19.0
+  [ee78f7c6] Makie v0.21.6
+  [945b72a4] MarketData v0.14.1
+  [e6723b4c] Meshing v0.7.0
+  [a15396b6] OnlineStats v1.7.0
+  [8b842266] PalmerPenguins v0.1.4
+  [ce6b1742] RDatasets v0.7.7
+  [3cb90ccd] RasterDataSources v0.6.0
+  [a3a2b9e3] Rasters v0.11.5
+  [276daf66] SpecialFunctions v2.4.0
+  [2913bbd2] StatsBase v0.34.3
+  [fd094767] Suppressor v0.2.7
+  [5e47fb64] TestImages v1.8.0
+  [9e3dc215] TimeSeries v0.24.2
+  [44cfe95a] Pkg v1.10.0
+  [9a3f8284] Random
+Info Packages marked with ⌃ have new versions available and may be upgradable.
+ + + + \ No newline at end of file diff --git a/previews/PR54/siteinfo.js b/previews/PR54/siteinfo.js new file mode 100644 index 00000000..31333f8d --- /dev/null +++ b/previews/PR54/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR54"; diff --git a/previews/PR54/streamplot.png b/previews/PR54/streamplot.png new file mode 100644 index 00000000..33542280 Binary files /dev/null and b/previews/PR54/streamplot.png differ diff --git a/previews/PR54/test_alpha.png b/previews/PR54/test_alpha.png new file mode 100644 index 00000000..dcaddc91 Binary files /dev/null and b/previews/PR54/test_alpha.png differ diff --git a/previews/PR54/test_alpha_s.png b/previews/PR54/test_alpha_s.png new file mode 100644 index 00000000..b184195f Binary files /dev/null and b/previews/PR54/test_alpha_s.png differ