1<!DOCTYPE html> 2 3<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> 4 5<head> 6 <meta charset="utf-8"/> 7 <meta name="viewport" content="width=device-width, initial-scale=1"/> 8 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/> 9 <meta name="generator" content="distill" /> 10 11 <style type="text/css"> 12 /* Hide doc at startup (prevent jankiness while JS renders/transforms) */ 13 body { 14 visibility: hidden; 15 } 16 </style> 17 18 <!--radix_placeholder_import_source--> 19 <!--/radix_placeholder_import_source--> 20 21<style type="text/css">code{white-space: pre;}</style> 22<style type="text/css" data-origin="pandoc"> 23html { -webkit-text-size-adjust: 100%; } 24pre > code.sourceCode { white-space: pre; position: relative; } 25pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } 26pre > code.sourceCode > span:empty { height: 1.2em; } 27.sourceCode { overflow: visible; } 28code.sourceCode > span { color: inherit; text-decoration: inherit; } 29div.sourceCode { margin: 1em 0; } 30pre.sourceCode { margin: 0; } 31@media screen { 32div.sourceCode { overflow: auto; } 33} 34@media print { 35pre > code.sourceCode { white-space: pre-wrap; } 36pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } 37} 38pre.numberSource code 39 { counter-reset: source-line 0; } 40pre.numberSource code > span 41 { position: relative; left: -4em; counter-increment: source-line; } 42pre.numberSource code > span > a:first-child::before 43 { content: counter(source-line); 44 position: relative; left: -1em; text-align: right; vertical-align: baseline; 45 border: none; display: inline-block; 46 -webkit-touch-callout: none; -webkit-user-select: none; 47 -khtml-user-select: none; -moz-user-select: none; 48 -ms-user-select: none; user-select: none; 49 padding: 0 4px; width: 4em; 50 color: #aaaaaa; 51 } 52pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } 53div.sourceCode 54 { color: #00769e; background-color: #f1f3f5; } 55@media screen { 56pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } 57} 58code span { color: #00769e; } /* Normal */ 59code span.al { color: #ad0000; } /* Alert */ 60code span.an { color: #5e5e5e; } /* Annotation */ 61code span.at { color: #657422; } /* Attribute */ 62code span.bn { color: #ad0000; } /* BaseN */ 63code span.bu { } /* BuiltIn */ 64code span.cf { color: #00769e; } /* ControlFlow */ 65code span.ch { color: #20794d; } /* Char */ 66code span.cn { color: #8f5902; } /* Constant */ 67code span.co { color: #5e5e5e; } /* Comment */ 68code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */ 69code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */ 70code span.dt { color: #ad0000; } /* DataType */ 71code span.dv { color: #ad0000; } /* DecVal */ 72code span.er { color: #ad0000; } /* Error */ 73code span.ex { } /* Extension */ 74code span.fl { color: #ad0000; } /* Float */ 75code span.fu { color: #4758ab; } /* Function */ 76code span.im { } /* Import */ 77code span.in { color: #5e5e5e; } /* Information */ 78code span.kw { color: #00769e; } /* Keyword */ 79code span.op { color: #5e5e5e; } /* Operator */ 80code span.ot { color: #00769e; } /* Other */ 81code span.pp { color: #ad0000; } /* Preprocessor */ 82code span.sc { color: #5e5e5e; } /* SpecialChar */ 83code span.ss { color: #20794d; } /* SpecialString */ 84code span.st { color: #20794d; } /* String */ 85code span.va { color: #111111; } /* Variable */ 86code span.vs { color: #20794d; } /* VerbatimString */ 87code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ 88</style> 89 90 91 <!--radix_placeholder_meta_tags--> 92 <title>Yuta Kanzawa, Data Scientist</title> 93 94 <meta property="description" itemprop="description" content="Hello! I'm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction."/> 95 96 97 98 <!-- https://developers.facebook.com/docs/sharing/webmasters#markup --> 99 <meta property="og:title" content="Yuta Kanzawa, Data Scientist"/> 100 <meta property="og:type" content="article"/> 101 <meta property="og:description" content="Hello! I'm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction."/> 102 <meta property="og:locale" content="en_US"/> 103 <meta property="og:site_name" content="Yuta Kanzawa, Data Scientist"/> 104 105 <!-- https://dev.twitter.com/cards/types/summary --> 106 <meta property="twitter:card" content="summary"/> 107 <meta property="twitter:title" content="Yuta Kanzawa, Data Scientist"/> 108 <meta property="twitter:description" content="Hello! I'm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction."/> 109 110 <!--/radix_placeholder_meta_tags--> 111 <!--radix_placeholder_rmarkdown_metadata--> 112 113
113<script type="text/json" id="radix-rmarkdown-metadata"> 114 {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title","description","site"]}},"value":[{"type":"character","attributes":{},"value":["Yuta Kanzawa, Data Scientist"]},{"type":"character","attributes":{},"value":["Hello! I'm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction.\n"]},{"type":"character","attributes":{},"value":["distill::distill_website"]}]} 115 </script>
115 116 <!--/radix_placeholder_rmarkdown_metadata--> 117 <!--radix_placeholder_navigation_in_header--> 118 <meta name="distill:offset" content=""/> 119 120
120<script type="application/javascript"> 121 122 window.headroom_prevent_pin = false; 123 124 window.document.addEventListener("DOMContentLoaded", function (event) { 125 126 // initialize headroom for banner 127 var header = $('header').get(0); 128 var headerHeight = header.offsetHeight; 129 var headroom = new Headroom(header, { 130 tolerance: 5, 131 onPin : function() { 132 if (window.headroom_prevent_pin) { 133 window.headroom_prevent_pin = false; 134 headroom.unpin(); 135 } 136 } 137 }); 138 headroom.init(); 139 if(window.location.hash) 140 headroom.unpin(); 141 $(header).addClass('headroom--transition'); 142 143 // offset scroll location for banner on hash change 144 // (see: https://github.com/WickyNilliams/headroom.js/issues/38) 145 window.addEventListener("hashchange", function(event) { 146 window.scrollTo(0, window.pageYOffset - (headerHeight + 25)); 147 }); 148 149 // responsive menu 150 $('.distill-site-header').each(function(i, val) { 151 var topnav = $(this); 152 var toggle = topnav.find('.nav-toggle'); 153 toggle.on('click', function() { 154 topnav.toggleClass('responsive'); 155 }); 156 }); 157 158 // nav dropdowns 159 $('.nav-dropbtn').click(function(e) { 160 $(this).next('.nav-dropdown-content').toggleClass('nav-dropdown-active'); 161 $(this).parent().siblings('.nav-dropdown') 162 .children('.nav-dropdown-content').removeClass('nav-dropdown-active'); 163 }); 164 $("body").click(function(e){ 165 $('.nav-dropdown-content').removeClass('nav-dropdown-active'); 166 }); 167 $(".nav-dropdown").click(function(e){ 168 e.stopPropagation(); 169 }); 170 }); 171 </script>
171 172 173 <style type="text/css"> 174 175 /* Theme (user-documented overrideables for nav appearance) */ 176 177 .distill-site-nav { 178 color: rgba(255, 255, 255, 0.8); 179 background-color: #0F2E3D; 180 font-size: 15px; 181 font-weight: 300; 182 } 183 184 .distill-site-nav a { 185 color: inherit; 186 text-decoration: none; 187 } 188 189 .distill-site-nav a:hover { 190 color: white; 191 } 192 193 @media print { 194 .distill-site-nav { 195 display: none; 196 } 197 } 198 199 .distill-site-header { 200 201 } 202 203 .distill-site-footer { 204 205 } 206 207 208 /* Site Header */ 209 210 .distill-site-header { 211 width: 100%; 212 box-sizing: border-box; 213 z-index: 3; 214 } 215 216 .distill-site-header .nav-left { 217 display: inline-block; 218 margin-left: 8px; 219 } 220 221 @media screen and (max-width: 768px) { 222 .distill-site-header .nav-left { 223 margin-left: 0; 224 } 225 } 226 227 228 .distill-site-header .nav-right { 229 float: right; 230 margin-right: 8px; 231 } 232 233 .distill-site-header a, 234 .distill-site-header .title { 235 display: inline-block; 236 text-align: center; 237 padding: 14px 10px 14px 10px; 238 } 239 240 .distill-site-header .title { 241 font-size: 18px; 242 min-width: 150px; 243 } 244 245 .distill-site-header .logo { 246 padding: 0; 247 } 248 249 .distill-site-header .logo img { 250 display: none; 251 max-height: 20px; 252 width: auto; 253 margin-bottom: -4px; 254 } 255 256 .distill-site-header .nav-image img { 257 max-height: 18px; 258 width: auto; 259 display: inline-block; 260 margin-bottom: -3px; 261 } 262 263 264 265 @media screen and (min-width: 1000px) { 266 .distill-site-header .logo img { 267 display: inline-block; 268 } 269 .distill-site-header .nav-left { 270 margin-left: 20px; 271 } 272 .distill-site-header .nav-right { 273 margin-right: 20px; 274 } 275 .distill-site-header .title { 276 padding-left: 12px; 277 } 278 } 279 280 281 .distill-site-header .nav-toggle { 282 display: none; 283 } 284 285 .nav-dropdown { 286 display: inline-block; 287 position: relative; 288 } 289 290 .nav-dropdown .nav-dropbtn { 291 border: none; 292 outline: none; 293 color: rgba(255, 255, 255, 0.8); 294 padding: 16px 10px; 295 background-color: transparent; 296 font-family: inherit; 297 font-size: inherit; 298 font-weight: inherit; 299 margin: 0;
300 margin-top: 1px; 301 z-index: 2; 302 } 303 304 .nav-dropdown-content { 305 display: none; 306 position: absolute; 307 background-color: white; 308 min-width: 200px; 309 border: 1px solid rgba(0,0,0,0.15); 310 border-radius: 4px; 311 box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1); 312 z-index: 1; 313 margin-top: 2px; 314 white-space: nowrap; 315 padding-top: 4px; 316 padding-bottom: 4px; 317 } 318 319 .nav-dropdown-content hr { 320 margin-top: 4px; 321 margin-bottom: 4px; 322 border: none; 323 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 324 } 325 326 .nav-dropdown-active { 327 display: block; 328 } 329 330 .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header { 331 color: black; 332 padding: 6px 24px; 333 text-decoration: none; 334 display: block; 335 text-align: left; 336 } 337 338 .nav-dropdown-content .nav-dropdown-header { 339 display: block; 340 padding: 5px 24px; 341 padding-bottom: 0; 342 text-transform: uppercase; 343 font-size: 14px; 344 color: #999999; 345 white-space: nowrap; 346 } 347 348 .nav-dropdown:hover .nav-dropbtn { 349 color: white; 350 } 351 352 .nav-dropdown-content a:hover { 353 background-color: #ddd; 354 color: black; 355 } 356 357 .nav-right .nav-dropdown-content { 358 margin-left: -45%; 359 right: 0; 360 } 361 362 @media screen and (max-width: 768px) { 363 .distill-site-header a, .distill-site-header .nav-dropdown {display: none;} 364 .distill-site-header a.nav-toggle { 365 float: right; 366 display: block; 367 } 368 .distill-site-header .title { 369 margin-left: 0; 370 } 371 .distill-site-header .nav-right { 372 margin-right: 0; 373 } 374 .distill-site-header { 375 overflow: hidden; 376 } 377 .nav-right .nav-dropdown-content { 378 margin-left: 0; 379 } 380 } 381 382 383 @media screen and (max-width: 768px) { 384 .distill-site-header.responsive {position: relative; min-height: 500px; } 385 .distill-site-header.responsive a.nav-toggle { 386 position: absolute; 387 right: 0; 388 top: 0; 389 } 390 .distill-site-header.responsive a, 391 .distill-site-header.responsive .nav-dropdown { 392 display: block; 393 text-align: left; 394 } 395 .distill-site-header.responsive .nav-left, 396 .distill-site-header.responsive .nav-right { 397 width: 100%; 398 } 399 .distill-site-header.responsive .nav-dropdown {float: none;} 400 .distill-site-header.responsive .nav-dropdown-content {position: relative;} 401 .distill-site-header.responsive .nav-dropdown .nav-dropbtn { 402 display: block; 403 width: 100%; 404 text-align: left; 405 } 406 } 407 408 /* Site Footer */ 409 410 .distill-site-footer { 411 width: 100%; 412 overflow: hidden; 413 box-sizing: border-box; 414 z-index: 3; 415 margin-top: 30px; 416 padding-top: 30px; 417 padding-bottom: 30px; 418 text-align: center; 419 } 420 421 /* Headroom */ 422 423 d-title { 424 padding-top: 6rem; 425 } 426 427 @media print { 428 d-title { 429 padding-top: 4rem; 430 } 431 } 432 433 .headroom { 434 z-index: 1000; 435 position: fixed; 436 top: 0; 437 left: 0; 438 right: 0; 439 } 440 441 .headroom--transition { 442 transition: all .4s ease-in-out; 443 } 444 445 .headroom--unpinned { 446 top: -100px; 447 } 448 449 .headroom--pinned { 450 top: 0; 451 } 452 453 /* adjust viewport for navbar height */ 454 /* helps vertically center bootstrap (non-distill) content */ 455 .min-vh-100 { 456 min-height: calc(100vh - 100px) !important; 457 } 458 459 </style> 460 461
461<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
461 462 <link href="site_libs/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"/> 463 <link href="site_libs/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"/> 464
464<script src="site_libs/headroom-0.9.4/headroom.min.js"></script>
464 465
465<script src="site_libs/autocomplete-0.37.1/autocomplete.min.js"></script>
465 466
466<script src="site_libs/fuse-6.4.1/fuse.min.js"></script>
466 467 468
468<script type="application/javascript"> 469 470 function getMeta(metaName) { 471 var metas = document.getElementsByTagName('meta'); 472 for (let i = 0; i < metas.length; i++) { 473 if (metas[i].getAttribute('name') === metaName) { 474 return metas[i].getAttribute('content'); 475 } 476 } 477 return ''; 478 } 479 480 function offsetURL(url) { 481 var offset = getMeta('distill:offset'); 482 return offset ? offset + '/' + url : url; 483 } 484 485 function createFuseIndex() { 486 487 // create fuse index 488 var options = { 489 keys: [ 490 { name: 'title', weight: 20 }, 491 { name: 'categories', weight: 15 }, 492 { name: 'description', weight: 10 }, 493 { name: 'contents', weight: 5 }, 494 ], 495 ignoreLocation: true, 496 threshold: 0 497 }; 498 var fuse = new window.Fuse([], options); 499 500 // fetch the main search.json 501 return fetch(offsetURL('search.json')) 502 .then(function(response) { 503 if (response.status == 200) { 504 return response.json().then(function(json) { 505 // index main articles 506 json.articles.forEach(function(article) { 507 fuse.add(article); 508 }); 509 // download collections and index their articles 510 return Promise.all(json.collections.map(function(collection) { 511 return fetch(offsetURL(collection)).then(function(response) { 512 if (response.status === 200) { 513 return response.json().then(function(articles) { 514 articles.forEach(function(article) { 515 fuse.add(article); 516 }); 517 }) 518 } else { 519 return Promise.reject( 520 new Error('Unexpected status from search index request: ' + 521 response.status) 522 ); 523 } 524 }); 525 })).then(function() { 526 return fuse; 527 }); 528 }); 529 530 } else { 531 return Promise.reject( 532 new Error('Unexpected status from search index request: ' + 533 response.status) 534 ); 535 } 536 }); 537 } 538 539 window.document.addEventListener("DOMContentLoaded", function (event) { 540 541 // get search element (bail if we don't have one) 542 var searchEl = window.document.getElementById('distill-search'); 543 if (!searchEl) 544 return; 545 546 createFuseIndex() 547 .then(function(fuse) { 548 549 // make search box visible 550 searchEl.classList.remove('hidden'); 551 552 // initialize autocomplete 553 var options = { 554 autoselect: true, 555 hint: false, 556 minLength: 2, 557 }; 558 window.autocomplete(searchEl, options, [{ 559 source: function(query, callback) { 560 const searchOptions = { 561 isCaseSensitive: false, 562 shouldSort: true, 563 minMatchCharLength: 2, 564 limit: 10, 565 }; 566 var results = fuse.search(query, searchOptions); 567 callback(results 568 .map(function(result) { return result.item; }) 569 ); 570 }, 571 templates: { 572 suggestion: function(suggestion) { 573 var img = suggestion.preview && Object.keys(suggestion.preview).length > 0 574 ? `<img src="${offsetURL(suggestion.preview)}"</img>` 575 : ''; 576 var html = ` 577 <div class="search-item"> 578 <h3>${suggestion.title}</h3> 579 <div class="search-item-description"> 580 ${suggestion.description || ''} 581 </div> 582 <div class="search-item-preview"> 583 ${img} 584 </div> 585 </div> 586 `; 587 return html; 588 } 589 } 590 }]).on('autocomplete:selected', function(event, suggestion) { 591 window.location.href = offsetURL(suggestion.path); 592 }); 593 // remove inline display style on autocompleter (we want to 594 // manage responsive display via css) 595 $('.algolia-autocomplete').css("display", ""); 596 }) 597 .catch(function(error) { 598 console.log(error); 599 }); 600 601 }); 602 603 </script>
603 604 605 <style type="text/css"> 606 607 .nav-search { 608 font-size: x-small; 609 } 610 611 /* Algolioa Autocomplete */ 612 613 .algolia-autocomplete { 614 display: inline-block; 615 margin-left: 10px; 616 vertical-align: sub; 617 background-color: white; 618 color: black; 619 padding: 6px; 620 padding-top: 8px; 621 padding-bottom: 0; 622 border-radius: 6px; 623 border: 1px #0F2E3D solid; 624 width: 180px; 625 } 626 627 628 @media screen and (max-width: 768px) { 629 .distill-site-nav .algolia-autocomplete { 630 display: none; 631 visibility: hidden; 632 } 633 .distill-site-nav.responsive .algolia-autocomplete { 634 display: inline-block; 635 visibility: visible; 636 } 637 .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu { 638 margin-left: 0; 639 width: 400px; 640 max-height: 400px; 641 } 642 } 643 644 .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint { 645 width: 90%; 646 outline: none; 647 border: none; 648 } 649 650 .algolia-autocomplete .aa-hint { 651 color: #999; 652 } 653 .algolia-autocomplete .aa-dropdown-menu { 654 width: 550px; 655 max-height: 70vh; 656 overflow-x: visible; 657 overflow-y: scroll; 658 padding: 5px; 659 margin-top: 3px; 660 margin-left: -150px; 661 background-color: #fff; 662 border-radius: 5px; 663 border: 1px solid #999; 664 border-top: none; 665 } 666 667 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion { 668 cursor: pointer; 669 padding: 5px 4px; 670 border-bottom: 1px solid #eee; 671 } 672 673 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type { 674 border-bottom: none; 675 margin-bottom: 2px; 676 } 677 678 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item { 679 overflow: hidden; 680 font-size: 0.8em; 681 line-height: 1.4em; 682 } 683 684 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 { 685 font-size: 1rem; 686 margin-block-start: 0; 687 margin-block-end: 5px; 688 } 689 690 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description { 691 display: inline-block; 692 overflow: hidden; 693 height: 2.8em; 694 width: 80%; 695 margin-right: 4%; 696 } 697 698 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview { 699 display: inline-block; 700 width: 15%; 701 } 702 703 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img { 704 height: 3em; 705 width: auto; 706 display: none; 707 } 708 709 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img[src] { 710 display: initial; 711 } 712 713 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { 714 background-color: #eee; 715 } 716 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em { 717 font-weight: bold; 718 font-style: normal; 719 } 720 721 </style> 722 723 724 <!--/radix_placeholder_navigation_in_header--> 725 <!--radix_placeholder_distill--> 726 727 <style type="text/css"> 728 729 body { 730 background-color: white; 731 } 732 733 .pandoc-table { 734 width: 100%; 735 } 736 737 .pandoc-table>caption { 738 margin-bottom: 10px; 739 } 740 741 .pandoc-table th:not([align]) { 742 text-align: left; 743 } 744 745 .pagedtable-footer { 746 font-size: 15px; 747 } 748 749 d-byline .byline { 750 grid-template-columns: 2fr 2fr; 751 } 752 753 d-byline .byline h3 { 754 margin-block-start: 1.5em; 755 } 756 757 d-byline .byline .authors-affiliations h3 { 758 margin-block-start: 0.5em; 759 } 760 761 .authors-affiliations .orcid-id { 762 width: 16px; 763 height:16px; 764 margin-left: 4px; 765 margin-right: 4px; 766 vertical-align: middle; 767 padding-bottom: 2px; 768 } 769 770 d-title .dt-tags { 771 margin-top: 1em; 772 grid-column: text; 773 } 774 775 .dt-tags .dt-tag { 776 text-decoration: none; 777 display: inline-block; 778 color: rgba(0,0,0,0.6); 779 padding: 0em 0.4em; 780 margin-right: 0.5em; 781 margin-bottom: 0.4em; 782 font-size: 70%; 783 border: 1px solid rgba(0,0,0,0.2); 784 border-radius: 3px; 785 text-transform: uppercase; 786 font-weight: 500; 787 } 788 789 d-article table.gt_table td, 790 d-article table.gt_table th { 791 border-bottom: none; 792 font-size: 100%; 793 } 794 795 .html-widget { 796 margin-bottom: 2.0em; 797 } 798 799 .l-screen-inset { 800 padding-right: 16px; 801 } 802 803 .l-screen .caption { 804 margin-left: 10px; 805 } 806 807 .shaded { 808 background: rgb(247, 247, 247); 809 padding-top: 20px; 810 padding-bottom: 20px; 811 border-top: 1px solid rgba(0, 0, 0, 0.1); 812 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 813 } 814 815 .shaded .html-widget { 816 margin-bottom: 0; 817 border: 1px solid rgba(0, 0, 0, 0.1); 818 } 819 820 .shaded .shaded-content { 821 background: white; 822 } 823 824 .text-output { 825 margin-top: 0; 826 line-height: 1.5em; 827 } 828 829 .hidden { 830 display: none !important; 831 } 832 833 hr.section-separator { 834 border: none; 835 border-top: 1px solid rgba(0, 0, 0, 0.1); 836 margin: 0px; 837 } 838 839 840 d-byline { 841 border-top: none; 842 } 843 844 d-article { 845 padding-top: 2.5rem; 846 padding-bottom: 30px; 847 border-top: none; 848 } 849 850 d-appendix { 851 padding-top: 30px; 852 } 853 854 d-article>p>img { 855 width: 100%; 856 } 857 858 d-article h2 { 859 margin: 1rem 0 1.5rem 0; 860 } 861 862 d-article h3 { 863 margin-top: 1.5rem; 864 } 865 866 d-article iframe { 867 border: 1px solid rgba(0, 0, 0, 0.1); 868 margin-bottom: 2.0em; 869 width: 100%; 870 } 871 872 /* Tweak code blocks */ 873 874 d-article div.sourceCode code, 875 d-article pre code {
876 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 877 } 878 879 d-article pre, 880 d-article div.sourceCode, 881 d-article div.sourceCode pre { 882 overflow: auto; 883 } 884 885 d-article div.sourceCode { 886 background-color: white; 887 } 888 889 d-article div.sourceCode pre { 890 padding-left: 10px; 891 font-size: 12px; 892 border-left: 2px solid rgba(0,0,0,0.1); 893 } 894 895 d-article pre { 896 font-size: 12px; 897 color: black; 898 background: none; 899 margin-top: 0; 900 text-align: left; 901 white-space: pre; 902 word-spacing: normal; 903 word-break: normal; 904 word-wrap: normal; 905 line-height: 1.5; 906 907 -moz-tab-size: 4; 908 -o-tab-size: 4; 909 tab-size: 4; 910 911 -webkit-hyphens: none; 912 -moz-hyphens: none; 913 -ms-hyphens: none; 914 hyphens: none; 915 } 916 917 d-article pre a { 918 border-bottom: none; 919 } 920 921 d-article pre a:hover { 922 border-bottom: none; 923 text-decoration: underline; 924 } 925 926 d-article details { 927 grid-column: text; 928 margin-bottom: 0.8em; 929 } 930 931 @media(min-width: 768px) { 932 933 d-article pre, 934 d-article div.sourceCode, 935 d-article div.sourceCode pre { 936 overflow: visible !important; 937 } 938 939 d-article div.sourceCode pre { 940 padding-left: 18px; 941 font-size: 14px; 942 } 943 944 /* tweak for Pandoc numbered line within distill */ 945 d-article pre.numberSource code > span { 946 left: -2em; 947 } 948 949 d-article pre { 950 font-size: 14px; 951 } 952 953 } 954 955 figure img.external { 956 background: white; 957 border: 1px solid rgba(0, 0, 0, 0.1); 958 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 959 padding: 18px; 960 box-sizing: border-box; 961 } 962 963 /* CSS for d-contents */ 964 965 .d-contents { 966 grid-column: text; 967 color: rgba(0,0,0,0.8); 968 font-size: 0.9em; 969 padding-bottom: 1em; 970 margin-bottom: 1em; 971 padding-bottom: 0.5em; 972 margin-bottom: 1em; 973 padding-left: 0.25em; 974 justify-self: start; 975 } 976 977 @media(min-width: 1000px) { 978 .d-contents.d-contents-float { 979 height: 0; 980 grid-column-start: 1; 981 grid-column-end: 4; 982 justify-self: center; 983 padding-right: 3em; 984 padding-left: 2em; 985 } 986 } 987 988 .d-contents nav h3 { 989 font-size: 18px; 990 margin-top: 0; 991 margin-bottom: 1em; 992 } 993 994 .d-contents li { 995 list-style-type: none 996 } 997 998 .d-contents nav > ul { 999 padding-left: 0; 1000 } 1001 1002 .d-contents ul { 1003 padding-left: 1em 1004 } 1005 1006 .d-contents nav ul li { 1007 margin-top: 0.6em; 1008 margin-bottom: 0.2em; 1009 } 1010 1011 .d-contents nav a { 1012 font-size: 13px; 1013 border-bottom: none; 1014 text-decoration: none 1015 color: rgba(0, 0, 0, 0.8); 1016 } 1017 1018 .d-contents nav a:hover { 1019 text-decoration: underline solid rgba(0, 0, 0, 0.6) 1020 } 1021 1022 .d-contents nav > ul > li > a { 1023 font-weight: 600; 1024 } 1025 1026 .d-contents nav > ul > li > ul { 1027 font-weight: inherit; 1028 } 1029 1030 .d-contents nav > ul > li > ul > li { 1031 margin-top: 0.2em; 1032 } 1033 1034 1035 .d-contents nav ul { 1036 margin-top: 0; 1037 margin-bottom: 0.25em; 1038 } 1039 1040 .d-article-with-toc h2:nth-child(2) { 1041 margin-top: 0; 1042 } 1043 1044 1045 /* Figure */ 1046 1047 .figure { 1048 position: relative; 1049 margin-bottom: 2.5em; 1050 margin-top: 1.5em; 1051 } 1052 1053 .figure .caption { 1054 color: rgba(0, 0, 0, 0.6); 1055 font-size: 12px; 1056 line-height: 1.5em; 1057 } 1058 1059 .figure img.external { 1060 background: white; 1061 border: 1px solid rgba(0, 0, 0, 0.1); 1062 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 1063 padding: 18px; 1064 box-sizing: border-box; 1065 } 1066 1067 .figure .caption a { 1068 color: rgba(0, 0, 0, 0.6); 1069 } 1070 1071 .figure .caption b, 1072 .figure .caption strong, { 1073 font-weight: 600; 1074 color: rgba(0, 0, 0, 1.0); 1075 } 1076 1077 /* Citations */ 1078 1079 d-article .citation { 1080 color: inherit; 1081 cursor: inherit; 1082 } 1083 1084 div.hanging-indent{ 1085 margin-left: 1em; text-indent: -1em; 1086 } 1087 1088 /* Citation hover box */ 1089 1090 .tippy-box[data-theme~=light-border] { 1091 background-color: rgba(250, 250, 250, 0.95); 1092 } 1093 1094 .tippy-content > p { 1095 margin-bottom: 0; 1096 padding: 2px; 1097 } 1098 1099 1100 /* Tweak 1000px media break to show more text */ 1101 1102 @media(min-width: 1000px) { 1103 .base-grid, 1104 distill-header, 1105 d-title, 1106 d-abstract, 1107 d-article, 1108 d-appendix, 1109 distill-appendix, 1110 d-byline, 1111 d-footnote-list, 1112 d-citation-list, 1113 distill-footer { 1114 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 80px [middle-start] 50px [text-start kicker-end] 65px 65px 65px 65px 65px 65px 65px 65px [text-end gutter-start] 65px [middle-end] 65px [page-end gutter-end] 1fr [screen-end]; 1115 grid-column-gap: 16px; 1116 } 1117 1118 .grid { 1119 grid-column-gap: 16px; 1120 } 1121 1122 d-article { 1123 font-size: 1.06rem; 1124 line-height: 1.7em; 1125 } 1126 figure .caption, .figure .caption, figure figcaption { 1127 font-size: 13px; 1128 } 1129 } 1130 1131 @media(min-width: 1180px) { 1132 .base-grid, 1133 distill-header, 1134 d-title, 1135 d-abstract, 1136 d-article, 1137 d-appendix, 1138 distill-appendix, 1139 d-byline, 1140 d-footnote-list, 1141 d-citation-list, 1142 distill-footer { 1143 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end]; 1144 grid-column-gap: 32px; 1145 } 1146 1147 .grid { 1148 grid-column-gap: 32px; 1149 } 1150 } 1151 1152 1153 /* Get the citation styles for the appendix (not auto-injected on render since 1154 we do our own rendering of the citation appendix) */ 1155 1156 d-appendix .citation-appendix, 1157 .d-appendix .citation-appendix { 1158 font-size: 11px; 1159 line-height: 15px; 1160 border-left: 1px solid rgba(0, 0, 0, 0.1); 1161 padding-left: 18px; 1162 border: 1px solid rgba(0,0,0,0.1); 1163 background: rgba(0, 0, 0, 0.02); 1164 padding: 10px 18px; 1165 border-radius: 3px; 1166 color: rgba(150, 150, 150, 1); 1167 overflow: hidden; 1168 margin-top: -12px; 1169 white-space: pre-wrap; 1170 word-wrap: break-word; 1171 } 1172 1173 /* Include appendix styles here so they can be overridden */ 1174 1175 d-appendix { 1176 contain: layout style; 1177 font-size: 0.8em; 1178 line-height: 1.7em; 1179 margin-top: 60px; 1180 margin-bottom: 0; 1181 border-top: 1px solid rgba(0, 0, 0, 0.1); 1182 color: rgba(0,0,0,0.5); 1183 padding-top: 60px; 1184 padding-bottom: 48px; 1185 } 1186 1187 d-appendix h3 { 1188 grid-column: page-start / text-start; 1189 font-size: 15px; 1190 font-weight: 500; 1191 margin-top: 1em; 1192 margin-bottom: 0; 1193 color: rgba(0,0,0,0.65); 1194 } 1195 1196 d-appendix h3 + * { 1197 margin-top: 1em; 1198 } 1199 1200 d-appendix ol { 1201 padding: 0 0 0 15px; 1202 } 1203 1204 @media (min-width: 768px) { 1205 d-appendix ol { 1206 padding: 0 0 0 30px; 1207 margin-left: -30px; 1208 } 1209 } 1210 1211 d-appendix li { 1212 margin-bottom: 1em; 1213 } 1214 1215 d-appendix a { 1216 color: rgba(0, 0, 0, 0.6); 1217 } 1218 1219 d-appendix > * { 1220 grid-column: text; 1221 } 1222 1223 d-appendix > d-footnote-list, 1224 d-appendix > d-citation-list, 1225 d-appendix > distill-appendix { 1226 grid-column: screen; 1227 } 1228 1229 /* Include footnote styles here so they can be overridden */ 1230 1231 d-footnote-list { 1232 contain: layout style; 1233 } 1234 1235 d-footnote-list > * { 1236 grid-column: text; 1237 } 1238
1239 d-footnote-list a.footnote-backlink { 1240 color: rgba(0,0,0,0.3); 1241 padding-left: 0.5em; 1242 } 1243 1244 1245 1246 /* Anchor.js */ 1247 1248 .anchorjs-link { 1249 /*transition: all .25s linear; */ 1250 text-decoration: none; 1251 border-bottom: none; 1252 } 1253 *:hover > .anchorjs-link { 1254 margin-left: -1.125em !important; 1255 text-decoration: none; 1256 border-bottom: none; 1257 } 1258 1259 /* Social footer */ 1260 1261 .social_footer { 1262 margin-top: 30px; 1263 margin-bottom: 0; 1264 color: rgba(0,0,0,0.67); 1265 } 1266 1267 .disqus-comments { 1268 margin-right: 30px; 1269 } 1270 1271 .disqus-comment-count { 1272 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1273 cursor: pointer; 1274 } 1275 1276 #disqus_thread { 1277 margin-top: 30px; 1278 } 1279 1280 .article-sharing a { 1281 border-bottom: none; 1282 margin-right: 8px; 1283 } 1284 1285 .article-sharing a:hover { 1286 border-bottom: none; 1287 } 1288 1289 .sidebar-section.subscribe { 1290 font-size: 12px; 1291 line-height: 1.6em; 1292 } 1293 1294 .subscribe p { 1295 margin-bottom: 0.5em; 1296 } 1297 1298 1299 .article-footer .subscribe { 1300 font-size: 15px; 1301 margin-top: 45px; 1302 } 1303 1304 1305 .sidebar-section.custom { 1306 font-size: 12px; 1307 line-height: 1.6em; 1308 } 1309 1310 .custom p { 1311 margin-bottom: 0.5em; 1312 } 1313 1314 /* Styles for listing layout (hide title) */ 1315 .layout-listing d-title, .layout-listing .d-title { 1316 display: none; 1317 } 1318 1319 /* Styles for posts lists (not auto-injected) */ 1320 1321 1322 .posts-with-sidebar { 1323 padding-left: 45px; 1324 padding-right: 45px; 1325 } 1326 1327 .posts-list .description h2, 1328 .posts-list .description p { 1329 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1330 } 1331 1332 .posts-list .description h2 { 1333 font-weight: 700; 1334 border-bottom: none; 1335 padding-bottom: 0; 1336 } 1337 1338 .posts-list h2.post-tag { 1339 border-bottom: 1px solid rgba(0, 0, 0, 0.2); 1340 padding-bottom: 12px; 1341 } 1342 .posts-list { 1343 margin-top: 60px; 1344 margin-bottom: 24px; 1345 } 1346 1347 .posts-list .post-preview { 1348 text-decoration: none; 1349 overflow: hidden; 1350 display: block; 1351 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 1352 padding: 24px 0; 1353 } 1354 1355 .post-preview-last { 1356 border-bottom: none !important; 1357 } 1358 1359 .posts-list .posts-list-caption { 1360 grid-column: screen; 1361 font-weight: 400; 1362 } 1363 1364 .posts-list .post-preview h2 { 1365 margin: 0 0 6px 0; 1366 line-height: 1.2em; 1367 font-style: normal; 1368 font-size: 24px; 1369 } 1370 1371 .posts-list .post-preview p { 1372 margin: 0 0 12px 0; 1373 line-height: 1.4em; 1374 font-size: 16px; 1375 } 1376 1377 .posts-list .post-preview .thumbnail { 1378 box-sizing: border-box; 1379 margin-bottom: 24px; 1380 position: relative; 1381 max-width: 500px; 1382 } 1383 .posts-list .post-preview img { 1384 width: 100%; 1385 display: block; 1386 } 1387 1388 .posts-list .metadata { 1389 font-size: 12px; 1390 line-height: 1.4em; 1391 margin-bottom: 18px; 1392 } 1393 1394 .posts-list .metadata > * { 1395 display: inline-block; 1396 } 1397 1398 .posts-list .metadata .publishedDate { 1399 margin-right: 2em; 1400 } 1401 1402 .posts-list .metadata .dt-authors { 1403 display: block; 1404 margin-top: 0.3em; 1405 margin-right: 2em; 1406 } 1407 1408 .posts-list .dt-tags { 1409 display: block; 1410 line-height: 1em; 1411 } 1412 1413 .posts-list .dt-tags .dt-tag { 1414 display: inline-block; 1415 color: rgba(0,0,0,0.6); 1416 padding: 0.3em 0.4em; 1417 margin-right: 0.2em; 1418 margin-bottom: 0.4em; 1419 font-size: 60%; 1420 border: 1px solid rgba(0,0,0,0.2); 1421 border-radius: 3px; 1422 text-transform: uppercase; 1423 font-weight: 500; 1424 } 1425 1426 .posts-list img { 1427 opacity: 1; 1428 } 1429 1430 .posts-list img[data-src] { 1431 opacity: 0; 1432 } 1433 1434 .posts-more { 1435 clear: both; 1436 } 1437 1438 1439 .posts-sidebar { 1440 font-size: 16px; 1441 } 1442 1443 .posts-sidebar h3 { 1444 font-size: 16px; 1445 margin-top: 0; 1446 margin-bottom: 0.5em; 1447 font-weight: 400; 1448 text-transform: uppercase; 1449 } 1450 1451 .sidebar-section { 1452 margin-bottom: 30px; 1453 } 1454 1455 .categories ul { 1456 list-style-type: none; 1457 margin: 0; 1458 padding: 0; 1459 } 1460 1461 .categories li { 1462 color: rgba(0, 0, 0, 0.8); 1463 margin-bottom: 0; 1464 } 1465 1466 .categories li>a { 1467 border-bottom: none; 1468 } 1469 1470 .categories li>a:hover { 1471 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1472 } 1473 1474 .categories .active { 1475 font-weight: 600; 1476 } 1477 1478 .categories .category-count { 1479 color: rgba(0, 0, 0, 0.4); 1480 } 1481 1482 1483 @media(min-width: 768px) { 1484 .posts-list .post-preview h2 { 1485 font-size: 26px; 1486 } 1487 .posts-list .post-preview .thumbnail { 1488 float: right; 1489 width: 30%; 1490 margin-bottom: 0; 1491 } 1492 .posts-list .post-preview .description { 1493 float: left; 1494 width: 45%; 1495 } 1496 .posts-list .post-preview .metadata { 1497 float: left; 1498 width: 20%; 1499 margin-top: 8px; 1500 } 1501 .posts-list .post-preview p { 1502 margin: 0 0 12px 0; 1503 line-height: 1.5em; 1504 font-size: 16px; 1505 } 1506 .posts-with-sidebar .posts-list { 1507 float: left; 1508 width: 75%; 1509 } 1510 .posts-with-sidebar .posts-sidebar { 1511 float: right; 1512 width: 20%; 1513 margin-top: 60px; 1514 padding-top: 24px; 1515 padding-bottom: 24px; 1516 } 1517 } 1518 1519 1520 /* Improve display for browsers without grid (IE/Edge <= 15) */ 1521 1522 .downlevel { 1523 line-height: 1.6em; 1524 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1525 margin: 0; 1526 } 1527 1528 .downlevel .d-title { 1529 padding-top: 6rem; 1530 padding-bottom: 1.5rem; 1531 } 1532 1533 .downlevel .d-title h1 { 1534 font-size: 50px; 1535 font-weight: 700; 1536 line-height: 1.1em; 1537 margin: 0 0 0.5rem; 1538 } 1539 1540 .downlevel .d-title p { 1541 font-weight: 300; 1542 font-size: 1.2rem; 1543 line-height: 1.55em; 1544 margin-top: 0; 1545 } 1546 1547 .downlevel .d-byline { 1548 padding-top: 0.8em; 1549 padding-bottom: 0.8em; 1550 font-size: 0.8rem; 1551 line-height: 1.8em; 1552 } 1553 1554 .downlevel .section-separator { 1555 border: none; 1556 border-top: 1px solid rgba(0, 0, 0, 0.1); 1557 } 1558 1559 .downlevel .d-article { 1560 font-size: 1.06rem; 1561 line-height: 1.7em; 1562 padding-top: 1rem; 1563 padding-bottom: 2rem; 1564 } 1565 1566 1567 .downlevel .d-appendix { 1568 padding-left: 0; 1569 padding-right: 0; 1570 max-width: none; 1571 font-size: 0.8em; 1572 line-height: 1.7em; 1573 margin-bottom: 0; 1574 color: rgba(0,0,0,0.5); 1575 padding-top: 40px; 1576 padding-bottom: 48px; 1577 } 1578 1579 .downlevel .footnotes ol { 1580 padding-left: 13px; 1581 } 1582 1583 .downlevel .base-grid, 1584 .downlevel .distill-header, 1585 .downlevel .d-title, 1586 .downlevel .d-abstract, 1587 .downlevel .d-article, 1588 .downlevel .d-appendix, 1589 .downlevel .distill-appendix, 1590 .downlevel .d-byline, 1591 .downlevel .d-footnote-list, 1592 .downlevel .d-citation-list, 1593 .downlevel .distill-footer, 1594 .downlevel .appendix-bottom, 1595 .downlevel .posts-container { 1596 padding-left: 40px; 1597 padding-right: 40px; 1598 } 1599 1600 @media(min-width: 768px) { 1601 .downlevel .base-grid, 1602 .downlevel .distill-header, 1603 .downlevel .d-title, 1604 .downlevel .d-abstract, 1605 .downlevel .d-article, 1606 .downlevel .d-appendix, 1607 .downlevel .distill-appendix, 1608 .downlevel .d-byline, 1609 .downlevel .d-footnote-list, 1610 .downlevel .d-citation-list, 1611 .downlevel .distill-footer, 1612 .downlevel .appendix-bottom, 1613 .downlevel .posts-container { 1614 padding-left: 150px; 1615 padding-right: 150px; 1616 max-width: 900px; 1617 } 1618 } 1619 1620 .downlevel pre code { 1621 display: block; 1622 border-left: 2px solid rgba(0, 0, 0, .1); 1623 padding: 0 0 0 20px; 1624 font-size: 14px; 1625 } 1626 1627 .downlevel code, .downlevel pre { 1628 color: black; 1629 background: none;
1630 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 1631 text-align: left; 1632 white-space: pre; 1633 word-spacing: normal; 1634 word-break: normal; 1635 word-wrap: normal; 1636 line-height: 1.5; 1637 1638 -moz-tab-size: 4; 1639 -o-tab-size: 4; 1640 tab-size: 4; 1641 1642 -webkit-hyphens: none; 1643 -moz-hyphens: none; 1644 -ms-hyphens: none; 1645 hyphens: none; 1646 } 1647 1648 .downlevel .posts-list .post-preview { 1649 color: inherit; 1650 } 1651 1652 1653 1654 </style> 1655 1656
1656<script type="application/javascript"> 1657 1658 function is_downlevel_browser() { 1659 if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"}, 1660 window.navigator.userAgent)) { 1661 return true; 1662 } else { 1663 return window.load_distill_framework === undefined; 1664 } 1665 } 1666 1667 // show body when load is complete 1668 function on_load_complete() { 1669 1670 // add anchors 1671 if (window.anchors) { 1672 window.anchors.options.placement = 'left'; 1673 window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5'); 1674 } 1675 1676 1677 // set body to visible 1678 document.body.style.visibility = 'visible'; 1679 1680 // force redraw for leaflet widgets 1681 if (window.HTMLWidgets) { 1682 var maps = window.HTMLWidgets.findAll(".leaflet"); 1683 $.each(maps, function(i, el) { 1684 var map = this.getMap(); 1685 map.invalidateSize(); 1686 map.eachLayer(function(layer) { 1687 if (layer instanceof L.TileLayer) 1688 layer.redraw(); 1689 }); 1690 }); 1691 } 1692 1693 // trigger 'shown' so htmlwidgets resize 1694 $('d-article').trigger('shown'); 1695 } 1696 1697 function init_distill() { 1698 1699 init_common(); 1700 1701 // create front matter 1702 var front_matter = $('<d-front-matter></d-front-matter>'); 1703 $('#distill-front-matter').wrap(front_matter); 1704 1705 // create d-title 1706 $('.d-title').changeElementType('d-title'); 1707 1708 // separator 1709 var separator = '<hr class="section-separator" style="clear: both"/>'; 1710 // prepend separator above appendix 1711 $('.d-byline').before(separator); 1712 $('.d-article').before(separator); 1713 1714 // create d-byline 1715 var byline = $('<d-byline></d-byline>'); 1716 $('.d-byline').replaceWith(byline); 1717 1718 // create d-article 1719 var article = $('<d-article></d-article>'); 1720 $('.d-article').wrap(article).children().unwrap(); 1721 1722 // move posts container into article 1723 $('.posts-container').appendTo($('d-article')); 1724 1725 // create d-appendix 1726 $('.d-appendix').changeElementType('d-appendix'); 1727 1728 // flag indicating that we have appendix items 1729 var appendix = $('.appendix-bottom').children('h3').length > 0; 1730 1731 // replace footnotes with <d-footnote> 1732 $('.footnote-ref').each(function(i, val) { 1733 appendix = true; 1734 var href = $(this).attr('href'); 1735 var id = href.replace('#', ''); 1736 var fn = $('#' + id); 1737 var fn_p = $('#' + id + '>p'); 1738 fn_p.find('.footnote-back').remove(); 1739 var text = fn_p.html(); 1740 var dtfn = $('<d-footnote></d-footnote>'); 1741 dtfn.html(text); 1742 $(this).replaceWith(dtfn); 1743 }); 1744 // remove footnotes 1745 $('.footnotes').remove(); 1746 1747 // move refs into #references-listing 1748 $('#references-listing').replaceWith($('#refs')); 1749 1750 $('h1.appendix, h2.appendix').each(function(i, val) { 1751 $(this).changeElementType('h3'); 1752 }); 1753 $('h3.appendix').each(function(i, val) { 1754 var id = $(this).attr('id'); 1755 $('.d-contents a[href="#' + id + '"]').parent().remove(); 1756 appendix = true; 1757 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix')); 1758 }); 1759 1760 // show d-appendix if we have appendix content 1761 $("d-appendix").css('display', appendix ? 'grid' : 'none'); 1762 1763 // localize layout chunks to just output 1764 $('.layout-chunk').each(function(i, val) { 1765 1766 // capture layout 1767 var layout = $(this).attr('data-layout'); 1768 1769 // apply layout to markdown level block elements 1770 var elements = $(this).children().not('details, div.sourceCode, pre, script'); 1771 elements.each(function(i, el) { 1772 var layout_div = $('<div class="' + layout + '"></div>'); 1773 if (layout_div.hasClass('shaded')) { 1774 var shaded_content = $('<div class="shaded-content"></div>'); 1775 $(this).wrap(shaded_content); 1776 $(this).parent().wrap(layout_div); 1777 } else { 1778 $(this).wrap(layout_div); 1779 } 1780 }); 1781 1782 1783 // unwrap the layout-chunk div 1784 $(this).children().unwrap(); 1785 }); 1786 1787 // remove code block used to force highlighting css 1788 $('.distill-force-highlighting-css').parent().remove(); 1789 1790 // remove empty line numbers inserted by pandoc when using a 1791 // custom syntax highlighting theme, except when numbering line 1792 // in code chunk 1793 $('pre:not(.numberLines) code.sourceCode a:empty').remove(); 1794 1795 // load distill framework 1796 load_distill_framework(); 1797 1798 // wait for window.distillRunlevel == 4 to do post processing 1799 function distill_post_process() { 1800 1801 if (!window.distillRunlevel || window.distillRunlevel < 4) 1802 return; 1803 1804 // hide author/affiliations entirely if we have no authors 1805 var front_matter = JSON.parse($("#distill-front-matter").html()); 1806 var have_authors = front_matter.authors && front_matter.authors.length > 0; 1807 if (!have_authors) 1808 $('d-byline').addClass('hidden'); 1809 1810 // article with toc class 1811 $('.d-contents').parent().addClass('d-article-with-toc'); 1812 1813 // strip links that point to # 1814 $('.authors-affiliations').find('a[href="#"]').removeAttr('href'); 1815 1816 // add orcid ids 1817 $('.authors-affiliations').find('.author').each(function(i, el) {
1818 var orcid_id = front_matter.authors[i].orcidID; 1819 var author_name = front_matter.authors[i].author 1820 if (orcid_id) { 1821 var a = $('<a></a>'); 1822 a.attr('href', 'https://orcid.org/' + orcid_id); 1823 var img = $('<img></img>'); 1824 img.addClass('orcid-id'); 1825 img.attr('alt', author_name ? 'ORCID ID for ' + author_name : 'ORCID ID'); 1826 img.attr('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=='); 1827 a.append(img); 1828 $(this).append(a); 1829 } 1830 }); 1831 1832 // hide elements of author/affiliations grid that have no value 1833 function hide_byline_column(caption) { 1834 $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden'); 1835 } 1836 1837 // affiliations 1838 var have_affiliations = false; 1839 for (var i = 0; i<front_matter.authors.length; ++i) { 1840 var author = front_matter.authors[i]; 1841 if (author.affiliation !== " ") { 1842 have_affiliations = true; 1843 break; 1844 } 1845 } 1846 if (!have_affiliations) 1847 $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden'); 1848 1849 // published date 1850 if (!front_matter.publishedDate) 1851 hide_byline_column("Published"); 1852 1853 // document object identifier 1854 var doi = $('d-byline').find('h3:contains("DOI")'); 1855 var doi_p = doi.next().empty(); 1856 if (!front_matter.doi) { 1857 // if we have a citation and valid citationText then link to that 1858 if ($('#citation').length > 0 && front_matter.citationText) { 1859 doi.html('Citation'); 1860 $('<a href="#citation"></a>') 1861 .text(front_matter.citationText) 1862 .appendTo(doi_p); 1863 } else { 1864 hide_byline_column("DOI"); 1865 } 1866 } else { 1867 $('<a></a>') 1868 .attr('href', "https://doi.org/" + front_matter.doi) 1869 .html(front_matter.doi) 1870 .appendTo(doi_p); 1871 } 1872 1873 // change plural form of authors/affiliations 1874 if (front_matter.authors.length === 1) { 1875 var grid = $('.authors-affiliations'); 1876 grid.children('h3:contains("Authors")').text('Author'); 1877 grid.children('h3:contains("Affiliations")').text('Affiliation'); 1878 } 1879 1880 // remove d-appendix and d-footnote-list local styles 1881 $('d-appendix > style:first-child').remove(); 1882 $('d-footnote-list > style:first-child').remove(); 1883 1884 // move appendix-bottom entries to the bottom 1885 $('.appendix-bottom').appendTo('d-appendix').children().unwrap(); 1886 $('.appendix-bottom').remove(); 1887 1888 // hoverable references 1889 $('span.citation[data-cites]').each(function() { 1890 const citeChild = $(this).children()[0]
1891 // Do not process if @xyz has been used without escaping and without bibliography activated 1892 // https://github.com/rstudio/distill/issues/466 1893 if (citeChild === undefined) return true 1894 1895 if (citeChild.nodeName == "D-FOOTNOTE") { 1896 var fn = citeChild 1897 $(this).html(fn.shadowRoot.querySelector("sup")) 1898 $(this).id = fn.id 1899 fn.remove() 1900 } 1901 var refs = $(this).attr('data-cites').split(" "); 1902 var refHtml = refs.map(function(ref) { 1903 // Could use CSS.escape too here, we insure backward compatibility in navigator 1904 return "<p>" + $('div[id="ref-' + ref + '"]').html() + "</p>"; 1905 }).join("\n"); 1906 window.tippy(this, { 1907 allowHTML: true, 1908 content: refHtml, 1909 maxWidth: 500, 1910 interactive: true, 1911 interactiveBorder: 10, 1912 theme: 'light-border', 1913 placement: 'bottom-start' 1914 }); 1915 }); 1916 1917 // fix footnotes in tables (#411) 1918 // replacing broken distill.pub feature 1919 $('table d-footnote').each(function() { 1920 // we replace internal showAtNode methode which is triggered when hovering a footnote 1921 this.hoverBox.showAtNode = function(node) { 1922 // ported from https://github.com/distillpub/template/pull/105/files 1923 calcOffset = function(elem) { 1924 let x = elem.offsetLeft; 1925 let y = elem.offsetTop; 1926 // Traverse upwards until an `absolute` element is found or `elem` 1927 // becomes null. 1928 while (elem = elem.offsetParent && elem.style.position != 'absolute') { 1929 x += elem.offsetLeft; 1930 y += elem.offsetTop; 1931 } 1932 1933 return { left: x, top: y }; 1934 } 1935 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop 1936 const bbox = node.getBoundingClientRect(); 1937 const offset = calcOffset(node); 1938 this.show([offset.left + bbox.width, offset.top + bbox.height]); 1939 } 1940 }) 1941 1942 // clear polling timer 1943 clearInterval(tid); 1944 1945 // show body now that everything is ready 1946 on_load_complete(); 1947 } 1948 1949 var tid = setInterval(distill_post_process, 50); 1950 distill_post_process(); 1951 1952 } 1953 1954 function init_downlevel() { 1955 1956 init_common(); 1957 1958 // insert hr after d-title 1959 $('.d-title').after($('<hr class="section-separator"/>')); 1960 1961 // check if we have authors 1962 var front_matter = JSON.parse($("#distill-front-matter").html()); 1963 var have_authors = front_matter.authors && front_matter.authors.length > 0; 1964
1965 // manage byline/border 1966 if (!have_authors) 1967 $('.d-byline').remove(); 1968 $('.d-byline').after($('<hr class="section-separator"/>')); 1969 $('.d-byline a').remove(); 1970 1971 // remove toc 1972 $('.d-contents').remove(); 1973 1974 // move appendix elements 1975 $('h1.appendix, h2.appendix').each(function(i, val) { 1976 $(this).changeElementType('h3'); 1977 }); 1978 $('h3.appendix').each(function(i, val) { 1979 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix')); 1980 }); 1981 1982 1983 // inject headers into references and footnotes 1984 var refs_header = $('<h3></h3>'); 1985 refs_header.text('References'); 1986 $('#refs').prepend(refs_header); 1987 1988 var footnotes_header = $('<h3></h3'); 1989 footnotes_header.text('Footnotes'); 1990 $('.footnotes').children('hr').first().replaceWith(footnotes_header); 1991 1992 // move appendix-bottom entries to the bottom 1993 $('.appendix-bottom').appendTo('.d-appendix').children().unwrap(); 1994 $('.appendix-bottom').remove(); 1995 1996 // remove appendix if it's empty 1997 if ($('.d-appendix').children().length === 0) 1998 $('.d-appendix').remove(); 1999 2000 // prepend separator above appendix 2001 $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>')); 2002 2003 // trim code 2004 $('pre>code').each(function(i, val) { 2005 $(this).html($.trim($(this).html())); 2006 }); 2007 2008 // move posts-container right before article 2009 $('.posts-container').insertBefore($('.d-article')); 2010 2011 $('body').addClass('downlevel'); 2012 2013 on_load_complete(); 2014 } 2015 2016 2017 function init_common() { 2018 2019 // jquery plugin to change element types 2020 (function($) { 2021 $.fn.changeElementType = function(newType) { 2022 var attrs = {}; 2023 2024 $.each(this[0].attributes, function(idx, attr) { 2025 attrs[attr.nodeName] = attr.nodeValue; 2026 }); 2027 2028 this.replaceWith(function() { 2029 return $("<" + newType + "/>", attrs).append($(this).contents()); 2030 }); 2031 }; 2032 })(jQuery); 2033 2034 // prevent underline for linked images 2035 $('a > img').parent().css({'border-bottom' : 'none'}); 2036 2037 // mark non-body figures created by knitr chunks as 100% width 2038 $('.layout-chunk').each(function(i, val) { 2039 var figures = $(this).find('img, .html-widget'); 2040 // ignore leaflet img layers (#106) 2041 figures = figures.filter(':not(img[class*="leaflet"])') 2042 if ($(this).attr('data-layout') !== "l-body") { 2043 figures.css('width', '100%'); 2044 } else { 2045 figures.css('max-width', '100%'); 2046 figures.filter("[width]").each(function(i, val) { 2047 var fig = $(this); 2048 fig.css('width', fig.attr('width') + 'px'); 2049 }); 2050 2051 } 2052 }); 2053 2054 // auto-append index.html to post-preview links in file: protocol 2055 // and in rstudio ide preview 2056 $('.post-preview').each(function(i, val) { 2057 if (window.location.protocol === "file:") 2058 $(this).attr('href', $(this).attr('href') + "index.html"); 2059 }); 2060 2061 // get rid of index.html references in header 2062 if (window.location.protocol !== "file:") { 2063 $('.distill-site-header a[href]').each(function(i,val) { 2064 $(this).attr('href', $(this).attr('href').replace(/^index[.]html/, "./")); 2065 }); 2066 } 2067 2068 // add class to pandoc style tables 2069 $('tr.header').parent('thead').parent('table').addClass('pandoc-table'); 2070 $('.kable-table').children('table').addClass('pandoc-table'); 2071 2072 // add figcaption style to table captions 2073 $('caption').parent('table').addClass("figcaption"); 2074 2075 // initialize posts list 2076 if (window.init_posts_list) 2077 window.init_posts_list(); 2078 2079 // implmement disqus comment link 2080 $('.disqus-comment-count').click(function() { 2081 window.headroom_prevent_pin = true; 2082 $('#disqus_thread').toggleClass('hidden'); 2083 if (!$('#disqus_thread').hasClass('hidden')) { 2084 var offset = $(this).offset(); 2085 $(window).resize(); 2086 $('html, body').animate({ 2087 scrollTop: offset.top - 35 2088 }); 2089 } 2090 }); 2091 } 2092 2093 document.addEventListener('DOMContentLoaded', function() { 2094 if (is_downlevel_browser()) 2095 init_downlevel(); 2096 else 2097 window.addEventListener('WebComponentsReady', init_distill); 2098 }); 2099 2100 </script>
2100 2101 2102 <!--/radix_placeholder_distill--> 2103
2103<script src="site_libs/header-attrs-2.30/header-attrs.js"></script>
2103 2104
2104<script src="site_libs/popper-2.6.0/popper.min.js"></script>
2104 2105 <link href="site_libs/tippy-6.2.7/tippy.css" rel="stylesheet" /> 2106 <link href="site_libs/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" /> 2107
2107<script src="site_libs/tippy-6.2.7/tippy.umd.min.js"></script>
2107 2108
2108<script src="site_libs/anchor-4.2.2/anchor.min.js"></script>
2108 2109
2109<script src="site_libs/bowser-1.9.3/bowser.min.js"></script>
2109 2110
2110<script src="site_libs/webcomponents-2.0.0/webcomponents.js"></script>
2110 2111
2111<script src="site_libs/distill-2.2.21/template.v2.js"></script>
2111 2112 <!--radix_placeholder_site_in_header--> 2113 <style type="text/css"> 2114 .distill-site-nav { 2115 color: rgba(255, 255, 255, 0.8); 2116 background-color: #2f5597; 2117 font-size: 15px; 2118 font-weight: 300; 2119 } 2120 .link-noborder { 2121 border: none; 2122 } 2123 .color-twitter { 2124 color: #1da1f2; 2125 } 2126 .color-bluesky { 2127 color: #0085ff; 2128 } 2129 .color-note { 2130 color: #41C9B4; 2131 } 2132 .font-size-fa{ 2133 font-size: 2em; 2134 } 2135 </style> 2136 <!--/radix_placeholder_site_in_header--> 2137 2138 <link rel="stylesheet" href="styles.css" type="text/css"/> 2139 2140</head> 2141 2142<body> 2143 2144<!--radix_placeholder_front_matter--> 2145
2146<script id="distill-front-matter" type="text/json"> 2147{"title":"Yuta Kanzawa, Data Scientist","description":"Hello! I'm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction.","authors":[]} 2148</script>
2148 2149 2150<!--/radix_placeholder_front_matter--> 2151<!--radix_placeholder_navigation_before_body--> 2152<header class="header header--fixed" role="banner"> 2153<nav class="distill-site-nav distill-site-header"> 2154<div class="nav-left"> 2155<a href="index.html" class="title">Yuta Kanzawa, Data Scientist</a> 2156</div> 2157<div class="nav-right"> 2158<a href="index.html">Home</a> 2159<a href="about.html">About</a> 2160<a href="links.html">Links</a> 2161<a href="https://github.com/ytknzw" aria-label="GitHub"> 2162<i class="fa fa-github" aria-hidden="true"></i> 2163</a> 2164<a href="https://twitter.com/yutakanzawa" aria-label="Twitter"> 2165<i class="fa fa-twitter" aria-hidden="true"></i> 2166</a> 2167<a href="https://bsky.app/profile/yutakanzawa.bsky.social" aria-label="Bluesky"> 2168<i class="fa fa-brands fa-bluesky" aria-hidden="true"></i> 2169</a> 2170<a href="javascript:void(0);" class="nav-toggle">☰</a> 2171</div> 2172</nav> 2173</header> 2174<!--/radix_placeholder_navigation_before_body--> 2175<!--radix_placeholder_site_before_body--> 2176<!--/radix_placeholder_site_before_body--> 2177 2178<div class="d-title"> 2179<h1>Yuta Kanzawa, Data Scientist</h1> 2180 2181<!--radix_placeholder_categories--> 2182<!--/radix_placeholder_categories--> 2183<p><p>Hello! Iâm a data scientist based in Tokyo working on applied machine learning, business intelligence and data visualisation. Always under construction.</p></p> 2184</div> 2185 2186 2187<div class="d-article"> 2188<div class="layout-chunk" data-layout="l-body"> 2189<style type="text/css"> 2190script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" 2191</style> 2192</div> 2193<div class="layout-chunk" data-layout="l-body">
2194<script> 2195 $(document).ready(function() { 2196 $('body').prepend('<div class=\"zoomDiv\"><img src=\"\" class=\"zoomImg\"></div>'); 2197 // onClick function for all plots (img's) 2198 $('img:not(.zoomImg)').click(function() { 2199 $('.zoomImg').attr('src', $(this).attr('src')).css({width: '100%'}); 2200 $('.zoomDiv').css({opacity: '1', width: 'auto', border: '1px solid white', borderRadius: '5px', position: 'fixed', top: '55%', left: '50%', marginRight: '-50%', transform: 'translate(-50%, -50%)', boxShadow: '0px 0px 50px #888888', zIndex: '50', overflow: 'auto', maxHeight: '90%'}); 2201 }); 2202 // onClick function for zoomImg 2203 $('img.zoomImg').click(function() { 2204 $('.zoomDiv').css({opacity: '0', width: '0%'}); 2205 }); 2206 }); 2207</script>
2207 2208</div> 2209<h2 id="data-visualisations">Data Visualisations</h2> 2210<div class="layout-chunk" data-layout="l-body"> 2211<p><img src="images/BF_1951_2021.png" alt="" width="6129" /></p> 2212</div> 2213<div class="layout-chunk" data-layout="l-body"> 2214<p><img src="images/medal_share_olympic_hosts_1992_2021.png" alt="" width="80%" /></p> 2215</div> 2216<div class="layout-chunk" data-layout="l-body"> 2217<p><img src="images/sommelier_gender_parity_in_Japan_2013_2020.png" alt="" width="50%" /><img src="images/tokyo_1875_2021_avg.png" alt="" width="50%" /></p> 2218</div> 2219<div class="layout-chunk" data-layout="l-body"> 2220<p><img src="images/sparklingwine_sankey.png" alt="" width="50%" /><img src="images/wineries_in_japan_2019.png" alt="" width="50%" /></p> 2221</div> 2222<div class="layout-chunk" data-layout="l-body"> 2223<p><img src="images/around_tokyo.png" alt="" width="50%" /><img src="images/foodwaste_sankey.png" alt="" width="50%" /></p> 2224</div> 2225<div class="layout-chunk" data-layout="l-body"> 2226<p><img src="images/eraname_reiwa_filled.png" alt="" width="30%" /><img src="images/pyhack_history_130.png" alt="" width="70%" /></p> 2227</div> 2228<h2 id="data-analyses">Data Analyses</h2> 2229<ul> 2230<li><a href="http://web.archive.org/web/20210129183831/https://www.covid19analytics.org/post/toilet-paper-situations-in-the-world">Toilet paper situations in the world</a> (Global Data Science Project for COVID-19, published on 18th May 2020, updated in June 2020; a snapshot stored by the Internet Archive)</li> 2231<li><a href="Wagner2Vek_Meistersinger.html">Wagner2Vek: Die Meistersinger von Nürnberg</a> (July 2019)</li> 2232<li><a href="Pyhack100thAniv.html">ãã¼ã¿ã§æ¯ãè¿ã Python mini-Hack-a-thon 100åã®æ´å²</a> (June - July 2019)</li> 2233</ul> 2234<h2 id="oss">OSS</h2> 2235<ul> 2236<li><a href="https://github.com/optuna/optuna/pull/1756">Matplotlib backend implementation for Optuna visualisation functions</a> (August 2020 - Now)</li> 2237<li><a href="https://qiita.com/yutakanzawa/items/89f313f4f26a3abc398e">Japanese translation</a> of <a href="https://www.fast.ai/2020/03/09/coronavirus/">a fast.ai article âCovid-19, your community, and you â a data science perspectiveâ</a> (Published on 16th March 2020, updated on 19th March 2020)</li> 2238<li><a href="https://stanford.edu/~shervine/l/ja/teaching/">Japanese translation of Stanford Cheat Sheets for ML, DL, Statistics</a> (with <a href="https://www.mlt.ai">MLT</a> members, August - October 2019)</li> 2239</ul> 2240<h2 id="talks">Talks</h2> 2241<h3 id="r">R</h3> 2242<ul> 2243<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿ãã³ããªã³ã°_TokyoR_20260418.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿ãã³ããªã³ã°<br>BeginneR Session: Data Handling 101 (Japanese)</a> (Tokyo.R, 18th April 2026)</li> 2244<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_R&RStudioå ¥é_TokyoR_20250621.pdf">åå¿è ã»ãã·ã§ã³ï¼R & RStudioå ¥é<br>BeginneR Session: R & RStudio 101 (Japanese)</a> (Tokyo.R, 21st June 2025)</li> 2245<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿ãã³ããªã³ã°_TokyoR_20250621.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿ãã³ããªã³ã°<br>BeginneR Session: Data Handling 101 (Japanese)</a> (Tokyo.R, 21st June 2025)</li> 2246<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿å¯è¦å_TokyoR_20250621.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿å¯è¦å<br>BeginneR Session: Data Visualisation 101 (Japanese)</a> (Tokyo.R, 21st June 2025)</li> 2247<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿åæã®é²ãæ¹_TokyoR_20250426.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿åæã®é²ãæ¹<br>BeginneR Session: Data Analytics 101 (Japanese)</a> (Tokyo.R, 26th April 2025)</li> 2248<li><a href="TokyoR/KanazawaRã¨KanzawaR_KanazawaR_20241123.pdf">Kanazawa.Rã¨Kanzawa.R<br>Kanazawa.R & Kanzawa.R (Japanese)</a> (Kanazawa.R, 23rd November 2024)</li> 2249<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿å¯è¦å_TokyoR_20240420.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿å¯è¦å<br>BeginneR Session: Data Visualisation (Japanese)</a> (Tokyo.R, 20th April 2024)</li> 2250<li><a href="TokyoR/ggplot2ã®ã¢ããã¼ã·ã§ã³ææ³_TokyoR_20240224.pdf">ggplot2ã®ã¢ããã¼ã·ã§ã³ææ³<br>Art of Annotation in ggplot2 (Japanese)</a> (Tokyo.R, 24th February 2024)</li> 2251<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿ãµã¤ã¨ã³ã¹ã®ããã®ãªã¼ããã«ã³ã¼ãã®ã¹ã¹ã¡_TokyoR_20230902.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿ãµã¤ã¨ã³ã¹ã®ããã®ãªã¼ããã«ã³ã¼ãã®ã¹ã¹ã¡<br>BeginneR Session: Readable Code for Data Science (Japanese)</a> (Tokyo.R, 2nd September 2023)</li> 2252<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_çµ±è¨å¦ï¼åï¼å ¥é_TokyoR_20230422.pdf">åå¿è ã»ãã·ã§ã³ï¼çµ±è¨å¦ï¼åï¼å ¥é<br>BeginneR Session: Statistics 101 (Re) (Japanese)</a> (Tokyo.R, 22nd April 2023)</li> 2253<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_R&RStudioå ¥é_TokyoR_20221022.pdf">åå¿è ã»ãã·ã§ã³ï¼R & RStudioå ¥é<br>BeginneR Session: R & RStudio 101 (Japanese)</a> (Tokyo.R, 22nd October 2022)</li> 2254<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿å¯è¦å_TokyoR_20220917.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿å¯è¦å<br>BeginneR Session: Data Visualisation (Japanese)</a> (Tokyo.R, 17th September 2022)</li> 2255<li><a href="TokyoR/ã«ã©ã¼ã¦ããã¼ãµã«ãã¶ã¤ã³å ¥é_TokyoR_20210123.pdf">ã«ã©ã¼ã¦ããã¼ãµã«ãã¶ã¤ã³å ¥é<br>Colour Universal Design 101 (Japanese)</a> (Tokyo.R, 23rd January 2021)</li> 2256<li><a href="TokyoR/æ¥æ¬ã®å¹´å¹³åæ°æ¸©å³ãä½ã£ã¦ã¿ã話_JapanR_2020_20201205.pdf">æ¥æ¬ã®å¹´å¹³åæ°æ¸©å³ãä½ã£ã¦ã¿ã話</a> (Japan.R, 5th December 2020)</li> 2257<li><a href="TokyoR/åå¿è ã»ãã·ã§ã³_ãã¼ã¿å¯è¦å_TokyoR_20200801.pdf">åå¿è ã»ãã·ã§ã³ï¼ãã¼ã¿å¯è¦å<br>BeginneR Session: Data Visualisation (Japanese)</a> (Tokyo.R, 1st August 2020)</li> 2258<li><a href="TokyoR/æ¥æ¬ã®æ°è±¡è¦³æ¸¬ãã¼ã¿ã®ï¼ãªã¼ãã³ãªããã§ãªã¼ãã³ã§ãªãï¼è©±_TokyoR_20200627.pdf">æ¥æ¬ã®æ°è±¡è¦³æ¸¬ãã¼ã¿ã®ï¼ãªã¼ãã³ãªããã§ãªã¼ãã³ã§ãªãï¼è©±</a> (Tokyo.R, 27th June 2020)</li> 2259<li><a href="TokyoR/å½åæ°å¤æ å ±APIã®ã¹ã¹ã¡_TokyoR_20200404.pdf">å½åæ°å¤æ å ±APIã®ã¹ã¹ã¡</a> (Tokyo.R, 4th April 2020)</li> 2260<li><a href="TokyoR/Tidyverseï¼åï¼å ¥é_JapanR_2019_20191207.pdf">tidyverseï¼åï¼å ¥é<br>(Re-)Introduction to tidyverse (Japanese)</a> (Japan.R, 7th December 2019)</li> 2261<li><a href="TokyoR/ãã¤ãã®PyConã§Rï¼ã¨Pythonï¼ã®è©±ããã¦ãã話_TokyoR_82_20191026.pdf">ãã¤ãã®PyConã§Rï¼ã¨Pythonï¼ã®è©±ããã¦ãã話</a> (Tokyo.R, 26th October 2019)</li> 2262</ul> 2263<h3 id="python">Python</h3> 2264<ul> 2265<li>ãããã¨ãã¼ã¿ãµã¤ã¨ã³ã¹ã¨ããªãï¼ãã¾ã¾ã§ã¨ãããã<br>Me, Data Science, and You: Past and Future (Japanese) (<a href="https://startpython.connpass.com/event/270311/">ã¿ããªã®Pythonåå¼·ä¼</a>, 19th January 2023) 2266<ul> 2267<li><a href="StaPy/ãããã¨ãã¼ã¿ãµã¤ã¨ã³ã¹ã¨ããªã_ãã¾ã¾ã§ã¨ãããã_ã¿ããªã®Pythonåå¼·ä¼_20230119.pdf">Slides</a></li> 2268<li><a href="https://youtu.be/dLkJura4TYc">Video</a></li> 2269<li><a href="https://twitter.com/info_stapy/status/1616052911259398145">Q&A (rest)</a></li> 2270</ul></li> 2271<li><a href="PyCon/PyCon_mini_Hiroshima/ãã¼ã¿ãµã¤ã¨ã³ã¹ã®ããã®ãªã¼ããã«ã³ã¼ãã®ã¹ã¹ã¡_PyCon_mini_Hiroshima_20201010.pdf">ãã¼ã¿ãµã¤ã¨ã³ã¹ã®ããã®ãªã¼ããã«ã³ã¼ãã®ã¹ã¹ã¡<br>Readable Code for Data Science (Japanese)</a> (PyCon mini Hiroshima, 10th October 2020)</li> 2272<li><a href="misc/Pythonã§ggplotã£ã¦ã¿ã話_Pythonããããèªç¿å®¤_20200815.pdf">Pythonã§ggplotã£ã¦ã¿ã話</a> (Pythonããããèªç¿å®¤, 15th August 2020)</li> 2273<li><a href="PyCon/Python_Charity_Talks_in_Japan/Pythonã§è¦ãç§ã®è¡åå¤å®¹_âCOVID-19åå¾ã®æ¯è¼â_Python_Charity_Talks_in_Japan_20200704.pdf">Pythonã§è¦ãç§ã®è¡åå¤å®¹ âCOVID-19åå¾ã®æ¯è¼â<br>Evaluate Personal Behavioural Change with Python: Comparison before and after COVID-19 Breakout (Japanese)</a> (Python Charity Talks in Japan, 4th July 2020)</li> 2274<li><a href="PyData/ãµã³ãã¼ãã¤ã¢ã°ã©ã ã®ã¹ã¹ã¡_PyData_Fukuoka_20200607.pdf">ãµã³ãã¼ãã¤ã¢ã°ã©ã ã®ã¹ã¹ã¡</a> (PyData Fukuoka, 7th June 2020)</li> 2275<li><a href="PyConDE2019/Friend_or_Foe_Comparison_of_R_&_Python_in_Data_Wrangling_&_Visualisation_PyConDE_2019Oct.pdf">Friend or Foe: Comparison of R & Python in Data Wrangling & Visualisation (English)</a> (PyCon DE & PyData Berlin 2019, 11th October 2019)</li> 2276</ul> 2277<h3 id="misc">Misc</h3> 2278<ul> 2279<li><a href="misc/ãªãã©ã®ã話_BPLL_20200616_å ¬éç¨.pdf">ãªãã©ã®ã話<br>An Opera Talk (Japanese)</a> (BeProud Learning Lunch, 16th June 2020)</li> 2280<li><a href="MLT/AI_Open_Education_Stanford_Deep_Learning_Cheat_Sheets_in_Japanese_MLT_CodeChrysalis_20191030.pdf">AI Open Education: Stanford Deep Learning Cheat Sheets in Japanese (English)</a> (Code Chrysalis x Machine Learning Tokyo MiniConf, 30th October 2019)</li> 2281</ul>
2282<h3 id="archive">Archive</h3> 2283<p>To be updated.</p> 2284<h2 id="book">Book</h2> 2285<ul> 2286<li><a href="https://book.impress.co.jp/books/1122101021">Pythonãã¼ã¿åæå®è·µãã³ããã㯠å®åã§ä½¿ãããã¼ã¿å å·¥ã®ãã¯ããã¯<br>Practical Handbook of Data Analysis in Python</a><img src="https://img.ips.co.jp/ij/22/1122101021/1122101021-520x.jpg" /></li> 2287</ul> 2288<div class="sourceCode" id="cb1"><pre class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div> 2289<!--radix_placeholder_article_footer--> 2290<!--/radix_placeholder_article_footer--> 2291</div> 2292 2293<div class="d-appendix"> 2294</div> 2295 2296 2297<!--radix_placeholder_site_after_body--> 2298<!--/radix_placeholder_site_after_body--> 2299<!--radix_placeholder_appendices--> 2300<div class="appendix-bottom"> 2301<h3 id="updates-and-corrections">Corrections</h3> 2302<p>If you see mistakes or want to suggest changes, please <a href="https://github.com/ytknzw/ytknzw.github.io/issues/new">create an issue</a> on the source repository.</p> 2303</div> 2304<!--/radix_placeholder_appendices--> 2305<!--radix_placeholder_navigation_after_body--> 2306<div class="distill-site-nav distill-site-footer"> 2307<p>© Copyright <a href="https://ytknzw.github.io/">Yuta Kanzawa</a>. All rights reserved.</p> 2308<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons Licence" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />This 2309work is licenced under a 2310<a rel="licence" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative 2311Commons Attribution-NonCommercial-NoDerivatives 4.0 International 2312Licence</a>.</p> 2313</div> 2314<!--/radix_placeholder_navigation_after_body--> 2315 2316 2317</body> 2318 2319</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.