{"id":437822,"date":"2024-01-26T06:31:16","date_gmt":"2024-01-26T05:31:16","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=437822"},"modified":"2024-01-26T06:56:01","modified_gmt":"2024-01-26T05:56:01","slug":"kandy-the-new-kotlin-plotting-library-by-jetbrains","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2024\/01\/kandy-the-new-kotlin-plotting-library-by-jetbrains\/","title":{"rendered":"Kandy: JetBrains\uc758 \uc0c8\ub85c\uc6b4 Kotlin \uc2dc\uac01\ud654 \ub77c\uc774\ube0c\ub7ec\ub9ac"},"content":{"rendered":"<p>JetBrains\uc758 \uc0c8\ub85c\uc6b4 Kotlin \ud50c\ub86f \uc2dc\uac01\ud654 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 Kandy\ub97c \uc18c\uac1c\ud558\uac8c \ub418\uc5b4 \uae30\uc069\ub2c8\ub2e4. \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \uc885\ub958\uc758 \ucc28\ud2b8\ub97c \uc0dd\uc131\ud558\uae30 \uc704\ud55c \uc0c8\ub86d\uace0 \uac15\ub825\ud55c DSL\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc774\uc81c \uccab \uacf5\uac1c \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\ud574 \ubcf4\uc2dc\uace0 \ud53c\ub4dc\ubc31\uacfc \uc758\uacac\uc744 \uc800\ud76c\uc5d0\uac8c \uacf5\uc720\ud574 \uc8fc\uc138\uc694.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Kandy \ubb38\uc11c\" href=\"https:\/\/kotlin.github.io\/kandy\/welcome.html\" target=\"_blank\" rel=\"noopener\">Kandy \ubb38\uc11c<\/a><\/p>\n<h2 class=\"wp-block-heading\">\uc5b4\ub5a4 \ubaa8\uc591\uacfc \ub290\ub08c\uc778\uac00\uc694?<\/h2>\n<pre class=\"EnlighterJSRAW\">df.plot {\n   points {\n       x(xShot) { axis.name = \"Horizontal Position (meters)\" }\n       y(yShot) { axis.name = \"Vertical Position (meters)\" }\n       size = 8.5\n       color(outcome) {\n           scale = categorical(\n               true to Color.GREEN, false to Color.RED\n           )\n           legend {\n               name = \"Outcome\"\n               breaksLabeled(true to \"Goal\", false to \"Miss\")\n           }\n       }\n   }\n   layout.title = \"Penalty Shot Outcomes Analysis\"\n}<\/pre>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-418436\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/12\/example.png\" alt=\"\" width=\"1474\" height=\"968\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Kandy\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uc774\uc720<\/h2>\n<p>\ub370\uc774\ud130 \ubd84\uc11d\uc6a9 Kotlin\uc758 \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc740 \ube60\ub974\uac8c \uc131\uc7a5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc9c0\uae08\uae4c\uc9c0\ub294 \ud37c\uc990\uc744 \uc644\uc131\ud558\ub294 \uc911\uc694\ud55c \uc870\uac01\uc778 \ud50c\ub86f \uc0dd\uc131 \ub3c4\uad6c\uac00 \ube60\uc838 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c JetBrains\ub294 <a href=\"https:\/\/kotlin.github.io\/dataframe\/overview.html\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/kotlin.github.io\/dataframe\/overview.html\">Kotlin DataFrame<\/a>, <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16340-kotlin-notebook\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/plugins.jetbrains.com\/plugin\/16340-kotlin-notebook\">Kotlin Notebook<\/a> \ub4f1\uc758 \ub2e4\ub978 \ub3c4\uad6c\uc640 \uae34\ubc00\ud558\uac8c \ud1b5\ud569\ub418\uace0, \uac04\ub2e8\ud558\uace0 \uad00\uc6a9\uc801\uc774\uba70 \uc77d\uae30 \uc27d\uace0 \ud0c0\uc785 \uc548\uc815\uc801\uc778 \ud50c\ub86f \uc0dd\uc131\uc6a9 DSL\uc778 Kandy\ub97c \ub9cc\ub4e4\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Kotlin Notebook\uc5d0\uc11c \uc0ac\uc6a9<\/h2>\n<p>Notebook\uc5d0\uc11c Kandy \uc0ac\uc6a9\ud558\ub824\uba74 \uac04\ub2e8\ud788 <code>%use kandy<\/code>\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uadf8\ub7ec\uba74 Kandy\uc758 \ucd5c\uc2e0 \uc548\uc815\ud654 \ubc84\uc804\uc774 \uc790\ub3d9\uc73c\ub85c \ub85c\ub4dc\ub418\uace0 \ud544\uc694\ud55c \ubaa8\ub4e0 \uac00\uc838\uc624\uae30\uc640 \ud50c\ub86f \ub80c\ub354\ub9c1\uc774 \ucd94\uac00\ub429\ub2c8\ub2e4. \ucc28\ud2b8\ub294 Swing\uc744 \uc0ac\uc6a9\ud558\uc5ec Notebook \uc140 \ucd9c\ub825\uc5d0\uc11c \uc9c1\uc811 \ub80c\ub354\ub9c1\ub418\uba70 \ub300\ud654\ud615\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4. \ud50c\ub86f \uc694\uc18c \uc704\ub85c \ub9c8\uc6b0\uc2a4\ub97c \uac00\uc838\uac00\uba74 \ud234\ud301\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud50c\ub86f\uc740 \uc790\ub3d9 \ud14c\ub9c8\ub85c \ud45c\uc2dc\ub429\ub2c8\ub2e4. \ub610\ud55c \ucd9c\ub825\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud615\uc2dd \uc911 \ud558\ub098\ub85c \uc800\uc7a5\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4(output(\ucd9c\ub825) \uba54\ub274 \uc0ac\uc6a9).<\/p>\n<figure class=\"wp-block-video\"><video src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/12\/ktnb_cap.mp4\" autoplay=\"autoplay\" loop=\"loop\" controls=\"controls\" width=\"300\" height=\"150\"><\/video><\/figure>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/kotlin.github.io\/kandy\/kandy-in-kotlin-notebook.html\" target=\"_blank\" rel=\"noopener\">Kotlin Notebook \uc2dc\uc791\ud558\uae30<\/a><\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Kotlin DataFrame \uc0ac\uc6a9<\/h2>\n<p>Kandy\ub294 \ub370\uc774\ud130\ub97c \uc2dc\uac01\ud654\ud558\ub294 \ube60\ub974\uace0 \uc26c\uc6b4 \ubc29\ubc95\uc778 <code>DataFrame<\/code>\uc5d0 \ub300\ud55c <code>.plot {}<\/code> \ud655\uc7a5\uc744 \ucd94\uac00\ud558\uc5ec DataFrame \uc6cc\ud06c\ud50c\ub85c\ub97c \ubc14\ub85c \uc5f0\uc7a5\ub418\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ub610\ud55c, Kotlin Notebook\uc5d0\uc11c \uc791\uc5c5\ud558\uac70\ub098 IntelliJ IDEA\uc758 DataFrame \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud560 \ub54c \uc790\ub3d9 \uc0dd\uc131\ub41c <code>DataFrame<\/code> \ud655\uc7a5 \ud504\ub85c\ud37c\ud2f0 \uc5f4\uc744 \uc0ac\uc6a9\ud558\uba74 \ud50c\ub86f \uc0dd\uc131 \uc2dc \ud0c0\uc785 \uc548\uc815\uc131\uc744 \ub354\uc6b1 \ub192\uc774\uace0 \ucca0\uc790\uac00 \ud2c0\ub9b0 \uc5f4 \uc774\ub984\uc744 \ubc29\uc9c0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-418585\" style=\"aspect-ratio: 2.119815668202765; width: 840px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/12\/df_1.png\" alt=\"\" width=\"1840\" height=\"868\" \/><\/figure>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-418596\" style=\"aspect-ratio: 1.5156507413509062; width: 840px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/12\/df_2.png\" alt=\"\" width=\"1840\" height=\"1214\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Kandy\ub294 \uc5b4\ub5a4 \uc885\ub958\uc758 \ucc28\ud2b8\ub97c \uc9c0\uc6d0\ud558\ub098\uc694?<\/h2>\n<p>Kandy\ub294 \uac00\uc7a5 \uc778\uae30 \uc788\ub294 \ucc28\ud2b8\ub97c \ud3ec\ud568\ud558\uc5ec \ub2e4\uc591\ud55c \ucc28\ud2b8\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/line.html\" target=\"_blank\" rel=\"noopener\">\ub77c\uc778 \ucc28\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/points.html\" target=\"_blank\" rel=\"noopener\">\ubd84\uc0b0\ud615 \ucc28\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/bars.html\" target=\"_blank\" rel=\"noopener\">\ub9c9\ub300 \ucc28\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/histogram.html\" target=\"_blank\" rel=\"noopener\">\ud788\uc2a4\ud1a0\uadf8\ub7a8<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/boxplot.html\" target=\"_blank\" rel=\"noopener\">\ubc15\uc2a4 \ud50c\ub86f<\/a><\/li>\n<\/ul>\n<p>\uc774\uac8c \uc804\ubd80\uac00 \uc544\ub2d9\ub2c8\ub2e4! \uc608\uc2dc \uac24\ub7ec\ub9ac\uc5d0\uc11c Kandy \ud50c\ub86f\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/kotlin.github.io\/kandy\/examples.html\" target=\"_blank\" rel=\"noopener\">\uc608\uc2dc \uac24\ub7ec\ub9ac<\/a><\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">\uc9c0\uae08 \uc2dc\uc791\ud574 \ubcf4\uae30<\/h2>\n<p>\ube68\ub9ac Kandy\ub97c \uacbd\ud5d8\ud574\ubcf4\uace0 \uc2f6\ub098\uc694? \ub2e4\uc74c\uc740 \ube60\ub978 \uc2dc\uc791 \ubc0f \uc608\uc2dc \ub9c1\ud06c\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/kotlin.github.io\/kandy\/welcome.html\" target=\"_blank\" rel=\"noopener\">\ubb38\uc11c<\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/quickstart.html\" target=\"_blank\" rel=\"noopener\">\ube60\ub978 \uc2dc\uc791<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/getting-started.html\" target=\"_blank\" rel=\"noopener\">\uc2dc\uc791\ud558\uae30<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/user-guide.html\" target=\"_blank\" rel=\"noopener\">\uc0ac\uc6a9 \uc124\uba85\uc11c<\/a><\/li>\n<li><a href=\"https:\/\/kotlin.github.io\/kandy\/examples.html\" target=\"_blank\" rel=\"noopener\">\uc608\uc2dc \uac24\ub7ec\ub9ac<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/github.com\/Kotlin\/kandy\" target=\"_blank\" rel=\"noopener\">GitHub \uc800\uc7a5\uc18c<\/a><\/p>\n<p>\ubc84\uadf8\ub97c \ubc1c\uacac\ud558\uc168\ub098\uc694? \uc544\ub2c8\uba74 \uc6d0\ud558\ub294 \uc885\ub958\uc758 \ucc28\ud2b8\ub098 \uae30\ub2a5\uc744 \ucc3e\uc9c0 \ubabb\ud588\uac70\ub098, \ub2e4\ub978 \ubb38\uc81c\ub098 \uc81c\uc548 \uc0ac\ud56d\uc774 \uc788\ub098\uc694? GitHub <a href=\"https:\/\/github.com\/Kotlin\/kandy\/issues\" target=\"_blank\" rel=\"noopener\">\uc774\uc288 \ud398\uc774\uc9c0<\/a>\ub97c \ubc29\ubb38\ud558\uc5ec \uc81c\uc548\ud558\ub294 \uac1c\uc120\uc810\uc744 \uc54c\ub824\uc8fc\uc138\uc694.<\/p>\n<p>\uc774\uc640 \ud568\uaed8 Kotlin Slack\uc758 <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/datascience\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/slack-chats.kotlinlang.org\/c\/datascience\">#datascience<\/a> \ucc44\ub110\uc5d0 \uc5ec\ub7ec\ubd84\uc758 \ucc38\uc5ec\ub97c \ucd08\ub300\ud569\ub2c8\ub2e4(<a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0\uc11c \ucd08\ub300 \ubc1b\uae30). \uc9c8\ubb38\ud558\uace0 \ud1a0\ub860\uc5d0 \ucc38\uc5ec\ud558\uac70\ub098 \uc0c8\ub85c\uc6b4 \ub9b4\ub9ac\uc2a4\uc5d0 \uad00\ud55c \uc54c\ub9bc\uc744 \ubc1b\uc544\ubcf4\uc138\uc694.<\/p>\n<p><em>Kotlin\uacfc #use_kandy\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694!<\/em><\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":419066,"comment_status":"closed","ping_status":"closed","template":"","categories":[909],"tags":[8348,7144,565],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/437822"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=437822"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/437822\/revisions"}],"predecessor-version":[{"id":563328,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/437822\/revisions\/563328"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/419066"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=437822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=437822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=437822"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=437822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}