{"id":8300,"date":"2025-02-17T11:55:49","date_gmt":"2025-02-17T02:55:49","guid":{"rendered":"https:\/\/fastcoding.jp\/blog\/?p=8300"},"modified":"2025-02-17T15:49:11","modified_gmt":"2025-02-17T06:49:11","slug":"javascript-line-graph-plugins","status":"publish","type":"post","link":"https:\/\/fastcoding.jp\/blog\/all\/frontend\/javascript-line-graph-plugins\/","title":{"rendered":"\u3010\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5c4b\u306e\u30cd\u30bf\u5e33\u3011\u30c7\u30fc\u30bf\u53ef\u8996\u5316\u306f\u3053\u308c\u3067\u6c7a\u307e\u308a\uff01\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u4f5c\u6210\u306b\u5f79\u7acb\u3064JavaScript\u30e9\u30a4\u30d6\u30e9\u30ea5\u9078"},"content":{"rendered":"<div class=\"the_content\">\n<p>\u30c7\u30fc\u30bf\u3092\u308f\u304b\u308a\u3084\u3059\u304f\u4f1d\u3048\u308b\u624b\u6bb5\u3068\u3057\u3066\u3001\u30b0\u30e9\u30d5\u306f\u3068\u3066\u3082\u4fbf\u5229\u3067\u3059\u3088\u306d\u3002\u672c\u30b7\u30ea\u30fc\u30ba\u3067\u306f\u3001Web\u30b5\u30a4\u30c8\u3067\u3088\u304f\u4f7f\u308f\u308c\u308b\u30b0\u30e9\u30d5\u306e\u7a2e\u985e\u3068\u3001\u305d\u308c\u3092\u7c21\u5358\u306b\u8868\u793a\u3067\u304d\u308bJavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u307e\u3067\u306b\u3001\u5272\u5408\u3092\u793a\u3059\u306e\u306b\u9069\u3057\u305f<a href=\"https:\/\/fastcoding.jp\/blog\/all\/frontend\/javascript-circle-graph-plugins\/\" title=\"\">\u5186\u30b0\u30e9\u30d5<\/a>\u3001\u9805\u76ee\u3054\u3068\u306e\u6570\u5024\u3092\u6bd4\u8f03\u3057\u3084\u3059\u3044<a href=\"https:\/\/fastcoding.jp\/blog\/all\/frontend\/javascript-bar-graph-plugins\/\" title=\"\">\u68d2\u30b0\u30e9\u30d5<\/a>\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u305d\u3057\u30663\u56de\u76ee\u3068\u306a\u308b\u4eca\u56de\u306f\u3001\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u3002\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306f\u3001\u58f2\u4e0a\u3084\u30a2\u30af\u30bb\u30b9\u6570\u306e\u5909\u5316\u3001\u6c17\u6e29\u306e\u63a8\u79fb\u306a\u3069\u3001\u6642\u9593\u306e\u7d4c\u904e\u3068\u3068\u3082\u306b\u5909\u5316\u3059\u308b\u30c7\u30fc\u30bf\u3092\u8868\u73fe\u3059\u308b\u306e\u306b\u6700\u9069\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u7279\u5fb4\u3084\u6d3b\u7528\u30b7\u30fc\u30f3\u3092\u7d39\u4ecb\u3057\u3001Web\u4e0a\u3067\u7c21\u5358\u306b\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3067\u304d\u308bJavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u4eba\u306b\u5411\u3051\u3066\u66f8\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Web\u30b5\u30a4\u30c8\u306b\u30b0\u30e9\u30d5\u3092\u53d6\u308a\u5165\u308c\u305f\u3044\u65b0\u4eba\u30a8\u30f3\u30b8\u30cb\u30a2<\/li>\n\n\n\n<li>\u4eca\u4f7f\u3063\u3066\u3044\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5225\u306e\u3082\u306e\u306b\u5909\u3048\u3088\u3046\u3068\u8003\u3048\u3066\u3044\u308b\u4e2d\u7d1a\u30a8\u30f3\u30b8\u30cb\u30a2<\/li>\n\n\n\n<li>\u30c7\u30b6\u30a4\u30f3\u306b\u3053\u3060\u308f\u3063\u305f\u30b0\u30e9\u30d5\u3092\u63a2\u3057\u3066\u3044\u308bWeb\u30c7\u30b6\u30a4\u30ca\u30fc<\/li>\n<\/ul>\n\n\n\n<p>\u300c\u3069\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3048\u3070\u3044\u3044\u306e\uff1f\u300d \u3068\u3044\u3046\u7591\u554f\u3092\u89e3\u6c7a\u3067\u304d\u308b\u3088\u3046\u3001\u305d\u308c\u305e\u308c\u306e\u7279\u9577\u3092\u6bd4\u8f03\u3057\u306a\u304c\u3089\u8aac\u660e\u3059\u308b\u306e\u3067\u3001\u305c\u3072\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u3068\u306f\uff1f<\/h2>\n\n\n\n<p>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306f\u3001\u30c7\u30fc\u30bf\u306e\u5909\u5316\u3092\u7dda\u3067\u3064\u306a\u3052\u3066\u8868\u73fe\u3059\u308b\u30b0\u30e9\u30d5\u306e\u4e00\u7a2e\u3067\u3059\u3002\u6642\u9593\u306e\u7d4c\u904e\u306b\u3088\u308b\u6570\u5024\u306e\u63a8\u79fb\u3084\u3001\u7570\u306a\u308b\u30ab\u30c6\u30b4\u30ea\u306b\u304a\u3051\u308b\u30c7\u30fc\u30bf\u306e\u5909\u52d5\u3092\u8996\u899a\u7684\u306b\u6349\u3048\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u304c\u5411\u3044\u3066\u3044\u308b\u6d3b\u7528\u4f8b<\/h3>\n\n\n\n<p>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u304c\u6d3b\u8e8d\u3059\u308b\u306e\u306f\u3001\u3053\u3093\u306a\u5834\u5408\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u306e\u53ef\u8996\u5316<\/strong><br>\u4f8b\uff1a\u58f2\u4e0a\u3084\u30a2\u30af\u30bb\u30b9\u6570\u306e\u63a8\u79fb\u3001\u6c17\u6e29\u306e\u5909\u52d5\u3001\u682a\u4fa1\u306e\u5909\u52d5\u306a\u3069\u3002<\/li>\n\n\n\n<li><strong>\u30c8\u30ec\u30f3\u30c9\u5206\u6790<\/strong><br>\u4f8b\uff1a\u5e74\u9593\u306e\u58f2\u4e0a\u6210\u9577\u7387\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u8a2a\u554f\u8005\u6570\u306e\u5897\u52a0\u50be\u5411\u3002<\/li>\n\n\n\n<li><strong>\u6bd4\u8f03\u5bfe\u8c61\u306e\u63a8\u79fb\u3092\u793a\u3059<\/strong><br>\u4f8b\uff1a\u8907\u6570\u306e\u5546\u54c1\u306e\u58f2\u4e0a\u63a8\u79fb\u3001\u7570\u306a\u308b\u90fd\u5e02\u306e\u6c17\u6e29\u5909\u5316\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u7a2e\u985e<\/h3>\n\n\n\n<p>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306b\u306f\u3001\u7528\u9014\u306b\u5fdc\u3058\u305f\u3055\u307e\u3056\u307e\u306a\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30b7\u30f3\u30d7\u30eb\u306a\u6298\u308c\u7dda\u30b0\u30e9\u30d5\uff1a<\/strong>\u57fa\u672c\u7684\u306a\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u3067\u3001\u30c7\u30fc\u30bf\u306e\u63a8\u79fb\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u8868\u73fe\u3002<\/li>\n\n\n\n<li><strong>\u7a4d\u307f\u4e0a\u3052\u6298\u308c\u7dda\u30b0\u30e9\u30d5\uff1a<\/strong>\u8907\u6570\u306e\u30c7\u30fc\u30bf\u3092\u7a4d\u307f\u4e0a\u3052\u3066\u3001\u5168\u4f53\u306e\u5909\u5316\u3092\u53ef\u8996\u5316\u3002<\/li>\n\n\n\n<li><strong>\u30b9\u30e0\u30fc\u30ba\u306a\u66f2\u7dda\u6298\u308c\u7dda\u30b0\u30e9\u30d5\uff1a<\/strong>\u6ed1\u3089\u304b\u306a\u66f2\u7dda\u3092\u7528\u3044\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u306e\u6d41\u308c\u3092\u3088\u308a\u8996\u899a\u7684\u306b\u8868\u73fe\u3002<\/li>\n\n\n\n<li><strong>\u30a8\u30ea\u30a2\u30c1\u30e3\u30fc\u30c8\uff08\u9762\u30b0\u30e9\u30d5\uff09\uff1a<\/strong>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u4e0b\u90e8\u3092\u5857\u308a\u3064\u3076\u3059\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u306e\u5206\u91cf\u611f\u3092\u5f37\u8abf\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u30e1\u30ea\u30c3\u30c8\u3068\u30c7\u30e1\u30ea\u30c3\u30c8<\/h3>\n\n\n\n<p><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u63a8\u79fb\u3092\u660e\u78ba\u306b\u8868\u73fe\u3067\u304d\u308b\uff1a<\/strong>\u6642\u9593\u306e\u7d4c\u904e\u306b\u4f34\u3046\u5909\u5316\u3092\u76f4\u611f\u7684\u306b\u7406\u89e3\u3057\u3084\u3059\u3044\u3002<\/li>\n\n\n\n<li><strong>\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u6bd4\u8f03\u3057\u3084\u3059\u3044\uff1a<\/strong>\u8907\u6570\u306e\u7dda\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u7570\u306a\u308b\u30c7\u30fc\u30bf\u306e\u52d5\u5411\u3092\u6bd4\u8f03\u53ef\u80fd\u3002<\/li>\n\n\n\n<li><strong>\u7d30\u304b\u3044\u5909\u52d5\u3082\u628a\u63e1\u3067\u304d\u308b\uff1a<\/strong>\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u304c\u591a\u3044\u5834\u5408\u3067\u3082\u3001\u6298\u308c\u7dda\u3092\u305f\u3069\u308b\u3053\u3068\u3067\u5909\u52d5\u306e\u6d41\u308c\u3092\u8ffd\u3044\u3084\u3059\u3044\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u304c\u5c11\u306a\u3044\u3068\u9069\u5207\u306b\u8868\u73fe\u3067\u304d\u306a\u3044\uff1a<\/strong><br>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306f\u30c7\u30fc\u30bf\u306e\u9023\u7d9a\u6027\u3092\u793a\u3059\u306e\u306b\u9069\u3057\u3066\u3044\u308b\u304c\u3001\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u304c\u5c11\u306a\u3044\u3068\u5909\u5316\u306e\u6d41\u308c\u304c\u4e0d\u660e\u77ad\u306b\u306a\u308a\u3001\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u5f37\u307f\u3092\u6d3b\u304b\u305b\u306a\u3044\u3053\u3068\u304c\u3042\u308b\u3002<\/li>\n\n\n\n<li><strong>\u5024\u306e\u5dee\u304c\u5927\u304d\u3059\u304e\u308b\u3068\u3001\u7d30\u304b\u3044\u5909\u52d5\u304c\u898b\u3048\u306b\u304f\u304f\u306a\u308b<\/strong>\uff1a<br>\u4f8b\u3048\u3070\u30011\u3064\u306e\u30c7\u30fc\u30bf\u304c1000\u3001\u4ed6\u306e\u30c7\u30fc\u30bf\u304c5\u308410\u306e\u3088\u3046\u306b\u6975\u7aef\u306a\u5024\u304c\u6df7\u3056\u308b\u3068\u3001\u30b9\u30b1\u30fc\u30eb\u306e\u95a2\u4fc2\u3067\u7d30\u304b\u3044\u5909\u52d5\u304c\u898b\u3048\u306b\u304f\u304f\u306a\u308b\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30fc\u30bf\u306e\u5bc6\u5ea6\u304c\u9ad8\u3059\u304e\u308b\u3068\u53ef\u8aad\u6027\u304c\u4f4e\u4e0b\u3059\u308b<\/strong>\uff1a<br>\u591a\u304f\u306e\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u3092\u30d7\u30ed\u30c3\u30c8\u3059\u308b\u3068\u3001\u7dda\u304c\u5bc6\u96c6\u3057\u3059\u304e\u3066\u3057\u307e\u3044\u3001\u8996\u8a8d\u6027\u304c\u60aa\u304f\u306a\u308b\u3053\u3068\u304c\u3042\u308b\u3002\u3053\u306e\u5834\u5408\u3001\u30b9\u30e0\u30fc\u30ba\u306a\u7dda\u3092\u4f7f\u3063\u305f\u308a\u3001\u30ba\u30fc\u30e0\u6a5f\u80fd\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3067\u304d\u308b\u304c\u3001\u8abf\u6574\u304c\u5fc5\u8981\u306b\u306a\u308b\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">JavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u9078\u3076\u969b\u306e\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/h2>\n\n\n\n<p>\u30b0\u30e9\u30d5\u3092Web\u30b5\u30a4\u30c8\u306b\u8868\u793a\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u6570\u591a\u304f\u3042\u308a\u307e\u3059\u304c\u3001\u9078\u3073\u65b9\u3092\u9593\u9055\u3048\u308b\u3068\u4f7f\u3044\u3065\u3089\u304b\u3063\u305f\u308a\u3001\u76ee\u7684\u306b\u5408\u308f\u306a\u304b\u3063\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u30e9\u30a4\u30d6\u30e9\u30ea\u9078\u5b9a\u306e\u969b\u306b\u306f\u4e0b\u8a186\u3064\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5c0e\u5165\u306e\u3057\u3084\u3059\u3055<\/strong><br>\u521d\u5fc3\u8005\u3067\u3082\u3059\u3050\u306b\u4f7f\u3048\u308b\u304b\u3069\u3046\u304b\u306f\u91cd\u8981\u3067\u3059\u3002CDN\u3092\u4f7f\u3063\u3066\u7c21\u5358\u306b\u8aad\u307f\u8fbc\u3081\u308b\u3082\u306e\u3084\u3001\u8a2d\u5b9a\u304c\u5c11\u306a\u304f\u3066\u3082\u52d5\u4f5c\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u9078\u3076\u3068\u3088\u3044\u3067\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u6027<\/strong><br>\u30c7\u30b6\u30a4\u30f3\u3084\u8272\u3001\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u306a\u3069\u3092\u67d4\u8edf\u306b\u5909\u66f4\u3067\u304d\u308b\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u30d6\u30e9\u30f3\u30c9\u3084\u30c7\u30b6\u30a4\u30f3\u30c6\u30fc\u30de\u306b\u5408\u308f\u305b\u305f\u8abf\u6574\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u6027\u306e\u9ad8\u3044\u3082\u306e\u304c\u304a\u3059\u3059\u3081\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc<\/strong><br>\u30b9\u30de\u30db\u3084\u30bf\u30d6\u30ec\u30c3\u30c8\u306a\u3069\u3001\u753b\u9762\u30b5\u30a4\u30ba\u304c\u7570\u306a\u308b\u30c7\u30d0\u30a4\u30b9\u3067\u3082\u304d\u308c\u3044\u306b\u8868\u793a\u3055\u308c\u308b\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3057\u3087\u3046\u3002\u7279\u306b\u3001\u30d3\u30b8\u30cd\u30b9\u30b5\u30a4\u30c8\u3067\u306f\u30e2\u30d0\u30a4\u30eb\u5bfe\u5fdc\u304c\u91cd\u8981\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/strong><br>\u8868\u73fe\u3059\u308b\u30b0\u30e9\u30d5\u306b\u3082\u3088\u308a\u307e\u3059\u304c\u3001\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u3001\u8868\u793a\u901f\u5ea6\u3084\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3082\u6c17\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7279\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3059\u308b\u7528\u9014\u3067\u306f\u3001\u8efd\u91cf\u3067\u9ad8\u901f\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u6c42\u3081\u3089\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b5\u30dd\u30fc\u30c8\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/strong><br>\u516c\u5f0f\u30b5\u30a4\u30c8\u3084GitHub\u3067\u306e\u30b5\u30dd\u30fc\u30c8\u72b6\u6cc1\u3084\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5145\u5b9f\u5ea6\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u4f7f\u3044\u65b9\u304c\u308f\u304b\u3089\u306a\u3044\u3068\u304d\u306b\u53c2\u8003\u306b\u306a\u308b\u60c5\u5831\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u306f\u91cd\u8981\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30e9\u30a4\u30bb\u30f3\u30b9\u3068\u5229\u7528\u6599<\/strong><br>\u5229\u7528\u898f\u7d04\u3084\u30e9\u30a4\u30bb\u30f3\u30b9\u5f62\u614b\u3082\u78ba\u8a8d\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002\u5546\u7528\u5229\u7528\u304c\u53ef\u80fd\u304b\u3069\u3046\u304b\u3001\u7121\u6599\u3067\u4f7f\u3048\u308b\u304b\u3001\u6709\u6599\u30d7\u30e9\u30f3\u304c\u5fc5\u8981\u304b\u306a\u3069\u3092\u4e8b\u524d\u306b\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u304c\u5927\u5207\u3067\u3059\u3002<br><\/li>\n<\/ol>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u3059\u3059\u3081\u30e9\u30a4\u30d6\u30e9\u30ea\u7d39\u4ecb<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1 Chart.js<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u516c\u5f0fURL<\/strong>: <a href=\"https:\/\/www.chartjs.org\/\" title=\"https:\/\/www.chartjs.org\/\">https:\/\/www.chartjs.org\/<\/a><\/li>\n\n\n\n<li><strong>\u7279\u5fb4<\/strong>: \u30b7\u30f3\u30d7\u30eb\u306aAPI\u3068\u8c4a\u5bcc\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308a\u3001\u521d\u5fc3\u8005\u306b\u3082\u6271\u3044\u3084\u3059\u3044\u3002\u8efd\u91cf\u306a\u304c\u3089\u3082\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3084\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3067\u3001\u57fa\u672c\u7684\u306a\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u304b\u3089\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u53ef\u8996\u5316\u307e\u3067\u5bfe\u5fdc\u53ef\u80fd\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc\u304c\u6a19\u6e96\u3002<br>\u30fb\u7c21\u5358\u306b\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0\u53ef\u80fd\u3002<br>\u30fb\u8efd\u91cf\u3067\u3001\u7c21\u5358\u306b\u5c0e\u5165\u3067\u304d\u308b\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u306b\u306f\u5411\u3044\u3066\u3044\u306a\u3044\u3002<br>\u30fb\u9ad8\u5ea6\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u306f\u8ffd\u52a0\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u5fc5\u8981\u3002<br>\u30fb\u8907\u96d1\u306a\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u6a5f\u80fd\u306b\u306f\u5411\u3044\u3066\u3044\u306a\u3044\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2 D3.js<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u516c\u5f0fURL<\/strong>: <a href=\"https:\/\/d3js.org\/\" title=\"\">https:\/\/d3js.org\/<\/a><\/li>\n\n\n\n<li><strong>\u7279\u5fb4<\/strong>: \u30c7\u30fc\u30bf\u53ef\u8996\u5316\u306e\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3001\u67d4\u8edf\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3002\u30c7\u30fc\u30bf\u30c9\u30ea\u30d6\u30f3\u306a\u63cf\u753b\u304c\u53ef\u80fd\u3067\u3001SVG\u3084Canvas\u3092\u81ea\u7531\u306b\u64cd\u308a\u3001\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30c7\u30fc\u30bf\u8868\u73fe\u304c\u5b9f\u73fe\u3067\u304d\u308b\u3002\u4f01\u696d\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3084\u30c7\u30fc\u30bf\u5206\u6790\u30c4\u30fc\u30eb\u306b\u591a\u304f\u4f7f\u7528\u3055\u308c\u308b\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u53ef\u8996\u5316\u306b\u9069\u3057\u3066\u3044\u308b\u3002<br>\u30fb\u9ad8\u5ea6\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3002<br>\u30fb\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30b0\u30e9\u30d5\u304c\u4f5c\u6210\u3067\u304d\u308b\u3002<br>\u30fb\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u3092\u30b0\u30e9\u30d5\u306b\u53cd\u6620\u3067\u304d\u308b\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u521d\u5fc3\u8005\u306b\u306f\u5b66\u7fd2\u30b3\u30b9\u30c8\u304c\u9ad8\u3044\u3002<br>\u30fb\u30b7\u30f3\u30d7\u30eb\u306a\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u30aa\u30fc\u30d0\u30fc\u30b9\u30da\u30c3\u30af\u3002<br>\u30fb\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc\u306f\u53ef\u80fd\u3060\u304c\u3001\u624b\u52d5\u3067\u306e\u5b9f\u88c5\u304c\u5fc5\u8981\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3 ApexCharts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u516c\u5f0fURL<\/strong>: <a href=\"https:\/\/apexcharts.com\/\">https:\/\/apexcharts.com\/<\/a><\/li>\n\n\n\n<li><strong>\u7279\u5fb4<\/strong>: \u30e2\u30c0\u30f3\u306a\u30c7\u30b6\u30a4\u30f3\u306e\u30b0\u30e9\u30d5\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u5bfe\u5fdc\u3002\u76f4\u611f\u7684\u306aAPI\u8a2d\u8a08\u3067\u3001\u9ad8\u5ea6\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3002\u30ba\u30fc\u30e0\u3001\u30d1\u30f3\u3001\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3001\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306e\u5236\u5fa1\u306a\u3069\u3001\u8996\u899a\u7684\u306b\u6d17\u7df4\u3055\u308c\u305f\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3067\u304d\u308b\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u76f4\u611f\u7684\u306aAPI\u8a2d\u8a08\u3067\u5c0e\u5165\u3057\u3084\u3059\u3044\u3002<br>\u30fb\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u306b\u9069\u3057\u3066\u3044\u308b\u3002<br>\u30fb\u6a19\u6e96\u3067\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc\u3057\u3066\u304a\u308a\u3001\u30b9\u30de\u30db\u30fb\u30bf\u30d6\u30ec\u30c3\u30c8\u3067\u3082\u9069\u5207\u306b\u8868\u793a\u3055\u308c\u308b\u3002<br>\u30fb\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3002<br>\u30fb\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30b0\u30e9\u30d5\u304c\u4f5c\u6210\u53ef\u80fd\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fbD3.js\u307b\u3069\u306e\u81ea\u7531\u5ea6\u306f\u306a\u3044\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4 Google Charts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u516c\u5f0fURL<\/strong>: <a href=\"https:\/\/developers.google.com\/chart\/\">https:\/\/developers.google.com\/chart\/<\/a><\/li>\n\n\n\n<li><strong>\u7279\u5fb4<\/strong>: Google\u304c\u63d0\u4f9b\u3059\u308b\u30af\u30e9\u30a6\u30c9\u30d9\u30fc\u30b9\u306e\u30b0\u30e9\u30d5\u63cf\u753b\u30c4\u30fc\u30eb\u3002Google\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u7d71\u5408\u3057\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u304c\u5bb9\u6613\u3002\u30b0\u30e9\u30d5\u306e\u7a2e\u985e\u304c\u8c4a\u5bcc\u3067\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u7c21\u5358\u306b\u7d44\u307f\u8fbc\u3080\u3053\u3068\u304c\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fbAPI\u3068\u306e\u9023\u643a\u304c\u7c21\u5358\uff08Google\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u76f4\u63a5\u63a5\u7d9a\u53ef\u80fd\u3067\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u304c\u5bb9\u6613\uff09\u3002<br>\u30fb\u30af\u30e9\u30a6\u30c9\u30d9\u30fc\u30b9\u3067\u624b\u8efd\u306b\u4f7f\u7528\u53ef\u80fd\u3002<br>\u30fb\u5b8c\u5168\u7121\u6599\u3067\u5229\u7528\u53ef\u80fd\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u30c7\u30b6\u30a4\u30f3\u306e\u81ea\u7531\u5ea6\u304c\u4f4e\u3044\u3002<br>\u30fb\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u6027\u306f\u4ed6\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u6bd4\u3079\u3066\u5236\u9650\u304c\u3042\u308b\u3002<br>\u30fb\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u306f\u4f7f\u7528\u3067\u304d\u306a\u3044\uff08\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u63a5\u7d9a\u304c\u5fc5\u8981\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5 Chartist.js<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u516c\u5f0fURL<\/strong>: <a href=\"https:\/\/gionkunz.github.io\/chartist-js\/\">https:\/\/gionkunz.github.io\/chartist-js\/<\/a><\/li>\n\n\n\n<li><strong>\u7279\u5fb4<\/strong>: \u8efd\u91cf\u3067\u30e2\u30d0\u30a4\u30eb\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30b0\u30e9\u30d5\u30e9\u30a4\u30d6\u30e9\u30ea\u3002CSS\u3092\u6d3b\u7528\u3057\u305f\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3067\u3001\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u306b\u3082\u5bfe\u5fdc\u3002\u30b7\u30f3\u30d7\u30eb\u306a\u30b3\u30fc\u30c9\u3067\u6271\u3044\u3084\u3059\u304f\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u3082\u6271\u3044\u3084\u3059\u3044\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u8efd\u91cf\u3067\u9ad8\u901f\u3002<br>\u30fbCSS\u3092\u4f7f\u7528\u3057\u305f\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u53ef\u80fd\u3002<br>\u30fb\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u6271\u3044\u3084\u3059\u3044\u3002<br>\u30fb\u30e2\u30d0\u30a4\u30eb\u5bfe\u5fdc\u304c\u3057\u3084\u3059\u3044\u3002<\/li>\n\n\n\n<li><strong>\u30c7\u30e1\u30ea\u30c3\u30c8<\/strong><br>\u30fb\u6a5f\u80fd\u304c\u30b7\u30f3\u30d7\u30eb\u3067\u9ad8\u5ea6\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u96e3\u3057\u3044\u3002<br>\u30fb\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u306b\u306f\u5411\u3044\u3066\u3044\u306a\u3044\u3002<br>\u30fb\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306b\u306f\u624b\u52d5\u3067\u306e\u5b9f\u88c5\u304c\u5fc5\u8981\u3002<br>\u30fb\u9ad8\u5ea6\u306aJavaScript\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u306f\u5236\u9650\u304c\u3042\u308b\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u30e9\u30a4\u30d6\u30e9\u30ea\u6bd4\u8f03\u8868<\/h2>\n\n\n\n<p>\u524d\u8ff0\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u9078\u5b9a\u30dd\u30a4\u30f3\u30c8\u3092\u307e\u3068\u3081\u305f\u8868\u306f\u4e0b\u8a18\u306e\u3068\u304a\u308a<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>\u540d\u79f0<\/th><th>\u5c0e\u5165\u306e\u3057\u3084\u3059\u3055<\/th><th>\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u6027<\/th><th>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc<\/th><th>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/th><th>\u30b5\u30dd\u30fc\u30c8\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/th><th>\u30e9\u30a4\u30bb\u30f3\u30b9<\/th><\/tr><\/thead><tbody><tr><td>Chart.js<\/td><td>\u9ad8\u3044<\/td><td>\u4e2d\u7a0b\u5ea6<\/td><td>\u6a19\u6e96\u5bfe\u5fdc<\/td><td>\u8efd\u91cf\u30fb\u9ad8\u901f<\/td><td>\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5145\u5b9f<\/td><td>MIT\u30e9\u30a4\u30bb\u30f3\u30b9<\/td><\/tr><tr><td>D3.js<\/td><td>\u4e2d\u7a0b\u5ea6<\/td><td>\u975e\u5e38\u306b\u9ad8\u3044<\/td><td>\u624b\u52d5\u5bfe\u5fdc<\/td><td>\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u5bfe\u5fdc\u53ef\u80fd<\/td><td>\u8c4a\u5bcc\u306a\u30b5\u30f3\u30d7\u30eb\u3068\u89e3\u8aac<\/td><td>BSD\u30e9\u30a4\u30bb\u30f3\u30b9<\/td><\/tr><tr><td>ApexCharts<\/td><td>\u9ad8\u3044<\/td><td>\u9ad8\u3044<\/td><td>\u6a19\u6e96\u5bfe\u5fdc<\/td><td>\u9ad8\u901f\u30fb\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u5bfe\u5fdc<\/td><td>\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u8c4a\u5bcc<\/td><td>MIT\u30e9\u30a4\u30bb\u30f3\u30b9<\/td><\/tr><tr><td>Google Charts<\/td><td>\u9ad8\u3044<\/td><td>\u4e2d\u7a0b\u5ea6<\/td><td>\u624b\u52d5\u5bfe\u5fdc<\/td><td>\u9ad8\u901f<\/td><td>Google\u306e\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8<\/td><td>\u7121\u6599<\/td><\/tr><tr><td>Chartist.js<\/td><td>\u9ad8\u3044<\/td><td>\u4e2d\u7a0b\u5ea6<\/td><td>\u6a19\u6e96\u5bfe\u5fdc<\/td><td>\u8efd\u91cf\u30fb\u9ad8\u901f<\/td><td>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30d9\u30fc\u30b9<\/td><td>MIT\u30e9\u30a4\u30bb\u30f3\u30b9<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u3092\u4f7f\u3063\u305f\u5c0e\u5165\u4f8b<\/h2>\n\n\n\n<p>\u4eca\u56de\u7d39\u4ecb\u3057\u305f\u5404\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3063\u3066\u3001\u540c\u3058\u6761\u4ef6\u306e\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u304b\u3089\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u3092\u8868\u793a\u3059\u308b\u624b\u9806\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3092\u6d3b\u304b\u3057\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u3064\u3051\u3066\u307f\u305f\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u306d\u3002<\/p>\n\n\n\n<div class=\"wp-block-group has-background\" style=\"background-color:#fbecec\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading has-text-align-center has-background\" style=\"background-color:#fbecec\">\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\uff1a\u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u4e00\u89a7\u8868<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5e74\u6708<\/th><th>\u58f2\u4e0a<\/th><th>\u8cbb\u7528<\/th><th>\u5229\u76ca<\/th><\/tr><\/thead><tbody><tr><td>2024-01<\/td><td>120,000<\/td><td>50,000<\/td><td>70,000<\/td><\/tr><tr><td>2024-02<\/td><td>140,000<\/td><td>70,000<\/td><td>70,000<\/td><\/tr><tr><td>2024-03<\/td><td>130,000  <\/td><td>60,000<\/td><td>70,000<\/td><\/tr><tr><td>2024-04<\/td><td>150,000<\/td><td>70,000 <\/td><td>80,000<\/td><\/tr><tr><td>2024-05<\/td><td>160,000<\/td><td>70,000<\/td><td>90,000<\/td><\/tr><tr><td>2024-06<\/td><td>170,000<\/td><td>90,000<\/td><td>80,000<\/td><\/tr><tr><td>2024-07<\/td><td>200,000<\/td><td>110,000<\/td><td>90,000<\/td><\/tr><tr><td>2024-08<\/td><td>180,000<\/td><td>90,000<\/td><td>90,000<\/td><\/tr><tr><td>2024-09<\/td><td>220,000<\/td><td>120,000<\/td><td>100,000<\/td><\/tr><tr><td>2024-10<\/td><td>210,000<\/td><td>110,000<\/td><td>100,000<\/td><\/tr><tr><td>2024-11<\/td><td>230,000<\/td><td>130,000<\/td><td>100,000<\/td><\/tr><tr><td>2024-12<\/td><td>240,000<\/td><td>130,000<\/td><td>110,000<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n\n\n<p>\u4eca\u56de\u306f\u3001\u3053\u306e\u30c7\u30fc\u30bf\u3092\u4e0b\u8a18\u306e\u3088\u3046\u306a\u3001\u5171\u901a\u306eJSON\u30c7\u30fc\u30bf\u3068\u3057\u3066\u6271\u3063\u3066\u3044\u304d\u307e\u3059\u3002<br>\uff08\u305d\u306e\u305f\u3081\u3001\u5404\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30b3\u30fc\u30c9\u90e8\u3067\u306f\u30c7\u30fc\u30bf\u306e\u8a18\u8ff0\u306f\u5272\u611b\u3057\u3066\u3044\u307e\u3059\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-e5fd88e5f86826f0053c65d727d6bd79\"><code>\nconst monthlyData = &#91;\n  { month: \"2024-01\", revenue: 120000, expense: 50000, profit: 70000 },\n  { month: \"2024-02\", revenue: 140000, expense: 70000, profit: 70000 },\n  { month: \"2024-03\", revenue: 130000, expense: 60000, profit: 70000 },\n  { month: \"2024-04\", revenue: 150000, expense: 70000, profit: 80000 },\n  { month: \"2024-05\", revenue: 160000, expense: 70000, profit: 90000 },\n  { month: \"2024-06\", revenue: 170000, expense: 90000, profit: 80000 },\n  { month: \"2024-07\", revenue: 200000, expense: 110000, profit: 90000 },\n  { month: \"2024-08\", revenue: 180000, expense: 90000, profit: 90000 },\n  { month: \"2024-09\", revenue: 220000, expense: 120000, profit: 100000 },\n  { month: \"2024-10\", revenue: 210000, expense: 110000, profit: 100000 },\n  { month: \"2024-11\", revenue: 230000, expense: 130000, profit: 100000 },\n  { month: \"2024-12\", revenue: 240000, expense: 130000, profit: 110000 }\n];\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">Chart.js<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartjs-line.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"466\" src=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartjs-line.gif\" alt=\"\" class=\"wp-image-8325\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5c0e\u5165\u624b\u9806<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.CDN\u30ea\u30f3\u30af\u306e\u8ffd\u52a0<\/strong> (HTML\u306e<code>&lt;head&gt;<\/code>\u5185\u306b\u8a18\u8ff0)<\/h5>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-c8ef7a23cb35f0edadf82d0e64266cea\"><code>\n<code>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"&gt;&lt;\/script&gt;<\/code>\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.HTML\u3068JavaScript\u30b3\u30fc\u30c9<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-7dbb174200c25fd216095ac313035914\"><code>\n &lt;h1>2024\u5e741\u6708\uff5e12\u6708 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u30b0\u30e9\u30d5&lt;\/h1>\n  &lt;canvas id=\"myChart\" width=\"800\" height=\"400\">&lt;\/canvas>\n\n  &lt;script>\n\n    \/\/ Chart.js \u7528\u306b\u30b0\u30e9\u30d5\u306e\u30e9\u30d9\u30eb\u914d\u5217\u3068\u3001\u5404\u7cfb\u5217\u306e\u30c7\u30fc\u30bf\u914d\u5217\u3092\u6e96\u5099\n    const labels = monthlyData.map(item => item.month);\n    const revenueData = monthlyData.map(item => item.revenue);\n    const expenseData = monthlyData.map(item => item.expense);\n    const profitData  = monthlyData.map(item => item.profit);\n\n    \/\/ Chart.js \u306e\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\n    const ctx = document.getElementById('myChart');\n\n    const chart = new Chart(ctx, {\n      type: 'bar',\n      data: {\n        labels: labels,\n        datasets: &#91;\n          {\n            label: 'Revenue (\u58f2\u4e0a)',\n            data: revenueData,\n            borderColor: 'rgba(54, 162, 235, 1)', \/\/ \u30e9\u30a4\u30f3\u8272\n            backgroundColor: 'rgba(54, 162, 235, 0.2)', \/\/ \u30dd\u30a4\u30f3\u30c8\u306e\u5857\u308a\u3064\u3076\u3057\u8272\n            tension: 0.3,          \/\/ \u7dda\u306e\u306a\u3081\u3089\u304b\u3055(0\uff5e1)\n            pointStyle: 'circle',  \/\/ \u30dd\u30a4\u30f3\u30c8\u306e\u5f62\u72b6\n            pointRadius: 5,        \/\/ \u30dd\u30a4\u30f3\u30c8\u306e\u5927\u304d\u3055\n            fill: false            \/\/ \u7dda\u306e\u4e0b\u3092\u5857\u308a\u3064\u3076\u3055\u306a\u3044\n          },\n          {\n            label: 'Expense (\u8cbb\u7528)',\n            data: expenseData,\n            borderColor: 'rgba(255, 99, 132, 1)',\n            backgroundColor: 'rgba(255, 99, 132, 0.2)',\n            tension: 0.3,\n            pointStyle: 'rect',\n            pointRadius: 5,\n            fill: false\n          },\n          {\n            label: 'Profit (\u5229\u76ca)',\n            data: profitData,\n            borderColor: 'rgba(75, 192, 192, 1)',\n            backgroundColor: 'rgba(75, 192, 192, 0.2)',\n            tension: 0.3,\n            pointStyle: 'triangle',\n            pointRadius: 6,\n            fill: false\n          }\n        ]\n      },\n      options: {\n        responsive: true,\n        \/\/ \u88dc\u52a9\u60c5\u5831\uff08\u30bf\u30a4\u30c8\u30eb\u3001\u30b5\u30d6\u30bf\u30a4\u30c8\u30eb\u7b49\uff09\u306e\u8868\u793a\n        plugins: {\n          title: {\n            display: true,\n            text: '2024\u5e74 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u306e\u63a8\u79fb',\n            font: {\n              size: 18\n            }\n          },\n          subtitle: {\n            display: true,\n            text: '\uff08Chart.js\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u305f\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u30b5\u30f3\u30d7\u30eb\uff09',\n            font: {\n              size: 14\n            }\n          },\n          tooltip: {\n            enabled: true,\n            mode: 'index',           \/\/ \u30db\u30d0\u30fc\u6642\u306b\u540c\u3058X\u8ef8\u4e0a\u306e\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u3092\u8868\u793a\n            intersect: false,\n            callbacks: {\n              label: function(context) {\n                \/\/ Y\u8ef8\u306e\u5024\u3092\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\uff08\u30ab\u30f3\u30de\u533a\u5207\u308a\u306a\u3069\uff09\n                const value = context.parsed.y.toLocaleString();\n                return `${context.dataset.label}: ${value} \u5186`;\n              }\n            }\n          },\n          legend: {\n            display: true,\n            labels: {\n              font: {\n                size: 12\n              }\n            }\n          }\n        },\n        scales: {\n          x: {\n            display: true,\n            title: {\n              display: true,\n              text: '\u6708',\n              font: {\n                size: 14\n              }\n            }\n          },\n          y: {\n            beginAtZero: true,\n            title: {\n              display: true,\n              text: '\u91d1\u984d\uff08\u5186\uff09',\n              font: {\n                size: 14\n              }\n            },\n            ticks: {\n              \/\/ Y\u8ef8\u3082\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n              callback: function(value) {\n                return value.toLocaleString() + ' \u5186';\n              }\n            }\n          }\n        },\n        interaction: {\n          \/\/ \u30b0\u30e9\u30d5\u4e0a\u306b\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u3092\u91cd\u306d\u305f\u3068\u304d\u306e\u88dc\u52a9\u7dda\u3092\u8868\u793a\u3059\u308b\u8a2d\u5b9a\n          mode: 'index',\n          intersect: false\n        }\n      }\n    });\n  &lt;\/script>\n      <\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"> \u89e3\u8aac\u30fb\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8907\u6570\u7cfb\u5217\u3092\u7c21\u5358\u306b\u63cf\u753b<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>datasets<\/code> \u914d\u5217\u306e\u8981\u7d20\u3092\u5897\u3084\u305b\u3070\u3001\u8907\u6570\u306e\u6298\u308c\u7dda\u3092\u540c\u3058\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u300c\u58f2\u4e0a\u300d\u300c\u8cbb\u7528\u300d\u300c\u5229\u76ca\u300d\u3068\u3044\u3063\u305f\u8907\u6570\u306e\u6307\u6a19\u3092\u4e00\u5ea6\u306b\u53ef\u8996\u5316\u3059\u308b\u306e\u304c\u3068\u3066\u3082\u7c21\u5358\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b0\u30e9\u30d5\u306e\u30bf\u30a4\u30c8\u30eb\u30fb\u30b5\u30d6\u30bf\u30a4\u30c8\u30eb<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>plugins.title<\/code> \u3068 <code>plugins.subtitle<\/code> \u3092\u6d3b\u7528\u3057\u3001\u30b0\u30e9\u30d5\u5168\u4f53\u306e\u8aac\u660e\u3092\u4ed8\u52a0\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>callbacks.label<\/code> \u3067\u5024\uff08\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306b\u8868\u793a\u3055\u308c\u308b\u5024\uff09\u3092\u81ea\u7531\u306b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>toLocaleString()<\/code> \u3092\u4f7f\u3063\u3066\u30ab\u30f3\u30de\u533a\u5207\u308a\u306b\u3059\u308b\u306a\u3069\u3001\u58f2\u4e0a\u306a\u3069\u306e\u5927\u304d\u306a\u91d1\u984d\u3092\u8aad\u307f\u3084\u3059\u304f\u3057\u307e\u3057\u305f\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b9\u30e0\u30fc\u30b8\u30f3\u30b0 (tension) \u3068\u30dd\u30a4\u30f3\u30c8\u30b9\u30bf\u30a4\u30eb<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>tension<\/code> \u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6298\u308c\u7dda\u3092\u66f2\u7dda\u306b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>pointStyle<\/code> \u3084 <code>pointRadius<\/code> \u306b\u3088\u3063\u3066\u3001\u30c7\u30fc\u30bf\u70b9\u306e\u5f62\u3068\u5927\u304d\u3055\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 <code>responsive: true<\/code> \u3068\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u306b\u5fdc\u3058\u3066\u30ad\u30e3\u30f3\u30d0\u30b9\u304c\u30ea\u30b5\u30a4\u30ba\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u3055\u307e\u3056\u307e\u306a\u30c1\u30e3\u30fc\u30c8\u30bf\u30a4\u30d7\u306b\u5207\u308a\u66ff\u3048\u3084\u3059\u3044<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>type: 'bar'<\/code> \u306b\u5909\u66f4\u3057\u3066\u68d2\u30b0\u30e9\u30d5\u306b\u3059\u308b\u306a\u3069\u3001\u4ed6\u306e\u53ef\u8996\u5316\u65b9\u6cd5\u3078\u306e\u5207\u308a\u66ff\u3048\u3082\u5bb9\u6613\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">D3.js<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/d3js-line.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"476\" src=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/d3js-line.gif\" alt=\"\" class=\"wp-image-8332\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5c0e\u5165\u624b\u9806<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.CDN\u30ea\u30f3\u30af\u306e\u8ffd\u52a0<\/strong> (HTML\u306e<code>&lt;head&gt;<\/code>\u5185\u306b\u8a18\u8ff0)<\/h5>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-909a610adf5410d923378cc228dc3215\"><code>\n&lt;script src=\"https:\/\/d3js.org\/d3.v7.min.js\"&gt;&lt;\/script&gt;\n\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.CSS\u3092\u8ffd\u52a0<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-c8b426e2dae91bcb2c382cc8a622cbad\"><code>\n  &lt;style&gt;\n    body {\n      font-family: sans-serif;\n    }\n    .axis path,\n    .axis line {\n      fill: none;\n      stroke: #ccc;\n      shape-rendering: crispEdges;\n    }\n    .legend {\n      font-size: 12px;\n    }\n    .tooltip {\n      position: absolute;\n      text-align: center;\n      padding: 4px;\n      background: rgba(0, 0, 0, 0.7);\n      color: #fff;\n      border-radius: 4px;\n      pointer-events: none;\n      font-size: 12px;\n    }\n  &lt;\/style&gt;\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">3<strong>.HTML\u3068JavaScript\u30b3\u30fc\u30c9<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-95de921ca591f855c2cb75d5ff3d49b7\"><code>\n&lt;h1>2024\u5e741\u6708\uff5e12\u6708 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u30b0\u30e9\u30d5 (D3.js)&lt;\/h1>\n&lt;div id=\"chart\">&lt;\/div>\n&lt;div id=\"tooltip\" class=\"tooltip\" style=\"opacity: 0;\">&lt;\/div>\n\n&lt;script>\n\/\/ SVG\u30b3\u30f3\u30c6\u30ca\u306e\u8a2d\u5b9a\nconst margin = { top: 40, right: 100, bottom: 40, left: 60 },\n      width  = 800 - margin.left - margin.right,\n      height = 400 - margin.top - margin.bottom;\n\n\/\/ SVG \u8981\u7d20\u3092\u8ffd\u52a0\nconst svg = d3.select(\"#chart\")\n  .append(\"svg\")\n    .attr(\"width\",  width + margin.left + margin.right)\n    .attr(\"height\", height + margin.top + margin.bottom)\n  .append(\"g\")\n    .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n\/\/ X\u8ef8\u30b9\u30b1\u30fc\u30eb\uff08\u30ab\u30c6\u30b4\u30ea\uff1a\u6708\uff09\nconst xScale = d3.scaleBand()\n  .domain(monthlyData.map(d => d.month))\n  .range(&#91;0, width])\n  .padding(0.1);\n\n\/\/ Y\u8ef8\u30b9\u30b1\u30fc\u30eb\uff083\u6307\u6a19\u306e\u6700\u5927\u5024\u306b\u5408\u308f\u305b\u3066\u53ef\u5909\uff09\nconst yMax = d3.max(monthlyData, d => Math.max(d.revenue, d.expense, d.profit));\nconst yScale = d3.scaleLinear()\n  .domain(&#91;0, yMax])\n  .range(&#91;height, 0])\n  .nice(); \/\/ \u76ee\u76db\u308a\u3092\u7aef\u6570\u306e\u7121\u3044\u5024\u306b\u8abf\u6574\n\n\/\/ \u8ef8\u306e\u63cf\u753b\n\/\/    X\u8ef8\nsvg.append(\"g\")\n   .attr(\"transform\", `translate(0, ${height})`)\n   .attr(\"class\", \"axis\")\n   .call(d3.axisBottom(xScale));\n\n\/\/    Y\u8ef8\nsvg.append(\"g\")\n   .attr(\"class\", \"axis\")\n   .call(d3.axisLeft(yScale)\n         .tickFormat(d3.format(\",\"))  \/\/ \u30ab\u30f3\u30de\u533a\u5207\u308a\u8868\u793a\n         .ticks(8));                  \/\/ \u76ee\u76db\u308a\u306e\u6570\u3092\u9069\u5ea6\u306b\n\n\/\/ \u30e9\u30a4\u30f3\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf (\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca) \u30923\u3064\u7528\u610f\n\/\/    .curve(d3.curveCatmullRom.alpha(0.5)) \u3067\u66f2\u7dda\u306e\u300c\u30c6\u30f3\u30b7\u30e7\u30f3\u300d\u3092\u8a2d\u5b9a\nconst lineRevenue = d3.line()\n  .x(d => xScale(d.month) + xScale.bandwidth() \/ 2)\n  .y(d => yScale(d.revenue))\n  .curve(d3.curveCatmullRom.alpha(0.5));\n\nconst lineExpense = d3.line()\n  .x(d => xScale(d.month) + xScale.bandwidth() \/ 2)\n  .y(d => yScale(d.expense))\n  .curve(d3.curveCatmullRom.alpha(0.5));\n\nconst lineProfit = d3.line()\n  .x(d => xScale(d.month) + xScale.bandwidth() \/ 2)\n  .y(d => yScale(d.profit))\n  .curve(d3.curveCatmullRom.alpha(0.5));\n\n\/\/ \u30c8\u30e9\u30f3\u30b8\u30b7\u30e7\u30f3\u4ed8\u304d\u3067\u6298\u308c\u7dda\u3092\u63cf\u753b\u3059\u308b\u95a2\u6570\u3092\u5b9a\u7fa9\nfunction drawLineWithTransition(data, lineGenerator, color, className) {\n  \/\/ path\u8981\u7d20\u3092\u8ffd\u52a0\n  const path = svg.append(\"path\")\n    .datum(data)\n    .attr(\"class\", className)\n    .attr(\"fill\", \"none\")\n    .attr(\"stroke\", color)\n    .attr(\"stroke-width\", 2)\n    .attr(\"d\", lineGenerator);\n\n  \/\/ \u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u7528: \u30d1\u30b9\u306e\u5168\u9577\u3092\u53d6\u5f97\n  const totalLength = path.node().getTotalLength();\n\n  \/\/ stroke-dash\u7cfb\u306e\u8a2d\u5b9a\u3092\u4f7f\u3044\u3001\u300c\u7dda\u304c\u63cf\u304b\u308c\u3066\u3044\u304f\u300d\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\n  path\n    .attr(\"stroke-dasharray\", `${totalLength} ${totalLength}`)\n    .attr(\"stroke-dashoffset\", totalLength)\n    .transition()\n    .duration(2000)          \/\/ 2\u79d2\u304b\u3051\u3066\u63cf\u753b\n    .ease(d3.easeLinear)     \/\/ \u7dda\u5f62\u5909\u5316\n    .attr(\"stroke-dashoffset\", 0);\n}\n\n\/\/ 3\u7cfb\u5217\uff08\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\uff09\u306e\u6298\u308c\u7dda\u3092\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u4ed8\u304d\u3067\u63cf\u753b\ndrawLineWithTransition(monthlyData, lineRevenue, \"steelblue\", \"line-revenue\");\ndrawLineWithTransition(monthlyData, lineExpense, \"tomato\",    \"line-expense\");\ndrawLineWithTransition(monthlyData, lineProfit,  \"green\",     \"line-profit\");\n\n\/\/ \u5404\u30c7\u30fc\u30bf\u70b9\u306b\u30de\u30fc\u30ab\u30fc(circle)\u3068\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u4ed8\u4e0e\nfunction drawPoints(key, color) {\n  svg.selectAll(`.point-${key}`)\n    .data(monthlyData)\n    .enter()\n    .append(\"circle\")\n      .attr(\"class\", `point-${key}`)\n      .attr(\"cx\", d => xScale(d.month) + xScale.bandwidth() \/ 2)\n      .attr(\"cy\", d => yScale(d&#91;key]))\n      .attr(\"r\", 4)\n      .attr(\"fill\", color)\n      .on(\"mouseover\", (event, d) => {\n        \/\/ \u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u8868\u793a\n        d3.select(\"#tooltip\")\n          .style(\"opacity\", 1)\n          .html(\n            `&lt;strong>${d.month}&lt;\/strong>&lt;br>\n             ${key}: ${d&#91;key].toLocaleString()} \u5186`\n          )\n          .style(\"left\", (event.pageX + 10) + \"px\")\n          .style(\"top\",  (event.pageY - 20) + \"px\");\n      })\n      .on(\"mousemove\", (event) => {\n        \/\/ \u30de\u30a6\u30b9\u79fb\u52d5\u306b\u8ffd\u5f93\n        d3.select(\"#tooltip\")\n          .style(\"left\", (event.pageX + 10) + \"px\")\n          .style(\"top\",  (event.pageY - 20) + \"px\");\n      })\n      .on(\"mouseout\", () => {\n        \/\/ \u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u975e\u8868\u793a\n        d3.select(\"#tooltip\")\n          .style(\"opacity\", 0);\n      });\n}\n\n\/\/ \u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u30013\u3064\u306e\u7cfb\u5217\u3067\u63cf\u753b\ndrawPoints(\"revenue\", \"steelblue\");\ndrawPoints(\"expense\", \"tomato\");\ndrawPoints(\"profit\",  \"green\");\n\n\/\/ \u51e1\u4f8b\u306e\u8ffd\u52a0\uff08\u53f3\u4e0a\u4ed8\u8fd1\u306b\u914d\u7f6e\u3059\u308b\u4f8b\uff09\nconst legends = &#91;\n  { name: \"Revenue (\u58f2\u4e0a)\", color: \"steelblue\" },\n  { name: \"Expense (\u8cbb\u7528)\", color: \"tomato\"   },\n  { name: \"Profit (\u5229\u76ca)\",  color: \"green\"    },\n];\n\nsvg.selectAll(\".legend\")\n   .data(legends)\n   .enter()\n   .append(\"g\")\n     .attr(\"class\", \"legend\")\n     .attr(\"transform\", (d, i) => `translate(${width + 10}, ${i * 20})`)\n   .call(g => {\n     \/\/ \u30ab\u30e9\u30fc\u306e\u77e9\u5f62\n     g.append(\"rect\")\n      .attr(\"x\", 0)\n      .attr(\"y\", -5)\n      .attr(\"width\", 10)\n      .attr(\"height\", 10)\n      .attr(\"fill\", d => d.color);\n\n     \/\/ \u30c6\u30ad\u30b9\u30c8\n     g.append(\"text\")\n      .attr(\"x\", 15)\n      .attr(\"y\", 0)\n      .attr(\"dy\", \".35em\")\n      .style(\"font-size\", \"12px\")\n      .text(d => d.name);\n   });\n\n&lt;\/script>\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"> \u89e3\u8aac\u30fb\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u66f2\u7dda\u306e\u30c6\u30f3\u30b7\u30e7\u30f3 (curveCatmullRom.alpha(0.5))<\/strong>\n<ul class=\"wp-block-list\">\n<li>D3.js\u3067\u306f\u3001\u8907\u6570\u306e\u30ab\u30fc\u30d6\u88dc\u5b8c\u95a2\u6570\u304b\u3089\u597d\u307f\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u9078\u3079\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>curveCatmullRom<\/code> \u306f\u6ed1\u3089\u304b\u306a\u66f2\u7dda\u3001<code>.alpha(0.5)<\/code> \u3067\u300c\u66f2\u7dda\u306e\u5f35\u308a\u5177\u5408\u300d\u3092\u8abf\u6574\u3057\u3066\u3044\u307e\u3059\u3002\u5927\u304d\u3044\u307b\u3069\u66f2\u7dda\u304c\u201c\u305f\u308f\u3080\u201d\u3088\u3046\u306a\u5f62\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u63cf\u753b\u6642\u306e\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\uff08transition\uff09<\/strong>\n<ul class=\"wp-block-list\">\n<li>SVG\u306e<code>path<\/code>\u8981\u7d20\u306b\u5bfe\u3057\u3001<code>stroke-dasharray<\/code> \u3068 <code>stroke-dashoffset<\/code> \u3092\u4f7f\u3063\u3066\u300c\u7dda\u304c\u5de6\u304b\u3089\u53f3\u3078\u4f38\u3073\u3066\u3044\u304f\u300d\u6f14\u51fa\u3092\u5b9f\u88c5\u3002<\/li>\n\n\n\n<li><code>.transition().duration(2000).ease(d3.easeLinear)<\/code> \u3067\u30012\u79d2\u304b\u3051\u3066\u4e00\u5b9a\u901f\u5ea6\u3067\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3055\u305b\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>getTotalLength()<\/code> \u3067\u5b9f\u969b\u306e\u30d1\u30b9\u306e\u9577\u3055\u3092\u53d6\u5f97\u3057\u3001<code>dasharray<\/code> \u3068 <code>dashoffset<\/code> \u3092\u540c\u671f\u3059\u308b\u306e\u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7 (mouseover, mousemove, mouseout)<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>on(\"mouseover\", ...)<\/code> \u3067\u900f\u660e\u5ea6\u3092\u5909\u66f4\u3057\u3066\u8868\u793a\u3057\u3001HTML\u5185\u90e8\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u5185\u5bb9\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>event.pageX<\/code> \u3068 <code>event.pageY<\/code> \u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u306b\u8ffd\u5f93\u3059\u308b\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u51e1\u4f8b\u306e\u624b\u52d5\u8ffd\u52a0<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>tension<\/code> \u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6298\u308c\u7dda\u3092\u66f2\u7dda\u306b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>pointStyle<\/code> \u3084 <code>pointRadius<\/code> \u306b\u3088\u3063\u3066\u3001\u30c7\u30fc\u30bf\u70b9\u306e\u5f62\u3068\u5927\u304d\u3055\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 <code>responsive: true<\/code> \u3068\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u306b\u5fdc\u3058\u3066\u30ad\u30e3\u30f3\u30d0\u30b9\u304c\u30ea\u30b5\u30a4\u30ba\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u3055\u307e\u3056\u307e\u306a\u30c1\u30e3\u30fc\u30c8\u30bf\u30a4\u30d7\u306b\u5207\u308a\u66ff\u3048\u3084\u3059\u3044<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>type: 'bar'<\/code> \u306b\u5909\u66f4\u3057\u3066\u68d2\u30b0\u30e9\u30d5\u306b\u3059\u308b\u306a\u3069\u3001\u4ed6\u306e\u53ef\u8996\u5316\u65b9\u6cd5\u3078\u306e\u5207\u308a\u66ff\u3048\u3082\u5bb9\u6613\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">ApexCharts<\/h3>\n\n\n\n<p>\u4e0a\u8a18\uff12\u3064\u306e\u30b0\u30e9\u30d5\u306b\u52a0\u3048\u3066\u3001\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u3082\u8ffd\u52a0\u3057\u305f\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/apexchart-line.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"536\" src=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/apexchart-line.gif\" alt=\"\" class=\"wp-image-8337\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5c0e\u5165\u624b\u9806<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.CDN\u30ea\u30f3\u30af\u306e\u8ffd\u52a0<\/strong> <\/h5>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-7a626ff1ed11fd2667679e1d69e761da\"><code>\n&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/apexcharts\">&lt;\/script>\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">2<strong>.HTML\u3068JavaScript\u30b3\u30fc\u30c9<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-8158653db4c1574e3017eb6c86dfe6d4\"><code>\n&lt;h1>2024\u5e741\u6708\uff5e12\u6708 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u30b0\u30e9\u30d5 (ApexCharts)&lt;\/h1>\n&lt;div id=\"chart\">&lt;\/div>\n\n&lt;script>\n\/\/ ApexCharts\u7528\u306b\u300cx\u8ef8\u30ab\u30c6\u30b4\u30ea\u914d\u5217\u300d\u3068\u300c\u5404\u7cfb\u5217\u306e\u30c7\u30fc\u30bf\u914d\u5217\u300d\u3092\u751f\u6210\nconst categories  = monthlyData.map(d => d.month);\nconst revenueData = monthlyData.map(d => d.revenue);\nconst expenseData = monthlyData.map(d => d.expense);\nconst profitData  = monthlyData.map(d => d.profit);\n\n\/\/ ApexCharts \u306e\u30aa\u30d7\u30b7\u30e7\u30f3\n\/\/ \u8907\u6570\u7cfb\u5217(\u58f2\u4e0a\/\u8cbb\u7528\/\u5229\u76ca)\u3092\u307e\u3068\u3081\u3066\u30e9\u30a4\u30f3\u30c1\u30e3\u30fc\u30c8\u306b\u3059\u308b\nconst options = {\n  chart: {\n    type: 'line',\n    height: 450,\n    toolbar: {\n      show: true \/\/ \u30ba\u30fc\u30e0\u30fb\u30d1\u30f3\u30fb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30dc\u30bf\u30f3\u306a\u3069\u304c\u8868\u793a\u3055\u308c\u308b\n    }\n  },\n  \/\/ \u30c7\u30fc\u30bf\u7cfb\u5217\u3092\u5b9a\u7fa9\n  series: &#91;\n    { name: '\u3000\u58f2\u4e0a', data: revenueData },\n    { name: '\u3000\u8cbb\u7528', data: expenseData },\n    { name: '\u3000\u5229\u76ca',  data: profitData  }\n  ],\n  \/\/ X\u8ef8\u8a2d\u5b9a\n  xaxis: {\n    categories: categories,\n    title: {\n      text: '\u6708'\n    }\n  },\n  \/\/ Y\u8ef8\u8a2d\u5b9a\n  yaxis: {\n    title: {\n      text: '\u91d1\u984d\uff08\u5186\uff09'\n    },\n    labels: {\n      formatter: (val) => val.toLocaleString()\n    }\n  },\n  \/\/ \u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\n  stroke: {\n    curve: 'smooth', \/\/ \u7dda\u3092\u306a\u3081\u3089\u304b\u306b\n    width: 3         \/\/ \u7dda\u306e\u592a\u3055\n  },\n  markers: {\n    size: 4          \/\/ \u30c7\u30fc\u30bf\u70b9\u306e\u5927\u304d\u3055\n  },\n  \n  tooltip: {\n    y: {\n      formatter: (val) => `${val.toLocaleString()} \u5186`\n    }\n  },\n  title: {\n    text: '2024\u5e74 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca',\n    align: 'left'\n  },\n  subtitle: {\n    text: 'ApexCharts\u3067\u306e\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u30b5\u30f3\u30d7\u30eb',\n    align: 'left'\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'left'\n  }\n};\n\n\/\/ \u30b0\u30e9\u30d5\u3092\u63cf\u753b\nconst chart = new ApexCharts(document.querySelector(\"#chart\"), options);\nchart.render();\n&lt;\/script>\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"> \u89e3\u8aac\u30fb\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8907\u6570\u7cfb\u5217\u306e\u7dda\u30b0\u30e9\u30d5\u304c\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u308b<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>series<\/code> \u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u8907\u6570\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6e21\u3059\u3060\u3051\u3067\u3001<strong>\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca<\/strong>\u306a\u3069\u306e\u8907\u6570\u6307\u6a19\u3092\u540c\u6642\u306b\u8868\u793a\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u8c4a\u5bcc\u306a\u30c4\u30fc\u30eb\u30d0\u30fc\u6a5f\u80fd<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>chart.toolbar<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001<strong>\u30b0\u30e9\u30d5\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\uff08PNG\/JPG\/SVG\uff09<\/strong>, <strong>\u30ba\u30fc\u30e0<\/strong>\uff08\u9078\u629e\/\u62e1\u5927\/\u7e2e\u5c0f\/\u30d1\u30f3\uff09, <strong>\u30ea\u30bb\u30c3\u30c8<\/strong> \u306a\u3069\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u64cd\u4f5c\u3092\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u4f7f\u3048\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u306a\u3081\u3089\u304b\u306a\u66f2\u7dda\u3068\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u6027<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>stroke.curve: 'smooth'<\/code> \u3067\u30e9\u30a4\u30f3\u3092\u66f2\u7dda\u306b\u3001<code>width<\/code> \u3067\u592a\u3055\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>ApexCharts\u306b\u306f\u4ed6\u306b\u3082 <code>'straight'<\/code> \u3084 <code>'stepline'<\/code> \u306a\u3069\u3001\u591a\u69d8\u306a\u30b9\u30bf\u30a4\u30eb\u304c\u9078\u629e\u53ef\u80fd\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>tooltip.y.formatter<\/code> \u3092\u4f7f\u3046\u3068\u3001\u5024\u3092\u30ab\u30f3\u30de\u533a\u5207\u308a\u306b\u3057\u305f\u308a\u3001\u5f8c\u308d\u306b <code>'\u5186'<\/code> \u3092\u4ed8\u3051\u308b\u306a\u3069\u3001\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u81ea\u7531\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30c7\u30fc\u30bf\u30e9\u30d9\u30eb\u3084\u8ef8\u30e9\u30d9\u30eb\u306e\u5236\u5fa1<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>xaxis<\/code>, <code>yaxis<\/code> \u306e <code>title<\/code>, <code>labels<\/code>, <code>formatter<\/code> \u3092\u7528\u3044\u3066\u3001<strong>\u8ef8\u5468\u308a\u306e\u8868\u73fe\u3092\u67d4\u8edf\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/strong>\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30fb\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30c1\u30e3\u30fc\u30c8\u306f\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u306b\u63cf\u753b\u3055\u308c\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u306e\u5e45\u306b\u5408\u308f\u305b\u3066\u30ea\u30b5\u30a4\u30ba\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b7\u30f3\u30d7\u30eb\u306a\u304c\u3089\u3001\u63cf\u753b\u6642\u306e\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3082\u7d44\u307f\u8fbc\u307f\u3067\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">Google Charts<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/googlechart-line.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"468\" src=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/googlechart-line.gif\" alt=\"\" class=\"wp-image-8373\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5c0e\u5165\u624b\u9806<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.CDN\u30ea\u30f3\u30af\u306e\u8ffd\u52a0<\/strong> (HTML\u306e<code>&lt;head&gt;<\/code>\u5185\u306b\u8a18\u8ff0)<\/h5>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-1fb98ed038f5b63502ecd885e345e7c9\"><code>\n&lt;script type=\"text\/javascript\" src=\"https:\/\/www.gstatic.com\/charts\/loader.js\">&lt;\/script>\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.JavaScript\u3092\u8ffd\u52a0<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-efddc54547bb9fc1e2e6793e398e2d64\"><code>\n&lt;script>\n    \/\/ Google Charts\u306e\u30ed\u30fc\u30c9\n    google.charts.load('current', { packages: &#91;'corechart'] });\n    google.charts.setOnLoadCallback(drawChart);\n\n    function drawChart() {\n      \/\/ \u30c7\u30fc\u30bf\u3092Google Charts\u7528\u306e2\u6b21\u5143\u914d\u5217\u306b\u5909\u63db\n      const dataArray = &#91;&#91;'Month', 'Revenue (\u58f2\u4e0a)', 'Expense (\u8cbb\u7528)', 'Profit (\u5229\u76ca)']];\n      monthlyData.forEach(d => {\n        dataArray.push(&#91;d.month, d.revenue, d.expense, d.profit]);\n      });\n\n      \/\/ \u30c7\u30fc\u30bf\u3092\u4f5c\u6210\n      const data = google.visualization.arrayToDataTable(dataArray);\n\n      \/\/ \u30b0\u30e9\u30d5\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\uff08\u30d7\u30ed\u30c3\u30c8\u30dd\u30a4\u30f3\u30c8\u3092\u8868\u793a\u3059\u308b\u8a2d\u5b9a\u3092\u8ffd\u52a0\uff09\n      const options = {\n        title: '2024\u5e74 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca',\n        subtitle: 'Google Charts\u3092\u4f7f\u3063\u305f\u6298\u308c\u7dda\u30b0\u30e9\u30d5',\n        curveType: 'function', \/\/ \u66f2\u7dda\u3092\u6ed1\u3089\u304b\u306b\n        legend: { position: 'top' },\n        chartArea: { width: '80%', height: '70%' },\n        hAxis: {\n          title: '\u6708'\n        },\n        vAxis: {\n          title: '\u91d1\u984d\uff08\u5186\uff09',\n          format: 'short'\n        },\n        colors: &#91;'#1E88E5', '#D32F2F', '#388E3C'],\n        pointSize: 6, \/\/ \u2605\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u306e\u30b5\u30a4\u30ba\u3092\u6307\u5b9a\uff08\u3053\u3053\u304c\u8ffd\u52a0\u70b9\uff09\n        lineWidth: 3  \/\/ \u7dda\u306e\u592a\u3055\n      };\n\n      \/\/ \u30c1\u30e3\u30fc\u30c8\u3092\u63cf\u753b\n      const chart = new google.visualization.LineChart(document.getElementById('chart'));\n      chart.draw(data, options);\n    }\n  &lt;\/script>\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">3<strong>.HTML<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-13c4233626f4aae88d4953b90e3a7f2f\"><code>\n&lt;div id=\"chart\" style=\"width: 900px; height: 500px;\">&lt;\/div>\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"> \u89e3\u8aac\u30fb\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u66f2\u7dda\u306e\u88dc\u5b8c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u53ef\u80fd<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>curveType: 'function'<\/code> \u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001<strong>\u30b9\u30e0\u30fc\u30ba\u306a\u66f2\u7dda\uff08spline\u66f2\u7dda\uff09<\/strong> \u304c\u9069\u7528\u3055\u308c\u3001\u3088\u308a\u76f4\u611f\u7684\u306a\u30b0\u30e9\u30d5\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u8efd\u91cf\u304b\u3064\u9ad8\u901f<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u4ed6\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\uff08Chart.js\u3084D3.js\uff09\u3068\u6bd4\u3079\u3066\u3082\u3001<strong>Google Charts\u306f\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u901f\u5ea6\u304c\u901f\u3044<\/strong>\u305f\u3081\u3001\u30c7\u30fc\u30bf\u304c\u591a\u304f\u306a\u3063\u3066\u3082\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u826f\u597d\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b7\u30f3\u30d7\u30eb\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>colors: ['#1E88E5', '#D32F2F', '#388E3C']<\/code> \u3067<strong>\u5404\u7cfb\u5217\u306e\u8272\u3092\u7c21\u5358\u306b\u6307\u5b9a\u53ef\u80fd<\/strong>\u3002<\/li>\n\n\n\n<li><code>chartArea<\/code> \u306e\u8abf\u6574\u3067\u51e1\u4f8b\u3084\u30bf\u30a4\u30c8\u30eb\u3068\u306e\u9593\u9694\u3092\u6700\u9069\u5316\u3067\u304d\u308b\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30d6\u30e9\u30a6\u30b6\u3068\u306e\u4e92\u63db\u6027\u304c\u9ad8\u3044<\/strong>\n<ul class=\"wp-block-list\">\n<li>Google Charts\u306f<strong>SVG\u3068HTML5\u30d9\u30fc\u30b9<\/strong>\u306a\u306e\u3067\u3001\u307b\u3068\u3093\u3069\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u30cd\u30a4\u30c6\u30a3\u30d6\u306b\u52d5\u4f5c\u3059\u308b\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">Chartist.js<\/h3>\n\n\n\n<p>Chartist.js\u3067\u306f\u3001\u5c11\u306a\u304f\u3068\u3082\u7c21\u5358\u306b\u306f\u8981\u7d20\u306e\u8272\u306f\u6307\u5b9a\u3067\u304d\u306a\u3044\u3088\u3046\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartist-line.png\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"412\" src=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartist-line.png\" alt=\"\" class=\"wp-image-8380\" srcset=\"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartist-line.png 772w, https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartist-line-300x160.png 300w, https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/chartist-line-768x410.png 768w\" sizes=\"(max-width: 772px) 100vw, 772px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5c0e\u5165\u624b\u9806<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.CDN\u30ea\u30f3\u30af\u306e\u8ffd\u52a0<\/strong> (HTML\u306e<code>&lt;head&gt;<\/code>\u5185\u306b\u8a18\u8ff0)<\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-b0ef497467021f3493ee8bde51ecabf1\"><code>\n  &lt;!-- Chartist\u306eCSS\u3068JavaScript\u306e\u8aad\u307f\u8fbc\u307f --&gt;\n  &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/chartist\/dist\/chartist.min.css\"&gt;\n  &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartist\/dist\/chartist.min.js\"&gt;&lt;\/script&gt;\n\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.<\/strong>CSS\u306e\u8a2d\u5b9a<\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-6d12488a2d22832378f60f62874b7ef3\"><code>\n &lt;style>\n    \/* Chartist \u30b0\u30e9\u30d5\u306e\u30b9\u30bf\u30a4\u30eb *\/\n    .ct-chart {\n      height: 400px;\n    }\n\n    \/* \u5404\u7cfb\u5217\u306e\u6298\u308c\u7dda\u3068\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u306e\u30b9\u30bf\u30a4\u30eb *\/\n    .ct-series-a .ct-line,\n    .ct-series-a .ct-point {\n      stroke: #1E88E5;\n    }\n    .ct-series-b .ct-line,\n    .ct-series-b .ct-point {\n      stroke: #D32F2F;\n    }\n    .ct-series-c .ct-line,\n    .ct-series-c .ct-point {\n      stroke: #388E3C;\n    }\n\n    \/* \u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u306e\u30b9\u30bf\u30a4\u30eb *\/\n    .ct-point {\n      stroke-width: 10px; \/* \u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u306e\u30b5\u30a4\u30ba *\/\n    }\n\n    \/* \u51e1\u4f8b\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba *\/\n    .legend {\n      display: flex;\n      justify-content: center;\n      margin-top: 10px;\n    }\n    .legend div {\n      display: flex;\n      align-items: center;\n      margin-right: 15px;\n      font-size: 14px;\n    }\n    .legend span {\n      width: 12px;\n      height: 12px;\n      display: inline-block;\n      margin-right: 5px;\n    }\n  &lt;\/style>\n\n<code><span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"><\/span><\/code><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.HTML\u3068JavaScript\u3092\u8ffd\u52a0<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-9fc1e7d117fe87d1c154f38e6dd0efd1\"><code>\n&lt;h1>2024\u5e741\u6708\uff5e12\u6708 \u6708\u6b21\u58f2\u4e0a\u30fb\u8cbb\u7528\u30fb\u5229\u76ca\u30b0\u30e9\u30d5 (Chartist.js)&lt;\/h1>\n&lt;div class=\"ct-chart\">&lt;\/div>\n&lt;div class=\"legend\">\n  &lt;div>&lt;span style=\"background: #1E88E5;\">&lt;\/span> Revenue (\u58f2\u4e0a)&lt;\/div>\n  &lt;div>&lt;span style=\"background: #D32F2F;\">&lt;\/span> Expense (\u8cbb\u7528)&lt;\/div>\n  &lt;div>&lt;span style=\"background: #388E3C;\">&lt;\/span> Profit (\u5229\u76ca)&lt;\/div>\n&lt;\/div>\n\n&lt;script>\n\nconst labels = monthlyData.map(d => d.month); \/\/ X\u8ef8\u306e\u30e9\u30d9\u30eb\nconst revenueData = monthlyData.map(d => d.revenue);\nconst expenseData = monthlyData.map(d => d.expense);\nconst profitData  = monthlyData.map(d => d.profit);\n\n\/\/ Chartist.js \u306b\u6e21\u3059\u30c7\u30fc\u30bf\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\nconst data = {\n  labels: labels,\n  series: &#91;revenueData, expenseData, profitData]\n};\n\n\/\/ Chartist.js \u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\nconst options = {\n  fullWidth: true,\n  chartPadding: { right: 40 },\n  showPoint: true, \/\/ \u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\uff08\u30d7\u30ed\u30c3\u30c8\u30dd\u30a4\u30f3\u30c8\uff09\u3092\u8868\u793a\n  lineSmooth: Chartist.Interpolation.cardinal({ tension: 0.5 }), \/\/ \u66f2\u7dda\u306e\u6ed1\u3089\u304b\u3055\u3092\u8a2d\u5b9a\n  axisY: {\n    labelInterpolationFnc: function(value) {\n      return value.toLocaleString(); \/\/ \u30ab\u30f3\u30de\u533a\u5207\u308a\n    }\n  }\n};\n\n\/\/ \u30b0\u30e9\u30d5\u3092\u63cf\u753b\nnew Chartist.Line('.ct-chart', data, options);\n\n\n\n&lt;\/script>\n<code>\n<\/code><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"> \u89e3\u8aac\u30fb\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>showPoint: true<\/code> \u3067\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u3092\u660e\u793a\u7684\u306b\u8868\u793a<\/strong><\/li>\n\n\n\n<li><strong><code>lineSmooth<\/code> \u3067\u66f2\u7dda\u306e\u6ed1\u3089\u304b\u3055\u3092\u8abf\u6574<\/strong><\/li>\n\n\n\n<li><strong><strong>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u5bfe\u5fdc\uff08\u81ea\u52d5\u30ea\u30b5\u30a4\u30ba\uff09<\/strong><\/strong><\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306e\u57fa\u672c\u304b\u3089\u5229\u7528\u30b7\u30fc\u30f3\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u9078\u3073\u65b9\u3001\u305d\u3057\u3066\u304a\u3059\u3059\u3081\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u7279\u5fb4\u3068\u6bd4\u8f03\u8868\u307e\u3067\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u6298\u308c\u7dda\u30b0\u30e9\u30d5\u306f\u3001\u30c7\u30fc\u30bf\u306e\u8996\u899a\u5316\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u6709\u7528\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002\u4eca\u56de\u7d39\u4ecb\u3057\u305f\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u6d3b\u7528\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u6700\u9069\u306a\u30b0\u30e9\u30d5\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044\u306d\u3002<\/p>\n\n\n\n<p><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u30c7\u30fc\u30bf\u3092\u308f\u304b\u308a\u3084\u3059\u304f\u4f1d\u3048\u308b\u624b\u6bb5\u3068\u3057\u3066\u3001\u30b0\u30e9\u30d5\u306f\u3068\u3066\u3082\u4fbf\u5229\u3067\u3059\u3088\u306d\u3002\u672c\u30b7\u30ea\u30fc\u30ba\u3067\u306f\u3001Web\u30b5\u30a4\u30c8\u3067\u3088\u304f\u4f7f\u308f\u308c\u308b\u30b0\u30e9\u30d5\u306e\u7a2e\u985e\u3068\u3001\u305d\u308c\u3092\u7c21\u5358\u306b\u8868\u793a\u3067\u304d\u308bJavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u307e\u3067\u306b\u3001\u5272\u5408\u3092\u793a\u3059\u306e [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":8395,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[13,15],"tags":[550,551,22,541,389],"class_list":["post-8300","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend","category-system","tag-chart-js","tag-google-charts","tag-javascript","tag-541","tag-389"],"acf":[],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/fastcoding.jp\/blog\/wp-content\/uploads\/2025\/02\/8300line-chart-top.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/posts\/8300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/comments?post=8300"}],"version-history":[{"count":87,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/posts\/8300\/revisions"}],"predecessor-version":[{"id":8392,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/posts\/8300\/revisions\/8392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/media\/8395"}],"wp:attachment":[{"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/media?parent=8300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/categories?post=8300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastcoding.jp\/blog\/wp-json\/wp\/v2\/tags?post=8300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}