{"id":7015,"date":"2019-01-02T18:00:05","date_gmt":"2019-01-02T18:00:05","guid":{"rendered":"https:\/\/www.anychart.com\/blog\/?p=7015"},"modified":"2018-12-27T07:50:21","modified_gmt":"2018-12-27T07:50:21","slug":"custom-wifi-polar-chart-javascript","status":"publish","type":"post","link":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/","title":{"rendered":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-7016\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\" alt=\"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!\" width=\"100%\" srcset=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png 960w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar-300x200.png 300w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar-768x511.png 768w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/>Solving challenges is a thing that the AnyChart team can\u2019t live without, and we willingly continue to share some of the most interesting customer cases within the framework of <a href=\"https:\/\/www.anychart.com\/blog\/category\/challenge-anychart\/\">Challenge AnyChart!<\/a> on our blog. This feature gives us a great chance to help customers with similar tasks and demonstrate the unlimited data visualization capabilities of our <a href=\"https:\/\/www.anychart.com\">JavaScript charting library<\/a> time after time. The challenge being solved along today\u2019s tutorial is about <strong>building a beautiful WiFi polar chart<\/strong> \u2014 a custom interactive JS (HTML5) <a href=\"https:\/\/www.anychart.com\/chartopedia\/chart-type\/polar-chart\/\">polar chart<\/a> that displays devices depending on the WiFi signal strength.<\/p>\n<p><!--more--><\/p>\n<h2>Data Visualization Task<\/h2>\n<p>The question a customer wanted us to answer is:<\/p>\n<blockquote><p><em><strong>How to use AnyChart charting library to create a polar chart showing devices in different reception zones: excellent, good, medium, and bad?<\/strong><\/em><\/p><\/blockquote>\n<p>To\u00a0illustrate how the chart should look like, the customer attached the following picture:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-7017\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_customer.png\" alt=\"Customer's Wifi Polar Chart\" width=\"60%\" srcset=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_customer.png 490w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_customer-150x150.png 150w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_customer-298x300.png 298w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/p>\n<p>They also mentioned that the numbers in the picture should be accompanied by icons to visually represent the type of each device.<\/p>\n<h2>Solution Overview<\/h2>\n<p>The\u00a0<a href=\"https:\/\/api.anychart.com\/anychart.charts.Polar\" target=\"_blank\" rel=\"nofollow\">polar chart class methods<\/a>\u00a0of the AnyChart API will be a great help in solving this interesting data visualization task.<\/p>\n<p>To begin with, draw a polar chart and add a color palette for different reception zones.<\/p>\n<p>Then make the data points look like devices and work on the chart legend a bit more to\u00a0tune up the visualization.<\/p>\n<h2>Creating WiFi Polar Chart<\/h2>\n<p>Follow the <a href=\"https:\/\/docs.anychart.com\/Basic_Charts\/Polar_Plot\/Overview\" target=\"_blank\" rel=\"nofollow\">JS polar charts documentation<\/a> to draw\u00a0a chart and add a palette.<\/p>\n<p>You can set data for the polar chart as follows:<\/p>\n<pre><code class=\"javascript\">var data = [\r\n    {x: 0,   value: 0, signal: 0, name: \"WiFi hotspot\", deviceType: \"wifi\", mac: 'BF-AD-3A-36-A4-BE'},\r\n    {index: 1, x: 0,   value: 2, signal: -8, name: \"iPhone X\", deviceType: \"phone\", mac: 'D6-18-CD-D4-DE-D2'},\r\n    {index: 2, x: 90,  value: 4, signal: -35, name: \"Samsung s8\", deviceType: \"phone\", mac: '03-ED-5C-E2-76-F4'}\r\n  ];\r\n<\/code><\/pre>\n<p>After it\u2019s done, create a function responsible for linking images to the data points using the <code class=\"javascript\">deviceType<\/code> field already defined in the data:<\/p>\n<pre><code class=\"javascript\">function placeImages() {\r\n    var src;\r\n    if (this.getData(\"deviceType\") === \"phone\")\r\n      src = \"https:\/\/image.flaticon.com\/icons\/svg\/65\/65680.svg\";\r\n    if (this.getData(\"deviceType\") === \"wifi\")\r\n      src = \"https:\/\/image.flaticon.com\/icons\/png\/128\/34\/34143.png\";\r\n    return {\r\n      src: src,\r\n      mode: 'fit',\r\n      opacity: 1\r\n    }\r\n  }\r\n<\/code><\/pre>\n<p>The function is executed when adjusting the series appearance:<\/p>\n<pre><code class=\"javascript\">series.normal().fill(placeImages);\r\nseries.selected().fill(placeImages).stroke('#0f4b86', 3);\r\n<\/code><\/pre>\n<p>The last thing\u00a0you need here is set up a legend for the WiFi polar chart using <a href=\"https:\/\/api.anychart.com\/anychart.standalones.Legend\" target=\"_blank\" rel=\"nofollow\">anychart.standalones.legend()<\/a>:<\/p>\n<pre><code class=\"javascript\">var legend = anychart.standalones.legend();\r\n    var legendItems = [\r\n      {\r\n        text: 'Excellent',\r\n        iconType: \"square\",\r\n        iconFill: '#6cd053',\r\n        iconStroke: {color: 'black', thickness: 2}\r\n      },\r\n<\/code><\/pre>\n<p>And make it interactive on mouse hover by adding the following code:<\/p>\n<pre><code class=\"javascript\">legend.listen(\"legendItemMouseOver\", function(e){\r\n      \/\/ highlight the area\r\n      polar.yGrid().palette().itemAt(e.itemIndex + 1, \"White 0.7\");\r\n    });\r\n    legend.listen(\"legendItemMouseOut\", function(e){\r\n        \/\/ reset the grid to default\r\n\t    polar.yGrid().palette(gridPalette);  \r\n    });\r\n<\/code><\/pre>\n<p>That\u2019s it! The custom JavaScript-based WiFi polar chart is ready. It can be found and modified on the\u00a0<a href=\"https:\/\/playground.anychart.com\/MxA4FBT1\" target=\"_blank\" rel=\"nofollow\">AnyChart Playground<\/a>.<\/p>\n<p><iframe loading=\"lazy\" class=\"anychart-embed anychart-embed-MxA4FBT1\" src=\"https:\/\/playground.anychart.com\/MxA4FBT1\/iframe\" width=\"300\" height=\"150\" frameborder=\"0\" sandbox=\"allow-scripts allow-pointer-lock allow-same-origin allow-popups allow-modals allow-forms\" allowfullscreen=\"allowfullscreen\"><br \/>\n<\/iframe><br \/>\n<script type=\"text\/javascript\">(function(){\nfunction ac_add_to_head(el){\n\tvar head = document.getElementsByTagName('head')[0];\n\thead.insertBefore(el,head.firstChild);\n}\nfunction ac_add_style(css){\n\tvar ac_style = document.createElement('style');\n\tif (ac_style.styleSheet) ac_style.styleSheet.cssText = css;\n\telse ac_style.appendChild(document.createTextNode(css));\n\tac_add_to_head(ac_style);\n}\nac_add_style(\".anychart-embed-MxA4FBT1{width:100%;height:600px;}\");\n})();<\/script><\/p>\n<p>For your reference, the full code of the WiFi polar chart sample is written below:<\/p>\n<pre><code class=\"javascript\">anychart.onDocumentReady(function() {\r\n\r\n  \/\/ create a stage\r\n  var stage = anychart.graphics.create(\"container\");\r\n  \/\/ create data\r\n  var data = [\r\n    {x: 0,   value: 0, signal: 0, name: \"WiFi hotspot\", deviceType: \"wifi\", mac: 'BF-AD-3A-36-A4-BE'},\r\n    {index: 1, x: 0,   value: 2, signal: -8, name: \"iPhone X\", deviceType: \"phone\", mac: 'D6-18-CD-D4-DE-D2'},\r\n    {index: 2, x: 90,  value: 4, signal: -35, name: \"Samsung s8\", deviceType: \"phone\", mac: '03-ED-5C-E2-76-F4'},\r\n    {index: 3, x: 50,  value: 4, signal: -47, name: \"Oneplus3T\", deviceType: \"phone\", mac: '49-5C-D8-54-5A-5B'},\r\n    {index: 4, x: 120, value: 8, signal: -72, name: \"Nokia 6\", deviceType: \"phone\", mac: 'C5-F4-29-05-67-0D'},\r\n    {index: 5, x: 170, value: 2, signal: -12, name: \"Samsung Note9\", deviceType: \"phone\", mac: '91-72-36-E5-C1-0C'},\r\n    {index: 6, x: 200, value: 4, signal: -37, name: \"iPhone XS\", deviceType: \"phone\", mac: 'F5-C3-0F-2B-C8-AE'},\r\n    {index: 7, x: 210, value: 2, signal: -20, name: \"Dell XPS\", deviceType: \"laptop\", mac: '44-99-CF-1E-61-CD'},\r\n    {index: 8, x: 300, value: 4, signal: -42, name: \"Apple MBP\", deviceType: \"laptop\", mac: '2A-76-AC-F0-52-89'},\r\n    {index: 9, x: 100, value: 2, signal: -25, name: \"Lenovo Tab3\", deviceType: \"tablet\", mac: '6B-CC-F8-E8-21-6C'}\r\n  ];\r\n\r\n  \/\/create a chart\r\n  var polar = anychart.polar();\r\n  var dataSet = anychart.data.set(data);\r\n  \/\/create a series\r\n  var series = polar.marker(dataSet);\r\n  \/\/adjust the series appearance\r\n  series.type('circle');\r\n  series.normal().fill(placeImages);\r\n  series.normal().size(15).stroke(null);\r\n  series.hovered().size(17);\r\n  series.selected().size(17);\r\n  series.selected().fill(placeImages).stroke('#0f4b86', 3);\r\n  series.labels(true);\r\n  series.labels()\r\n    .anchor('center')\r\n    .offsetY(-2)\r\n    .fontSize(12)\r\n    .fontColor('white')\r\n    .format(function() {\r\n    return this.getData('index');\r\n  });\r\n\r\n  var gridPalette = [[\"#70e952 0.8\", \"#61da44 0.8\"], [\"#6cd053 0.8\", \"#39d811 0.8\"], [\"#46978d 0.8\", \"#05bda5 0.8\"], [\"#274553 0.8\", \"#01638f 0.8\"], [\"#28323c 0.8\", \"#596985 0.8\"]];\r\n\r\n  \/\/adjust scales and axes\r\n  polar.yGrid().palette(gridPalette);\r\n  polar.yGrid().stroke(\"black\", 6);\r\n  polar.xGrid(false);\r\n  polar.xScale().maximum(360);\r\n  polar.yScale()\r\n    .maximum(9)\r\n    .minimum(0)\r\n    .ticks([0, 1, 3, 5, 7, 9]);\r\n  polar.xAxis(false);\r\n  polar.yAxis(false);\r\n  polar.yAxis().stroke(null);\r\n  polar.background(\"#1f2429\");\r\n\r\n  \/\/adjust the tooltip\r\n  polar.tooltip().format(\"Singnal strenthg: {%signal} dB\\nMAC address: {%mac}\");\r\n  polar.tooltip().titleFormat('{%name}');\r\n\r\n  polar.container(stage).draw();\r\n\r\n  \/\/create and adjust a standalone legend\r\n  var legend = anychart.standalones.legend();\r\n  var legendItems = [\r\n    {\r\n      text: 'Excellent',\r\n      iconType: \"square\",\r\n      iconFill: '#6cd053',\r\n      iconStroke: {color: 'black', thickness: 2}\r\n    },\r\n    {\r\n      text: 'Good',\r\n      iconType: \"square\",\r\n      iconFill: '#46978d',\r\n      iconStroke: {color: 'black', thickness: 2}\r\n    },\r\n    {\r\n      text: 'Average',\r\n      iconType: \"square\",\r\n      iconFill: '#274553',\r\n      iconStroke: {color: 'black', thickness: 2}\r\n    },\r\n    {\r\n      text: 'Poor',\r\n      iconType: \"square\",\r\n      iconFill: '#28323c',\r\n      iconStroke: {color: 'black', thickness: 2}\r\n    }\r\n  ];\r\n\r\n  legend\r\n    .items(legendItems)\r\n    .itemsLayout('vertical')\r\n    .align('left')\r\n    .padding(5)\r\n    .container(stage).draw();\r\n\r\n  legend.listen(\"legendItemMouseOver\", function(e){\r\n    \/\/ highlight the area\r\n    polar.yGrid().palette().itemAt(e.itemIndex + 1, \"White 0.7\");\r\n  });\r\n  legend.listen(\"legendItemMouseOut\", function(e){\r\n    \/\/ reset the grid to default\r\n    polar.yGrid().palette(gridPalette);  \r\n  });\r\n\r\n  function placeImages() {\r\n    var src;\r\n    if (this.getData(\"deviceType\") === \"phone\")\r\n      src = \"https:\/\/image.flaticon.com\/icons\/svg\/65\/65680.svg\";\r\n    if (this.getData(\"deviceType\") === \"laptop\")\r\n      src = \"https:\/\/image.flaticon.com\/icons\/png\/128\/59\/59505.png\";\r\n    if (this.getData(\"deviceType\") === \"tablet\")\r\n      src = \"https:\/\/cdn2.iconfinder.com\/data\/icons\/font-awesome\/1792\/tablet-128.png\";\r\n    if (this.getData(\"deviceType\") === \"wifi\")\r\n      src = \"https:\/\/image.flaticon.com\/icons\/png\/128\/34\/34143.png\";\r\n    return {\r\n      src: src,\r\n      mode: 'fit',\r\n      opacity: 1\r\n    }\r\n  }\r\n});\r\n<\/code><\/pre>\n<hr \/>\n<p>Facing any obstacles when working with <a href=\"https:\/\/www.anychart.com\">AnyChart JS Charts<\/a>? Don\u2019t hesitate to send us your questions at <a href=\"mailto:support@anychart.com\" target=\"_blank\" rel=\"nofollow\">support@anychart.com<\/a> with &#8220;Challenge&#8221; in the subject line. Our <a href=\"https:\/\/www.anychart.com\/support\/\">Support Team<\/a> is fond of solving challenges and showing the customers what AnyChart is capable of.<\/p>\n<p>Check out more similar articles in the <a href=\"https:\/\/www.anychart.com\/blog\/category\/challenge-anychart\/\">Challenge AnyChart!<\/a> section. We add new pieces on a regular basis, and it&#8217;s your challenge that may well turn into one of such advanced data visualization tutorials.<\/p>\n<p><!-- SyntaxHighlighter --><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/default.min.css\"><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/atom-one-light.min.css\"><script src=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/highlight.min.js\"><\/script><script>hljs.initHighlightingOnLoad();<\/script><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Solving challenges is a thing that the AnyChart team can\u2019t live without, and we willingly continue to share some of the most interesting customer cases within the framework of Challenge AnyChart! on our blog. This feature gives us a great chance to help customers with similar tasks and demonstrate the unlimited data visualization capabilities of [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,280,22,23,13,4],"tags":[53,281,258,44,54,256,32,55,36,141,81,57,58,65,56,207,30,172],"class_list":["post-7015","post","type-post","status-publish","format-standard","hentry","category-anychart-charting-component","category-challenge-anychart","category-charts-and-art","category-html5","category-javascript","category-tips-and-tricks","tag-anychart","tag-challenge","tag-charts","tag-charts-and-art","tag-data-visualization","tag-data-visualization-examples","tag-html5","tag-html5-charts","tag-javascript","tag-javascript-charting","tag-javascript-charting-library","tag-javascript-charts","tag-js-chart","tag-js-charting","tag-js-charts","tag-polar-chart","tag-tips-and-tricks","tag-tutorial","wpautop"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!<\/title>\n<meta name=\"description\" content=\"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!\" \/>\n<meta property=\"og:description\" content=\"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"AnyChart News\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AnyCharts\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-02T18:00:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"639\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Irina Maximova\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:site\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Irina Maximova\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\"},\"author\":{\"name\":\"Irina Maximova\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058\"},\"headline\":\"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!\",\"datePublished\":\"2019-01-02T18:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\"},\"wordCount\":441,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\",\"keywords\":[\"AnyChart\",\"challenge\",\"charts\",\"Charts and Art\",\"Data Visualization\",\"data visualization examples\",\"HTML5\",\"html5 charts\",\"JavaScript\",\"javascript charting\",\"JavaScript charting library\",\"javascript charts\",\"js chart\",\"js charting\",\"js charts\",\"polar chart\",\"Tips and tricks\",\"tutorial\"],\"articleSection\":[\"AnyChart Charting Component\",\"Challenge AnyChart!\",\"Charts and Art\",\"HTML5\",\"JavaScript\",\"Tips and Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\",\"url\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\",\"name\":\"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\",\"datePublished\":\"2019-01-02T18:00:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058\"},\"description\":\"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).\",\"breadcrumb\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage\",\"url\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\",\"contentUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png\",\"width\":960,\"height\":639},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.anychart.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\",\"url\":\"https:\/\/www.anychart.com\/blog\/\",\"name\":\"AnyChart News\",\"description\":\"AnyChart JS Charts\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.anychart.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058\",\"name\":\"Irina Maximova\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/023075cf0bac635343d009a289d4c3d32138b5a3890d10f09ed59755e59bc065?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/023075cf0bac635343d009a289d4c3d32138b5a3890d10f09ed59755e59bc065?s=96&r=g\",\"caption\":\"Irina Maximova\"},\"url\":\"https:\/\/www.anychart.com\/blog\/author\/irina-maximova\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!","description":"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!","og_description":"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).","og_url":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/","og_site_name":"AnyChart News","article_publisher":"https:\/\/www.facebook.com\/AnyCharts","article_published_time":"2019-01-02T18:00:05+00:00","og_image":[{"width":960,"height":639,"url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png","type":"image\/png"}],"author":"Irina Maximova","twitter_card":"summary_large_image","twitter_creator":"@AnyChart","twitter_site":"@AnyChart","twitter_misc":{"Written by":"Irina Maximova","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#article","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/"},"author":{"name":"Irina Maximova","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058"},"headline":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!","datePublished":"2019-01-02T18:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/"},"wordCount":441,"commentCount":0,"image":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png","keywords":["AnyChart","challenge","charts","Charts and Art","Data Visualization","data visualization examples","HTML5","html5 charts","JavaScript","javascript charting","JavaScript charting library","javascript charts","js chart","js charting","js charts","polar chart","Tips and tricks","tutorial"],"articleSection":["AnyChart Charting Component","Challenge AnyChart!","Charts and Art","HTML5","JavaScript","Tips and Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/","url":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/","name":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png","datePublished":"2019-01-02T18:00:05+00:00","author":{"@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058"},"description":"Continuing the Challenge AnyChart! feature on our blog, we share a tutorial about how to create a custom interactive WiFi Polar Chart in JavaScript (HTML5).","breadcrumb":{"@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#primaryimage","url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png","contentUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2018\/12\/wifi_polar.png","width":960,"height":639},{"@type":"BreadcrumbList","@id":"https:\/\/www.anychart.com\/blog\/2019\/01\/02\/custom-wifi-polar-chart-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.anychart.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Custom WiFi Polar Chart in JavaScript \u2014 Challenge AnyChart!"}]},{"@type":"WebSite","@id":"https:\/\/www.anychart.com\/blog\/#website","url":"https:\/\/www.anychart.com\/blog\/","name":"AnyChart News","description":"AnyChart JS Charts","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.anychart.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/c79061b5c43d09368b8d44b36842b058","name":"Irina Maximova","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/023075cf0bac635343d009a289d4c3d32138b5a3890d10f09ed59755e59bc065?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/023075cf0bac635343d009a289d4c3d32138b5a3890d10f09ed59755e59bc065?s=96&r=g","caption":"Irina Maximova"},"url":"https:\/\/www.anychart.com\/blog\/author\/irina-maximova\/"}]}},"_links":{"self":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/7015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/comments?post=7015"}],"version-history":[{"count":26,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/7015\/revisions"}],"predecessor-version":[{"id":7160,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/7015\/revisions\/7160"}],"wp:attachment":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/media?parent=7015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/categories?post=7015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/tags?post=7015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}