{"@attributes":{"version":"2.0"},"channel":{"title":"DEV Community: JSCharting","description":"The latest articles on DEV Community by JSCharting (@jscharting).","link":"https:\/\/dev.to\/jscharting","image":{"url":"https:\/\/media2.dev.to\/dynamic\/image\/width=90,height=90,fit=cover,gravity=auto,format=auto\/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F313167%2F664bbf94-1b44-4366-9352-fdd5715f1096.png","title":"DEV Community: JSCharting","link":"https:\/\/dev.to\/jscharting"},"language":"en","item":[{"title":"50 chart types for data visualization explained","pubDate":"Tue, 07 Mar 2023 17:19:34 +0000","link":"https:\/\/dev.to\/jscharting\/50-chart-types-for-data-visualization-explained-1f5g","guid":"https:\/\/dev.to\/jscharting\/50-chart-types-for-data-visualization-explained-1f5g","description":"<p>Charts are a powerful tool for data visualization, but with so many chart types available, it can be overwhelming to choose the right one. To help, we've compiled a list of the top 50 chart types. From basic to complex, this list covers a wide range of options and is sure to provide valuable insights and inspiration for your next project. Let's dive in!<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/area\/line\/\" rel=\"noopener noreferrer\">Area chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jsldv07zirhf7u4amxm.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jsldv07zirhf7u4amxm.png\" alt=\"Area chart\"><\/a><\/p>\n\n<p>An area chart represents data as an area between a line and a baseline. It is used to show how values change over time.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/area\/spline\/\" rel=\"noopener noreferrer\">Area spline chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdb6jgrc42gdux49zfox.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdb6jgrc42gdux49zfox.png\" alt=\"Area spline chart\"><\/a><br>\nAn areaspline chart is a type of chart that displays data points connected by a curved line, which is then filled with a color or pattern to create an area between the line and the x-axis. It is useful for displaying trends over time or comparing multiple data series.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bar\/\" rel=\"noopener noreferrer\">Bar chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy4k9lu09hpemy8xz5zb.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy4k9lu09hpemy8xz5zb.png\" alt=\"Bar chart\"><\/a><\/p>\n\n<p>A bar chart represents data as rectangular bars of different lengths. It is used to compare values across categories.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/dumbbell\/\" rel=\"noopener noreferrer\">Dumbbell chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbe1n5ovsv2e7mkwi9er.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbe1n5ovsv2e7mkwi9er.png\" alt=\"Dumbbell chart\"><\/a><\/p>\n\n<p>A Dumbbell chart is a type of chart that shows the values of a dataset using two connected bars that resemble a dumbbell. <\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/column\/box-and-whisker\/\" rel=\"noopener noreferrer\">Box and whisker plot<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxbn4r14i1yjoadlv20x.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxbn4r14i1yjoadlv20x.png\" alt=\"Box and whisker plot\"><\/a><\/p>\n\n<p>A box and whisker plot is a type of box plot that shows the median, quartiles, and outliers of a dataset.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bubble\/multi-series\/\" rel=\"noopener noreferrer\">Bubble chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9e9v8iadmu4rf5xcb5s.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9e9v8iadmu4rf5xcb5s.png\" alt=\"Bubble chart\"><\/a><\/p>\n\n<p>A bubble chart represents data as bubbles of different sizes. It is used to show the relationship between three variables.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/calendar\/\" rel=\"noopener noreferrer\">Calendar chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsw3wohkpjf5q9nyw4nc.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsw3wohkpjf5q9nyw4nc.png\" alt=\"Calendar chart\"><\/a><\/p>\n\n<p>A calendar chart, also known as a heatmap calendar, is a type of chart that displays data points in a calendar-like format, typically by using color to represent different values. Each cell in the calendar represents a day, week, or month, and the color of the cell indicates the value of the data for that time period. Calendar charts are often used to show patterns and trends over time, such as seasonal fluctuations or changes in behavior.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/finance-stock\/candlestick\/\" rel=\"noopener noreferrer\">Candlestick chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9o92vl7yph9n5hd7wqw.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9o92vl7yph9n5hd7wqw.png\" alt=\"Candlestick chart\"><\/a><\/p>\n\n<p>A candlestick chart is a financial chart that shows the opening, closing, high, and low prices of a security.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/geographic-map\/us-counties-choropleth\/\" rel=\"noopener noreferrer\">Choropleth map<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchy33s2ikbcobdzexxmt.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchy33s2ikbcobdzexxmt.png\" alt=\"Choropleth map\"><\/a><\/p>\n\n<p>A choropleth map is a type of map that shows the distribution of a variable across geographic regions using different colors or shades.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/circular-gauge\/grid-column\/\" rel=\"noopener noreferrer\">Circular column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zk1jkfzw7pthksosqbj.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zk1jkfzw7pthksosqbj.png\" alt=\"Circular column chart\"><\/a><\/p>\n\n<p>A circular column chart is a type of bar chart that uses a circular layout to show the values of a dataset.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/circular-gauge\/\" rel=\"noopener noreferrer\">Circular gauge<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhah17qfh2gkl8ex9nmi.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhah17qfh2gkl8ex9nmi.png\" alt=\"Circular gauge\"><\/a><\/p>\n\n<p>An activity ring gauge often nested to compare separate values for progress throughout a period.  Uniquely circular gauges have targets at 100% and can overlap themselves to visualize values greater than 100%.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bar\/clustered\/\" rel=\"noopener noreferrer\">Clustered bar chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflfrm0aukl061kgmqdnj.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflfrm0aukl061kgmqdnj.png\" alt=\"Clustered bar chart\"><\/a><\/p>\n\n<p>A clustered bar chart is a type of chart used to display data points as horizontal bars grouped together by category, where the length of each bar corresponds to the value of the data it represents. The chart is created by plotting the data on a graph with the y-axis representing the categories being compared and the x-axis representing the values being measured. Clustered bar charts are commonly used to compare data across different categories, where multiple data series are compared side-by-side within each category.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/column\/clustered\/\" rel=\"noopener noreferrer\">Clustered column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cs6pfqxz2ur1q8ck7tj.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cs6pfqxz2ur1q8ck7tj.png\" alt=\"Clustered column chart\"><\/a><\/p>\n\n<p>A clustered column chart is a type of chart used to display data points as vertical bars grouped together by category, where the length of each bar corresponds to the value of the data it represents. The chart is created by plotting the data on a graph with the x-axis representing the categories being compared and the y-axis representing the values being measured. Clustered column charts are commonly used to compare data across different categories, where multiple data series are compared side-by-side within each category.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/column\/\" rel=\"noopener noreferrer\">Column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfy9hl7v2dm5t0azpy8z.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfy9hl7v2dm5t0azpy8z.png\" alt=\"Column chart\"><\/a><\/p>\n\n<p>A column chart displays data as vertical bars of varying heights where each bar corresponds to the value of the data. It's commonly used for comparing data across categories or showing changes in data over time.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/combination\/\" rel=\"noopener noreferrer\">Combo chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrnohfqs42oopo6esdm5.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrnohfqs42oopo6esdm5.png\" alt=\"Combo chart\"><\/a><\/p>\n\n<p>A combo chart combines two or more types of charts to show different aspects of a dataset.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/donut\/\" rel=\"noopener noreferrer\">Donut chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvimvayp66i10wlbnqcu.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvimvayp66i10wlbnqcu.png\" alt=\"Donut chart\"><\/a><\/p>\n\n<p>A donut chart is similar to a pie chart, but it has a hole in the center. It is used to show the proportion of each category in a dataset.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-features\/axis\/multi-y-axes\/\" rel=\"noopener noreferrer\">Dual-axis chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm40a1ew9sr69njrp3ra9.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm40a1ew9sr69njrp3ra9.png\" alt=\"Dual-axis chart\"><\/a><\/p>\n\n<p>A dual-axis chart is a type of chart that shows two sets of data using two different scales on the same chart.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/column\/error\/\" rel=\"noopener noreferrer\">Error column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91ybl7h3fafi7m0cn5rc.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91ybl7h3fafi7m0cn5rc.png\" alt=\"Error column chart\"><\/a><\/p>\n\n<p>An error column chart is a type of chart that shows the variability of a dataset using error bars on a column chart.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/venn\/euler-diagram-of-british-isles\/\" rel=\"noopener noreferrer\">Euler chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft636vkqpnaejuhr2qlxp.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft636vkqpnaejuhr2qlxp.png\" alt=\"Euler chart\"><\/a><\/p>\n\n<p>An Euler chart is a type of chart used to represent the relationships between different sets of data, typically in the form of circles or arcs that show the overlap or intersection between different categories or groups. Euler charts are often used in mathematics and logic to illustrate set theory and other abstract concepts.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/funnel\/\" rel=\"noopener noreferrer\">Funnel chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4ij2mrcts6pytzotli7.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4ij2mrcts6pytzotli7.png\" alt=\"Funnel chart\"><\/a><\/p>\n\n<p>A funnel chart is a type of chart that is often used in sales and marketing to represent the stages in a process or customer journey. It is called a funnel chart because its shape resembles a funnel, with a wide top and a narrow bottom. The top of the chart represents the initial stage, while the bottom represents the final stage. Each section of the funnel represents the number of people or items that progress to the next stage, with the number decreasing as the stages progress. Funnel charts are often used to identify areas where potential customers drop off in the sales or marketing process, and to optimize the process to improve conversions.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/gantt\/\" rel=\"noopener noreferrer\">Gantt chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i7cwvan8eo2ytkz3u2u.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i7cwvan8eo2ytkz3u2u.png\" alt=\"Gantt chart\"><\/a><\/p>\n\n<p>A Gantt chart is a bar chart used to show a project schedule. It shows the start and end dates of different tasks.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/angular-gauge\/\" rel=\"noopener noreferrer\">Gauge charts<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedlstvbe7eflxdl86chl.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedlstvbe7eflxdl86chl.png\" alt=\"Gauge charts\"><\/a><\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm9uh14gznq3ytzwx2wr.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm9uh14gznq3ytzwx2wr.png\" alt=\"Gauge charts\"><\/a><\/p>\n\n<p>Gauges are types of charts that show values as pointers on a circular dial. They are used to show the current status of a system or process.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/heatmap\/\" rel=\"noopener noreferrer\">Heatmap Chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60gqpont3iwpu0m2s55i.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60gqpont3iwpu0m2s55i.png\" alt=\"Heatmap\"><\/a><\/p>\n\n<p>A heatmap is a matrix that uses color to represent values. It is used to show patterns in data. Or Heatmap: A heatmap represents data as a color-coded grid. It is used to show how values change across two dimensions.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/line\/\" rel=\"noopener noreferrer\">Line chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkyi0g65ze4zx9w4xwxv.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkyi0g65ze4zx9w4xwxv.png\" alt=\"Line chart\"><\/a><\/p>\n\n<p>A line chart represents data as a series of points connected by lines. It is used to show trends over time.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/linear-gauge\/\" rel=\"noopener noreferrer\">Linear gauge<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzggtwuq28hqaiz51oot7.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzggtwuq28hqaiz51oot7.png\" alt=\"Linear gauge\"><\/a><\/p>\n\n<p>A linear gauge is a type of chart used to display a single value within a defined range, typically in the form of a horizontal or vertical bar with a pointer or marker indicating the value on a scale. The gauge can be used to represent various types of data, such as temperature, weight, or financial metrics. Linear gauges are often used in dashboards or other monitoring applications to provide a quick, at-a-glance view of key metrics.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/variwide\/marimekko\/\" rel=\"noopener noreferrer\">Marimekko chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnydl3j6ps0wtoytquptr.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnydl3j6ps0wtoytquptr.png\" alt=\"Marimekko chart\"><\/a><\/p>\n\n<p>A Marimekko chart is a type of stacked bar chart that shows the proportion of each category within a larger category.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/micro-chart\/\" rel=\"noopener noreferrer\">Microcharts<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2jd6yrsgat7tl1vrbc.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2jd6yrsgat7tl1vrbc.png\" alt=\"Microcharts\"><\/a><\/p>\n\n<p>A microchart is a type of chart used to display a small amount of data in a compact and easy-to-read format, typically with a small number of data points and minimal visual elements. Microcharts are often used in dashboards or other monitoring applications to provide quick insights into key metrics.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/variwide\/mosaic-plot\/\" rel=\"noopener noreferrer\">Mosaic plot<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9mkozewi6a2wwb48ien.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9mkozewi6a2wwb48ien.png\" alt=\"Mosaic plot\"><\/a><\/p>\n\n<p>A mosaic plot is a type of treemap that shows the proportions of different categories within each rectangle. <\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/organizational\/\" rel=\"noopener noreferrer\">Organizational chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3vlno42ol7xsxkka673.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3vlno42ol7xsxkka673.png\" alt=\"Organizational chart\"><\/a><\/p>\n\n<p>An organizational chart is a type of chart used to represent the structure of an organization, typically in the form of a hierarchical diagram that shows the relationships between different positions or departments. Organizational charts are often used to illustrate reporting relationships or to clarify the roles and responsibilities of different positions within an organization.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/pert\/\" rel=\"noopener noreferrer\">PERT chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq74q0xzyt7dynhrtfbkc.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq74q0xzyt7dynhrtfbkc.png\" alt=\"PERT chart\"><\/a><\/p>\n\n<p>A PERT chart (Program Evaluation and Review Technique) is a type of chart used to plan and manage complex projects, typically in the form of a network diagram that shows the dependencies between different tasks or activities. PERT charts are often used to identify critical paths and potential bottlenecks in a project schedule.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/pictogram\/\" rel=\"noopener noreferrer\">Pictogram chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsbmthehhqwzha9xxxbg.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsbmthehhqwzha9xxxbg.png\" alt=\"Pictogram chart\"><\/a><\/p>\n\n<p>A pictogram chart is a type of chart used to represent data using icons or pictures, typically in a grid or matrix format. Pictogram charts are often used to convey information in a visually appealing way, such as in infographics or other forms of data visualization.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/pie\/\" rel=\"noopener noreferrer\">Pie chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqfvwbknsimalmqzxy8u.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqfvwbknsimalmqzxy8u.png\" alt=\"Pie chart\"><\/a><\/p>\n\n<p>A pie chart represents data as slices of a pie. It is used to show the proportion of each category in a dataset.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bar\/population-pyramid\/\" rel=\"noopener noreferrer\">Population pyramid<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jljny8lx9ko0bffdoqr.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jljny8lx9ko0bffdoqr.png\" alt=\"Population pyramid\"><\/a><\/p>\n\n<p>A population pyramid is a type of chart that shows the age and gender distribution of a population. <\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/radar-polar\/\" rel=\"noopener noreferrer\">Radar chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbox2403dvoesr58c6tx.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbox2403dvoesr58c6tx.png\" alt=\"Radar chart\"><\/a><\/p>\n\n<p>A radar chart represents data as a polygon with several vertices. It is used to show the performance of different categories across multiple dimensions.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/radar-polar\/range-column\/\" rel=\"noopener noreferrer\">Radial column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgkdpkvxa5nxqkkpnpld.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgkdpkvxa5nxqkkpnpld.png\" alt=\"Radial column chart\"><\/a><\/p>\n\n<p>A radial column chart is a type of radar chart that shows data as columns radiating out from the center of a circle.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/radar-polar\/area-comparison\/\" rel=\"noopener noreferrer\">Radial chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84qploafrnlxsfb636op.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84qploafrnlxsfb636op.png\" alt=\"Radial chart\"><\/a><\/p>\n\n<p>A radial chart represents data as a series of points on a circle. It is used to show how values change over time. <\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/scatter-plot\/\" rel=\"noopener noreferrer\">Scatter plot<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw1dv08q4zorgzc8ehop.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw1dv08q4zorgzc8ehop.png\" alt=\"Scatter plot\"><\/a><\/p>\n\n<p>A scatter plot represents data as a collection of points. It is used to show the relationship between two variables.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/slope\/\" rel=\"noopener noreferrer\">Slope chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0xi018fhrr8lo6gi0t6.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0xi018fhrr8lo6gi0t6.png\" alt=\"Slope chart\"><\/a><\/p>\n\n<p>A slope chart is a type of line chart that shows changes in data between two points in time. <\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/micro-chart\/sparkline\/\" rel=\"noopener noreferrer\">Sparkline chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few0uuhmunizrltaim137.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few0uuhmunizrltaim137.png\" alt=\"Sparkline chart\"><\/a><\/p>\n\n<p>A sparkline chart is a type of small, simple chart that displays data trends in a single row or column, typically without axes or labels. Sparkline charts are often used to show trends or patterns in data over time or to compare multiple data points at a glance.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/radar-polar\/area-icon-axis-tick\/\" rel=\"noopener noreferrer\">Spider chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3qjumk9a1y3v9fucjto.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3qjumk9a1y3v9fucjto.png\" alt=\"Spider chart\"><\/a><\/p>\n\n<p>A spider chart is a type of radar chart that shows the performance of different categories across multiple dimensions.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/line\/spline\/\" rel=\"noopener noreferrer\">Spline chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjswkovcfhx2eatrckme.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjswkovcfhx2eatrckme.png\" alt=\"Spline chart\"><\/a><\/p>\n\n<p>A spline chart is a type of chart that displays data points connected by a smooth curve, which is often used to show trends over time or to interpolate missing data. It is similar to a line chart but provides a more visually appealing and smooth representation of the data.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/area\/stacked-line\/\" rel=\"noopener noreferrer\">Stacked area chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfjoe5kbmomts3f0t0ve.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfjoe5kbmomts3f0t0ve.png\" alt=\"Stacked area chart\"><\/a><\/p>\n\n<p>A stacked area chart is a type of area chart that shows the proportions of different categories as stacked areas.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bar\/csv-stacked-sales\/\" rel=\"noopener noreferrer\">Stacked bar chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhe0c2rw10htbbjtpazh.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhe0c2rw10htbbjtpazh.png\" alt=\"Stacked bar chart\"><\/a><\/p>\n\n<p>A stacked bar chart represents data as stacked bars. It is used to show the proportion of each category within a larger category.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/column\/stacked\/\" rel=\"noopener noreferrer\">Stacked column chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fs28mroscrk7t3pwvrp.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fs28mroscrk7t3pwvrp.png\" alt=\"Stacked column chart\"><\/a><\/p>\n\n<p>A stacked column chart represents data as stacked columns. It is used to show the proportion of each category within a larger category.<br>\nStock chart: A stock chart is a type of candlestick chart that shows the performance of a company's stock over time.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/treemap\/\" rel=\"noopener noreferrer\">Treemap chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfnredxvx06c1whf5umb.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfnredxvx06c1whf5umb.png\" alt=\"Treemap chart\"><\/a><\/p>\n\n<p>A treemap chart is a type of chart used to display hierarchical data in a rectangular layout, where each rectangle represents a node in the hierarchy and the size or color of the rectangle corresponds to the value of the data it represents. Treemap charts are often used to visualize data related to file sizes, website traffic, or market share, among other applications.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/venn\/icon-groups\/\" rel=\"noopener noreferrer\">Venn chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0aeoqecl5zl5jzro736g.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0aeoqecl5zl5jzro736g.png\" alt=\"Venn chart\"><\/a><\/p>\n\n<p>A Venn chart is a type of chart used to show the relationships between different sets of data, typically in the form of overlapping circles or ellipses. Venn charts are often used to illustrate the intersections and differences between different groups or categories.<\/p>\n\n<h2>\n  \n  \n  <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/waffle\/\" rel=\"noopener noreferrer\">Waffle chart<\/a>\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ripbbcsjk9iwjygyp7p.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ripbbcsjk9iwjygyp7p.png\" alt=\"Waffle chart\"><\/a><\/p>\n\n<p>A waffle chart, also known as a square pie chart, is a type of chart that shows the proportions of different categories using a grid of squares that are filled or unfilled according to the data values.<\/p>\n\n<h2>\n  \n  \n  Conclusion\n<\/h2>\n\n<p>Data visualization is a critical skill in today's data-driven world, and choosing the right chart type is an essential aspect of effective data communication. By exploring the top 50 chart types generated with a <a href=\"https:\/\/jscharting.com\/\" rel=\"noopener noreferrer\">JavaScript chart library<\/a> I hope you have gained a deeper understanding of the various chart visualization options available and can more effectively choose the right one for your data. Whether you're creating a business report, a scientific publication, or a social media campaign, utilizing the right chart type can help you convey your message in a clear, concise, and visually compelling way.<\/p>\n\n","category":["javascript","webdev","datascience","design"]},{"title":"What's new in JavaScript Charting for 2023?","pubDate":"Wed, 22 Feb 2023 19:10:36 +0000","link":"https:\/\/dev.to\/jscharting\/whats-new-in-javascript-charting-for-2023-1edp","guid":"https:\/\/dev.to\/jscharting\/whats-new-in-javascript-charting-for-2023-1edp","description":"<h2>\n  \n  \n  Organizational chart vertical leaf point layout\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/organizational\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk40zk78p6zzadp3gn7g0.png\"><\/a><br>\nYou can now optimize organizational chart layouts by stacking leaf points vertically. This can reduce the space required for the chart which is especially useful for larger organizational charts.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  defaultSeries: {\n    leafPointLayout: 'vertical'\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  New series and point defaultLeafPoint options\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/gantt\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx1bo9093kmzmqoyq1pzh.png\"><\/a><br>\nTo help you work more efficiently with hierarchical charts, you can apply point options to only leaf points (points without any points below them in the hierarchy) or only apply options to leaf points that descend from a specific parent.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  defaultSeries: {\n    defaultLeafPoint: {\n      color: 'blue'\n    }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Bullet Graphs and Charts\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/bullet\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F953jsna9r1g7cnj7a5qr.png\"><\/a><br>\nJSCharting supports a variety of bullet charts and graphs including bullet microcharts, full size bullet bars with targets and bullet graph dashboards.<\/p>\n<h2>\n  \n  \n  Slope Graph Examples\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/slope\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6lt91d2rt7uwlx012st.png\"><\/a><br>\nWe enhanced the line chart to enable quick and easy slope graph creation. Slope charts are a compact visual ideal for dashboards and provide glanceable views comparing two points based on the slope of the line. Dual axis and category scale customization helps you create powerful slope charts that communicate values visually using a combination of labels, values and colors.<\/p>\n<h2>\n  \n  \n  Dumbbell Charts\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/dumbbell\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxnkw0rpkw9tgwil0h40.png\"><\/a><br>\nJSCharting 3.4 adds detailed Dumbbell chart examples (also known as known as DNA charts, barbell charts, gap charts or connected dot plots) including vertical dumbbell charts, multiple axis dumbbell charts and styled dumbbell segments.<\/p>\n<h2>\n  \n  \n  Waffle Charts\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/waffle\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftz9oxrsniq3fhv9y8mq1.png\"><\/a><br>\nJSCharting 3.4 expands our waffle chart examples including use within organizational chart nodes. Waffle charts visualize data or completion using a grid of dots, tiles or colored cells and provide quick comparisons across values.<\/p>\n<h2>\n  \n  \n  New widget module with a simplified API\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/widget\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0lm63bso2f6zmofkywt.png\"><\/a><br>\nJSCharting 3.4 ships with a new widgets module that wraps a select set of charts with a simplified API. Combined with other smart optimizations, this makes simple dashboard style widgets more accessible without the steeper learning-curve of full featured charts.<\/p>\n<h2>\n  \n  \n  Three widget module types\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3ztx52tjdi1s3j8j63v.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3ztx52tjdi1s3j8j63v.png\" alt=\"Image description\"><\/a><br>\nThe new widget module includes Circular, Linear, and BarColumn types.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>new JSCWidgets.Circular('div1', {\n  label: 'Signal Strength',\n  value: .75,\n  max: 1\n});\n\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Advanced widget labeling support\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnsdua0pt1ftm80ya5bfq.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnsdua0pt1ftm80ya5bfq.png\" alt=\"Image description\"><\/a><br>\nWidgets have 3 labels: value, label, and icon you can customize with different text and positions. This leverages the new improved shape label layout and positioning options with a simplified API.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>new JSCWidgets.Linear('div1',\n{\n  label: ['Walk', 'Run', 'Bicycle'],\n  value: [.54, .14, .94],\n  min: 0, max: 1,\n  iconPosition: 'left',\n  labelPosition: 'bottom left',\n  valuePosition: 'bottom right'\n});\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Ability to style widgets with CSS\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnr4dujs98sjhh0tg6mvq.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnr4dujs98sjhh0tg6mvq.png\" alt=\"Image description\"><\/a><br>\nTo improve widgets accessibility, we added support for styling widget text using CSS. Modify the provided CSS file to create new defaults or add new CSS to overwrite styling for specific widgets.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>.jsc-widget .linear .title{\n  font-weight: normal;\n}\n.jsc-widget .linear .value {\n  font-size: 35px;\n}\n#div1 .jsc-widget .linear .value {\n  font-size: 40px;\n}\n#div2 .jsc-widget .linear .value {\n  font-size: 30px;\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Widgets optimized for Dark or Light Modes\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgwr1afc9lr8p83r2fvs.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgwr1afc9lr8p83r2fvs.png\" alt=\"Image description\"><\/a><br>\nTo make widgets more flexible out of the box, we have defined default colors and color opacities to work on dark or light backgrounds automatically. This helps simplify the creation of dark mode user interfaces.<\/p>\n<h2>\n  \n  \n  New axis maxTickCount property\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F349d4h3tpcmne0l3atvd.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F349d4h3tpcmne0l3atvd.png\" alt=\"Image description\"><\/a><br>\nIt is now easier to control the number of automatically generated axis ticks on a chart. Use the axis maxTickCount to specify the maximum number of ticks the axis should generate.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  yAxis: {\n    scale: { maxTickCount:5 }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Ability to center range tick grid lines\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpqjuimzsmf7rrv7urnq.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpqjuimzsmf7rrv7urnq.png\" alt=\"Image description\"><\/a><br>\nSometimes, you may want a grid line to center on a range tick. For example, having a category line up with a column.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  xAxis: {\n    defaultTick: {\n      gridLine: {\n        center: true, width: 'column'\n      }\n    }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Improvements to multiple gauge layout\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qfe49wpxsasrggo4ain.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qfe49wpxsasrggo4ain.png\" alt=\"Image description\"><\/a><br>\nWe enhanced the way multiple gauges and radars are laid out on a chart to make better use of the available space.<\/p>\n<h2>\n  \n  \n  Improved shape label positioning\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqbo31r5nf9lgnoyubbc.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqbo31r5nf9lgnoyubbc.png\" alt=\"Image description\"><\/a><br>\nWe completed a significant overhaul of the shape label positioning algorithm to handle many labels in different positions more reliably.<\/p>\n<h2>\n  \n  \n  New positions for shape labels\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2c6m3v1314gk56xacrdn.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2c6m3v1314gk56xacrdn.png\" alt=\"Image description\"><\/a><br>\nWe've added new shape label positions \u201cinside middle left\u201d and \u201cinside middle right\u201d enabling you to add labels to gauges with more unique combinations and alignments.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  defaultSeries: {\n    shapeLabel: {\n      placement: 'inside',\n      align:'left'\n      verticalAlign: 'middle'\n    }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Use color modifiers with axis marker labels\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3nf3eu6k8tz7ui42pf9.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3nf3eu6k8tz7ui42pf9.png\" alt=\"Image description\"><\/a><br>\nWe've improved axis marker label features to support relative color adjustments. Now you can set colors relative to other colors already defined such as marker colors.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/* Axis marker labels will use\n* marker color but darker. *\/\n{\n  defaultAxis: {\n    defaultMarker: {\n      label: { color: 'darken' }\n    }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Ability to disable automatic label wrapping\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezha995bpnrdu9t9be4f.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezha995bpnrdu9t9be4f.png\" alt=\"Image description\"><\/a><br>\nYou can now disable automatic label wrapping in all labels.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  defaultPoint: {\n    label: { autoWrap: false }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Reliably use maxWidth with labels\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnu04aqxjt1hyouf58we.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnu04aqxjt1hyouf58we.png\" alt=\"Image description\"><\/a><br>\nWant to limit label width? Use the maxWidth label option to reliably limit the width a label can be.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  defaultPoint: {\n    label: { maxWidth: 70 }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Label ellipsis text overflow support\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F991bn6qe9isotql8h41p.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F991bn6qe9isotql8h41p.png\" alt=\"Image description\"><\/a><br>\nWe added support for ellipsis text overflow. You can now disable wrapping, set a maxWidth and ellipsis overflow to reduce the possible size of a label in a clean way.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>{\n  yAxis: {\n    defaultTick: {\n      label: {\n        autoWrap: false,\n        maxWidth: 150,\n        overflow: 'ellipsis'\n      }\n    }\n  }\n}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Improved series.yAt(x) for ranged Y values\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwixt9t8v3pcfqzs30mlm.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwixt9t8v3pcfqzs30mlm.png\" alt=\"Image description\"><\/a><br>\nWe've extended support for the series.yAt(x) function. Previously it only interpolated single Y values; but, now it also interpolates between ranged y values.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>chart.series(0).yAt('2\/15\/2020');\n\/\/ -&gt; [22.344827586206897, 40.793103448275865]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>Want to try it for yourself? <a href=\"https:\/\/www.jscharting.com\/download\/\" rel=\"noopener noreferrer\">Download JSCharting Version 3.4<\/a><\/p>\n\n","category":["javascript","webdev"]},{"title":"What's New in JavaScript Charting?","pubDate":"Tue, 05 Apr 2022 16:16:43 +0000","link":"https:\/\/dev.to\/jscharting\/whats-new-in-javascript-charting-2ldl","guid":"https:\/\/dev.to\/jscharting\/whats-new-in-javascript-charting-2ldl","description":"<h2>\n  \n  \n  Widget charts for dashboards\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/widget\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--7TTYoE1_--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/6x1mrmi4b1807xfkn92p.png\" width=\"800\" height=\"494\"><\/a><br>\n15 new dashboard widget chart examples from linear gauge to columns and bars, circular gauge with icons to full bleed area lines, typographic widgets and line chart widgets with change indicators help you quickly and easily build custom chart dashboards.<\/p>\n<h2>\n  \n  \n  Pictogram charts and pictographs\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/pictogram\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--o2WSW5KT--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/x9xatrlodft73nsq9dr2.png\" width=\"800\" height=\"494\"><\/a><br>\nJSCharting\u2019s integrated icon support provides a huge selection for pictogram charts and graphs. Pictogram bars and percentage charts combined with strong typography create glanceable charts that convey their data quickly and easily. <\/p>\n<h2>\n  \n  \n  Ability to set multiple parents and connector styles per data\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/organizational\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--1eF8NFvv--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/rv7w42n9prfjyb3cpi06.png\" width=\"800\" height=\"494\"><\/a><br>\npoint<br>\nWe enhanced the point.parent property to help you define multiple parents and connector line styling for each parent independently.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>parent:[\n{id: 'p1', line: {color: 'green'}},\n{id: 'p2,p3', line: {color: 'red'}}\n]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Gantt chart critical path support\n<\/h2>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/gantt\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--Q-0IzaOT--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/7p7b6vxv3f2j4s0ihnj2.png\" width=\"800\" height=\"494\"><\/a><br>\nNew connector styling support for Gantt charts lets you customize and highlight a Gantt chart\u2019s critical path.<\/p>\n<h2>\n  \n  \n  Define axis categories\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--CXUxJuBB--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/egj0cvhtx7v8hevjhf90.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--CXUxJuBB--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/egj0cvhtx7v8hevjhf90.png\" alt=\"Define axis categories\" width=\"800\" height=\"494\"><\/a><br>\nWe added a new axis.categories property so you can define data point category names only once and have more control over the sort order. For convenience, you can specify an array of y values for the series.points property.<\/p>\n\n<p>Before<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>series: [\n{name: 'Series 1',\npoints: [{x: 'A', y: 5}, {x: 'B', y: 10}]\n}, {name: 'Series 2',\npoints: [{x: 'A', y: 15}, {x: 'B', y: 20}]\n}]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>After<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>xAxis_categories: ['A', 'B'],\nseries: [\n{name: 'Series 1', points: [5, 10]},\n{name: 'Series 2', points: [15, 20]}]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Right-angle or straight organizational connector lines\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ivIqoF1G--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/8yu3smlqpm387sqv8p5v.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ivIqoF1G--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/8yu3smlqpm387sqv8p5v.png\" alt=\"Right-angle or straight organizational connector lines\" width=\"800\" height=\"494\"><\/a><br>\nWe enhanced how organizational connector lines appear by drawing them at right angles by default. You can use the straight option to change this default and draw connector lines directly between points.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>type: 'organizational straight'\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s---e3-wtvN--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/yd08t8y2bmlhd5hgntu9.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s---e3-wtvN--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/yd08t8y2bmlhd5hgntu9.png\" alt=\"Synchronize organizational node widths and heights\" width=\"800\" height=\"494\"><\/a><\/p>\n\n<h2>\n  \n  \n  Synchronize organizational node widths and heights\n<\/h2>\n\n<p>We added point.annotation.syncWidth and syncHeight properties to help you control the sizing and visual balance of organizational chart nodes.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_annotation: {\n\/\/ syncWidth: true == syncWidth_with: 'level'\nsyncWidth_with: 'level',\nsyncHeight_with: 'all'}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Point hierarchy connector styling and selection\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--yNEMWMZB--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/9h7gtz55ea72dkbxdoh5.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--yNEMWMZB--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/9h7gtz55ea72dkbxdoh5.png\" alt=\"Point hierarchy connector styling\" width=\"800\" height=\"494\"><\/a><br>\nThere is now a way to select specific branches in an organizational or Gantt dependency chart using hierarchy path selectors. You can select all branches from a point up the hierarchy, down the hierarchy, up and down, or between two points. For example<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ All branches from pointID up the hierarchy.\n['pointID', 'up']\n\/\/ All branches from pointID down the hierarchy.\n['pointID', 'down']\n\/\/ All branches from pointID up and down.\n['pointID', 'both']\n\/\/ All branches between pointA and pointB.\n['pointA', 'pointB']\n\/\/ A specific branch of points.\n['pointA', 'pointB', 'pointC']\n\/\/ Multiple branches and selectors.\n[['pointA', 'pointC'], ['pointC', 'up']]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>Use the chart.connectors() function with path selectors to style the connecting lines. The chart.connectors() function lets you get a list of paths based on the selection, modify the connector line styling for specific paths, and reset connector styling to the original style.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ Styles all connector lines from pointA up the hierarchy\nchart.connectors(['pointA', 'up'], {color: 'red'});\n\/\/ Reset all previously applied styling from pointA up the hierarchy\nchart.connectors(['pointA', 'up']);\n\/\/ Reset all line styling previously applied by this function\nchart.connectors();\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Ability to use hierarchy selectors to get points\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--i7eRZMqF--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/8wuj2dvobgbmvbtrp07u.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--i7eRZMqF--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/8wuj2dvobgbmvbtrp07u.png\" alt=\"Ability to use hierarchy selectors to get points\" width=\"800\" height=\"494\"><\/a><br>\nIn addition to styling connector lines using path selectors, you can use them to get a collection of all points included in the selected paths. For example, this applies the selected state to all points within the [\u2018pointA\u2019, \u2018up\u2019] branches.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>chart.series()\n.points(['pointA', 'up'])\n.options({selected: true})\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  New point.connectorLine property\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--5tma36XC--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/twp8yz4a9dwu3qub9sct.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--5tma36XC--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/twp8yz4a9dwu3qub9sct.png\" alt=\"New point.connectorLine property\" width=\"800\" height=\"494\"><\/a><br>\nYou can now specify organizational or Gantt chart connector line styling per data point, or as a default for all points.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_connectorLine:\n{color: 'blue', width: 2})\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  New connector line radius option\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--yAbUTgk7--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/alebdq1utuc3peaht4u3.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--yAbUTgk7--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/alebdq1utuc3peaht4u3.png\" alt=\"New connector line radius option\" width=\"800\" height=\"494\"><\/a><br>\nWe added a connector line radius property to control the rounded corners of organizational connector or Gantt dependency lines. You can also provide an array of two radii for the chart to apply a different radius for each corner along the line.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_connectorLine: {radius: 5}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>Radius for each corner.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_connectorLine: {radius: [0,5]}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Point getParents() and getChildren() functions\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--6z4G61AL--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/x3oc1en08jaxzedcqcmq.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--6z4G61AL--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/x3oc1en08jaxzedcqcmq.png\" alt=\"Point getParents() and getChildren() functions\" width=\"800\" height=\"494\"><\/a><br>\nNeed to manually traverse data points in an organizational chart? Now you can use the getParents() and getChildren() point functions to get collections of points immediately up or down the hierarchy tree.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>chart.series()\n.points(0)\n.getChidren()\n.each(p =&gt; console.log(p.name));\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Linear gradients for  tags\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--57HiYpKD--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/bd2k8sulczxte5op74e1.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--57HiYpKD--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/bd2k8sulczxte5op74e1.png\" alt=\"Linear gradients for &lt;icon&gt; tags\" width=\"800\" height=\"494\"><\/a><br>\nDid you know icons can be used inside any chart labels? JSCharting 3.3 now lets you define rich gradient fills for these icons by specifying a list of colors and an angle as shown below.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>label_text:\n'&lt;icon name=[name] fill=#c41111,#ec5a5a,90&gt;'\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Dynamic gradients\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--1X3Y3_Xj--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/ud4l3pipk5mojd11g881.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--1X3Y3_Xj--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/ud4l3pipk5mojd11g881.png\" alt=\"Dynamic gradients\" width=\"800\" height=\"494\"><\/a><br>\nWe expanded gradient color handling with color adjustment values to help you define gradient colors more easily. After you specify a first gradient color, you can set the rest to any of the color adjustment values.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>label_text:\n'&lt;icon name=[name] fill=#c41111,lightenMore,90&gt;',\nfill: ['#c41111', 'lightenMore', 90]\n\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Dynamic gradients for area chart fill\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ca9mzw8G--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/bwt76caux98zwwm65mkt.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--ca9mzw8G--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/bwt76caux98zwwm65mkt.png\" alt=\"Dynamic gradients for area chart fill\" width=\"800\" height=\"494\"><\/a><br>\nWe\u2019ve expanded dynamic gradient support to the series.shape.fill property. You can set all gradient colors in this property to an adjustment value, including \u2018currentColor\u2019 which refers to the series color.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultSeries_shape_fill:\n['currentColor', 'white', 90] or\n['currentColor', 'lightenmore', 220]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Dynamic gradients for data point fills\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--rzScTAFn--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/ly1vid4ohmx5newoesw5.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--rzScTAFn--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/ly1vid4ohmx5newoesw5.png\" alt=\"Dynamic gradients for data point fills\" width=\"800\" height=\"494\"><\/a><br>\nYou can now use color adjustment values in data point fill gradient colors.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_fill: ['currentColor', 'white', 90]\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Dynamic label outline color\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--_XPVZhAd--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/7zduw0pdhlom2e9izjyi.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--_XPVZhAd--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/7zduw0pdhlom2e9izjyi.png\" alt=\"Dynamic label outline color\" width=\"800\" height=\"494\"><\/a><br>\nJSCharting improves legibility by intelligently selecting data point label colors that contrast with their background. When text overlaps areas such as connector lines, fills or gradients, you can use a text outline with an adjustment value color. This adjustment is based on the automatically selected label color.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>defaultPoint_label:\n{outline: {color: 'contrast'}}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Sync grid line width with columns\n<\/h2>\n\n<p><a href=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--OQcmuhHJ--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/lhh0sgu78uzn2y6k7pb9.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--OQcmuhHJ--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/lhh0sgu78uzn2y6k7pb9.png\" alt=\"Sync grid line width with columns\" width=\"800\" height=\"494\"><\/a><br>\nWe added support to set axis tick grid line width to 'column' in all axis scale types. You can use this with crosshairs, which are axis ticks, or to style column charts to look like progress bars.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>xAxis_crosshair:\n{enabled: true, gridLine_width: 'column'}\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Data object paths for nest()\n<\/h2>\n\n<p>JSCharting now includes support for object property paths in nest key() and rollup() functions. You can use this utility to process your data into groups and extract complex details to visualize on charts.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>let dataGroupedByRoles = nest()\n  .key('attributes.role')\n  .entries(myData);\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Map Zoom Button Position\n<\/h2>\n\n<p>JSCharting 3.3 allows you to modify the default map zoom buttons position.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>toolbar_items_zoom_position: 'inside top right'\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h2>\n  \n  \n  Next.js Support\n<\/h2>\n\n<p>This release includes fixes and enhancements enabling JSCharting to work in the Next.js environment.<\/p>\n\n<h2>\n  \n  \n  Other\n<\/h2>\n\n<ul>\n<li>Organizational connector line pixel snapping.<\/li>\n<li>Organizational chart node labels are centered by default.<\/li>\n<li>Improved organizational chart default view position when zoomed in.<\/li>\n<\/ul>\n\n<p>Want to try it for yourself? <a href=\"https:\/\/www.jscharting.com\/download\/\">Download JSCharting Version 3.3<\/a><\/p>\n\n","category":["javascript","webdev"]},{"title":"6 Best Front-end JavaScript Frameworks: Multi-Year Developer Surveys Visualized [2021 Update]","pubDate":"Wed, 17 Feb 2021 06:29:46 +0000","link":"https:\/\/dev.to\/jscharting\/6-best-front-end-javascript-frameworks-multi-year-developer-surveys-visualized-2021-update-43j4","guid":"https:\/\/dev.to\/jscharting\/6-best-front-end-javascript-frameworks-multi-year-developer-surveys-visualized-2021-update-43j4","description":"<p>JavaScript's popularity has only grown over time and this meteoric rise has resulted in widespread usage from standard front-end development, to server-side usage through node.js to mobile application development. A plethora of front-end JavaScript frameworks and JS libraries have been created by developers, for developers helping to save time and improve application quality. The 6 most popular options are:<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks-2021\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fin6st5kddmzbox4j5d7y.PNG\"><\/a><\/p>\n\n<p>Data courtesy of StateOfJS Surveys 2016, 2017, 2018, 2019, 2020. View an <a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks-2021\/\" rel=\"noopener noreferrer\">interactive version of these charts<\/a> on our blog. <\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks-2021\/\" rel=\"noopener noreferrer\"><br>\n         <img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ndte0qxy0akj552qkqd.PNG\" alt=\"5 Best JavaScript Editors Scaled Visualization\"><br>\n      <\/a><\/p>\n\n<h2>\n  \n  \n  1. React.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8etj4vfvgl2hjhrx2010.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8etj4vfvgl2hjhrx2010.PNG\"><\/a><br>\nReact.js is the leading JavaScript library for building user interfaces. Often erroneously referred to as a front-end JavaScript framework, the React library handles only the View layer of the complete Model View Controller (MVC) for building user interfaces and facilitates the creation of reusable user interface components. React is an open-source library that uses a virtual DOM that optimizes DOM updates to only those components that are changed while giving front end developers the freedom to code as if the page is rendered for each change. React uses JSX which appears similar to HTML, and is a syntax extension to JavaScript. JSX gives developers a helpful visual aid for user interface development inside of JavaScript code. JSX also provides native XSS protection by sanitizing inputs by default. It's also possible to use React without JSX working with native JavaScript. Babel supports syntax highlighting for JSX in your favorite Javascript Editors. React's use of JSX results in a steeper learning curve as you must learn this on top of familiarizing yourself with the library. Unlike other JS frameworks, you need to build your own workflow rather than using integrated framework tools. React helps create complex user interfaces using components that split the UI into reusable sections. Components accept inputs (termed props which are similar to JavaScript functions) and return React elements describing what should be rendered on screen. React does not require a dependency injection library or framework since it is based on reusable user interface components. React Native provides mobile app development for iOS and Android offering the best parts of native development with React for mobile app user interfaces. For enhanced performance, React allows for server-side rendering to static markup with ReactDOMserver typically used with node.js. React apps enable you to set up a modern react web app with a single command and one dependency.<\/p>\n\n<p>A Note on Web Components and React:<br>\n<em>React and Web Components solve different problems and developers typically don't use Web Components with React although they are supported (for example if you have a UI component that was written using Web Components). As the React site clarifies, \"Web Components provide strong encapsulation for reusable components, while React provides a declarative library that keeps the DOM in sync with your data. The two goals are complementary.\"<\/em><\/p>\n\n<p>React is by far the most used with Github \"used by\" statistics exceeding 3 million. You should choose React if you prefer to have a virtual DOM and need a lot of ready-to-use components.<\/p>\n\n<h2>\n  \n  \n  2. Vue.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayqeqsaqik5xpeiytl3p.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayqeqsaqik5xpeiytl3p.PNG\"><\/a><br>\nVue.js bills itself as the progressive JavaScript framework, which allows for adoption incrementally within your application architecture from single-page applications to full-stack integrations. Vue was created by Evan You after working at Google. Evan wanted to build a JavaScript framework that would extract the best parts of AngularJS while being much more lightweight. One potential downside of Angular's influence is the support for two way data binding which has faced criticism (see Angular below for more details). While lightweight, Vue offers an \"incrementally adoptable ecosystem\" which scales between a JavaScript library and a full-featured popular JavaScript framework for complex web applications. Vue enables you to create reusable components encapsulating HTML, CSS, and JavaScript for common user interface elements. Vue has a gentler learning curve compared with Angular and React as you are not required to learn typescript (Microsoft's superset of JavaScript required for Angular) or JSX (Typically used with React) and can leverage existing vanilla JavaScript knowledge. Vue shows Github \"used by\" of 1.2 million. You should choose Vue if you want a framework with excellent documentation that is easy to start with.<\/p>\n\n<h2>\n  \n  \n  3. Angular\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn2p682a3vwjaf5a18d4a.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn2p682a3vwjaf5a18d4a.PNG\"><\/a><br>\nAngularJS or Angular 1 was created by Google as a front-end framework for MVC (Model-View-Controller) and MVVM (Model-View-ViewModel) implementations in 2009 for its web development projects. Subsequently, Google's Angular team lead the creation of Angular aka Angular 2 which is based on TypeScript and is a complete re-write undertaken by the original team that created AngularJS. Angular utilizes HTML as a template language and supports extending HTML's syntax. Unlike React, Angular is a full frontend framework. Angular has a steep learning curve and Angular 1 has faced criticism for two-way data binding that some consider an anti-pattern that is difficult to maintain and debug in complex applications or understand through code review. You should choose angular if you want a powerful framework backed by google and are already invested in typescript.<\/p>\n\n<h2>\n  \n  \n  4. Preact\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc8xui6eft12ovcfffu5.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc8xui6eft12ovcfffu5.PNG\"><\/a><br>\nPreact is billed as a smaller, faster React alternative using the same API. Preact focuses on optimizing performance, size (~3kb vs ~45kb for React), efficient memory usage, and offers a low learning curve for React users and overall compatibility with the React API. While the project is lean and optimized for its goals, preact-compat offers drop-in compatibility for existing React code without any changes. This can be useful for projects that rely heavily on React features not in Preact; however, you give up some of the benefits of Preact using this compatibility layer. Github used by 19k. You should choose Preact if you want a fast and lean drop-in replacement for React.<\/p>\n\n<h2>\n  \n  \n  5. Ember.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2owv955syjkichauw9a.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2owv955syjkichauw9a.PNG\"><\/a><br>\nEmber.js, the self-described \"framework for ambitious web developers\" is focused on developer productivity. Ideally suited for single-page applications based on the MVVM pattern, Ember.js was created by Yehuda Katz who was previously a core team member at jQuery. Useful for client-side applications, Ember also includes an official data layer which makes back-end integration easy with two-way data binding using Ember data. Ember has its own plugin repository that offers a variety of helpful integrations. Ember's Ember-CLI, a command-line add-on provides support for various technologies including CoffeeScript, Handlebars, SaaS\/Less and more. Github Used by 20k. You should choose ember if you want an elegant and quick-to-develop framework with a great community.<\/p>\n\n<h2>\n  \n  \n  Bonus: 6. Svelte\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgw5zgoy9x6koushsslxf.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgw5zgoy9x6koushsslxf.png\"><\/a><br>\nAn honorable mention to Svelte which is a JavaScript framework that compiles to JavaScript at build time resulting in better client-side performance. Svelte has no virtual DOM or client-side dependencies and is the most recent framework to gain popularity according to the StateOfJS surveys. Billed as \"a radical new approach to building user interfaces,\" Svelte shifts the bulk of the work that occurs in the browser for other frameworks and libraries, to compilation that happens when you build your application. Originally released in 2016 and recently passing a version 3 milestone, Svelte is growing in popularity for developers that value performance. This performance does come at the cost of compatibility where browsers such as IE11 and older are not supported with generated code and the overall ecosystem is not as developed as frameworks that have a larger and more established user base. Github Used by 11k. You should choose Svelte if you are looking for a lightweight framework that is high performance and reasonable learning curve.<\/p>\n\n<h2>\n  \n  \n  Up and coming\n<\/h2>\n\n<p>For the 2020 survey results that were published January 2021, some up and coming options surfaced including:<\/p>\n\n<h2>\n  \n  \n  LitElement\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyr6c1hjln240tzuotqnm.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyr6c1hjln240tzuotqnm.PNG\" alt=\"LitElement Logo\"><\/a><br>\nLitElement evolved out of Polymer 3.0 and has a performance advantage over React as the number of rendered elements increases. A simple, lightweight framework, LitElement allows you to use other frameworks since it's a standard ES6 component itself and has an extensive library of web components available via NPM. There is a lot to like with LitElement.<\/p>\n\n<h2>\n  \n  \n  Alpine.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9honrjfc8vdwrjzqe2js.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9honrjfc8vdwrjzqe2js.png\" alt=\"Alpine.js Logo\"><\/a><br>\nCaleb Porzio created Alpine as leaner approach to reactive and declarative frameworks with the goal of reducing overhead while maintaining DOM. There is no build step and the library is under 5KB compressed. While it may not replace larger frameworks, it can also be used in combination with them similar to LitElement.<\/p>\n\n<h2>\n  \n  \n  Stimulus\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp4fnus1my0el6oc0g3jn.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp4fnus1my0el6oc0g3jn.PNG\" alt=\"Stimulus Logo\"><\/a><br>\nA self-described framework with modest ambitions, Stimulus doesn't render HTML or aspire to manage your complete frontend, but rather augment HTML. Stimulus was created by the Basecamp team who ate their own dogfood with the recently launched HEY email service. You should take a closer look at stimulus if you have projects that are primarily HTML and use JavaScript sparingly to improve the user experience.<\/p>\n\n<h2>\n  \n  \n  Conclusion\n<\/h2>\n\n<p>From single web pages to advanced business logic and data flows for complex applications, there is a framework, library and developer community that is here to help. We hope this look at the best JavaScript frameworks and libraries helps you explore new options or affirm your current choices and ultimately push your software development forward. While developer's needs are as diverse as the options available, if you aren't already working with React, we suggest you do so. Not only is it the most used library by far, it's also the most likely to be reused by those that have used it previously.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-features\/dashboard\/radar-analysis\/\" rel=\"noopener noreferrer\"><br>\n<img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk511uborpoaso0xlb179.png\" alt=\"JavaScript Front-end frameworks\/library dashboard comparison\"> <\/a><br>\nExplore an <a href=\"https:\/\/jscharting.com\/examples\/chart-features\/dashboard\/radar-analysis\/\" rel=\"noopener noreferrer\">Interactive version of this dashboard<\/a>.<\/p>\n\n<h2>\n  \n  \n  Add to the Discussion\n<\/h2>\n\n<p>Have a different opinion, framework or library of choice? Perhaps Backbone.js (with Underscore), aurelia, meteor.js, or Mithril.js have helped your development more than the top 6? Please share your feedback and recommendations!<\/p>\n\n<p>If you have a developer topic or area of interest you would like to see visualized with charts and dashboards please let us know so we can address it in a future article.<\/p>\n\n","category":["javascript","react","vue","angular"]},{"title":"Venn and Euler Diagram Challenge with prizes!","pubDate":"Fri, 13 Nov 2020 17:32:01 +0000","link":"https:\/\/dev.to\/jscharting\/venn-and-euler-diagram-challenge-with-prizes-580","guid":"https:\/\/dev.to\/jscharting\/venn-and-euler-diagram-challenge-with-prizes-580","description":"<h1>\n  \n  \n  Challenge Details\n<\/h1>\n\n<p>To celebrate the new chart type additions of <a href=\"https:\/\/jscharting.com\/blog\/whatsnew-version-30\/\">JSCharting 3.0<\/a> we are launching a Venn and Euler Diagram challenge where top entries will win free licenses.<\/p>\n\n<ol>\n<li>\n<a href=\"https:\/\/jscharting.com\/download\/\">Download<\/a> JSCharting 3.0 if you haven't already.<\/li>\n<li>Create your own Venn Diagram or Euler Diagram chart using JSCharting and send us a link to your site, blog, codepen or tweet #JSCVenn.<\/li>\n<li>\n<strong>Win a free license<\/strong> of the complete JSCharting bundle (top 3 entries).<\/li>\n<\/ol>\n\n<p>Get inspired from some of the <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/venn\/\">example Venn and Euler charts<\/a> included. The JSCharting download will also include these samples and their code.<\/p>\n\n<h1>\n  \n  \n  What is the difference between a Venn and Euler Diagram?\n<\/h1>\n\n<p>A Venn diagram shows all possible relationships between two or more sets while an Euler diagram only shows the relationships that are actually possible in the real-world.<\/p>\n\n<p><strong>Example Venn Diagram:<\/strong> Click the images below for interactive Javascript and SVG versions of these charts.<br>\n<a href=\"https:\/\/jscharting.com\/examples\/chart-types\/venn\/icon-groups\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--y2to-oUF--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/i\/6kisqx6xbbacgzryvdtm.png\" alt=\"Digital Marketing Venn Diagram\"><\/a><\/p>\n\n<p><strong>Example Euler Diagram:<\/strong><br>\n<a href=\"https:\/\/jscharting.com\/examples\/chart-types\/venn\/euler-diagram-of-british-isles\/\"><img src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--Y4pNF-Kd--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/i\/ne1cwq14loy60qthbpgk.png\" alt=\"Euler Diagram of the British Isles\"><\/a><br>\nWe can't wait to see the Venn \/ Euler diagrams you come up with! If you have any questions about how to use the JavaScript charting library, please reach out to the support team and they will be happy to help.<\/p>\n\n","category":["challenge","javascript"]},{"title":"iOS vs Android COVID-19 Mobility Visualized","pubDate":"Mon, 01 Jun 2020 16:47:48 +0000","link":"https:\/\/dev.to\/jscharting\/ios-vs-android-covid-19-mobility-visualized-1gol","guid":"https:\/\/dev.to\/jscharting\/ios-vs-android-covid-19-mobility-visualized-1gol","description":"<p>Apple and Google have both released regularly updated mobility datasets.  Previously used internally for traffic and mapping applications, this anonymized data now offers researchers, epidemiologists and the general public insights into how disease progression responds to changes in mobility.<\/p>\n\n<h2>\n  \n  \n  iOS vs Android Data\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcj1b8o4hxuxc9lsforyl.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcj1b8o4hxuxc9lsforyl.png\" alt=\"iOS vs Android COVID-19 Mobility\"><\/a><\/p>\n\n<p>These datasets also offer a small, yet imperfect, insight into the relative differences between iOS and Android users stringency to mobility measures throughout the world, by comparing Apple's Transit and Google's transit station statistics.<\/p>\n\n<h2>\n  \n  \n  COVID-19 Mobility Dashboard Goals\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxj9qkcbyqcpbi4nxw12p.gif\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxj9qkcbyqcpbi4nxw12p.gif\" alt=\"Driving Mobility Country Comparison\"><\/a><br>\nThe JSCharting team created an interactive JavaScript <a href=\"https:\/\/jscharting.com\/covid-mobility-dashboard\/\" rel=\"noopener noreferrer\">COVID-19 Mobility Dashboard<\/a> to help citizens visualize mobility data for their own countries and compare results to countries with different policies as the world unites to fight COVID-19. We also hope that visualizing mobility data along with active case data will help illustrate how mobility impacts the spread of coronavirus.<\/p>\n\n<h2>\n  \n  \n  Mobility Data Categories\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2taw1x0r64gmxju2lifw.gif\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2taw1x0r64gmxju2lifw.gif\" alt=\"Mobility Data Categories\"><\/a><br>\nThe Apple dataset includes categories for driving, walking and transit, while Google's data reports mobility changes in retail, grocery &amp; pharmacy, parks, transit stations, work and residential locations.  Both report daily data relative to a pre-COVID baseline. You can now see how driving increased or decreased as a result of mobility measures in various countries, how people stayed at home and away from work, or increased time spent in parks rather than retail establishments.<\/p>\n\n<h2>\n  \n  \n  Mobility Data Insights\n<\/h2>\n\n<p>Interacting with the dashboard directly, tap or click specific countries of interest and see how each took action at different times. The \"last selected summary\" shows a line series for every mobility category in the last selected country along with active cases over time.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fryud9o92qdtl3lt0dfe3.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fryud9o92qdtl3lt0dfe3.PNG\" alt=\"United States Summary\"><\/a><br>\nCharting daily country statistics on active cases helps illustrate how mobility policies impact the spread. To keep the chart legible with so much data, the selected category is highlighted and others muted; select any category of interest from the legend and hover legend entries to preview your selections within a given country. Select multiple countries to compare them for a single mobility category and then change the category with the drop-down menu to see the selected group update in real-time.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fto3h6lm75vmk3uscfh7f.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fto3h6lm75vmk3uscfh7f.PNG\" alt=\"Italy Summary\"><\/a><br>\nItaly was hit hard and early, and we can see mobility drop over 75% in the second week of March after extreme measures were taken resulting in an eventual decline in active cases. Similar trends are visible with France and Spain, while countries like Sweden implemented a different policy and some mobility measures only dropped 20% increasing to greater than baseline as the end of May, 2020.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flx4vnw5lhxc8b85hjn5w.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flx4vnw5lhxc8b85hjn5w.PNG\" alt=\"Parks Mobility in Canada\"><\/a><br>\nPolicy events such as Canada's recent reopening of many of its parks are also clearly visible as usage spiked over 70 percent above baseline.<\/p>\n\n<h2>\n  \n  \n  We would love to hear from you!\n<\/h2>\n\n<p>Do you have any feedback or suggestions for the live <a href=\"https:\/\/jscharting.com\/covid-mobility-dashboard\/\" rel=\"noopener noreferrer\">dashboard<\/a> or do you have a topic of interest you would like to see visualized? Please let us know in the comments below.<\/p>\n\n","category":["javascript","ios","android","showdev"]},{"title":"COVID-19 Dashboard with Animated Time Series, Interactive Summary and Country Comparisons","pubDate":"Wed, 22 Apr 2020 17:37:23 +0000","link":"https:\/\/dev.to\/jscharting\/covid-19-dashboard-with-animated-time-series-interactive-summary-and-country-comparisons-57p","guid":"https:\/\/dev.to\/jscharting\/covid-19-dashboard-with-animated-time-series-interactive-summary-and-country-comparisons-57p","description":"<p>At the beginning of March we launched a <a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\">Charts for Charity<\/a> campaign with all proceeds donated to support water wells and sanitation in Africa.  After watching COVID-19 grow into a pandemic touching every country in the world, we have renewed this campaign to help raise awareness and funds for COVID-19 Relief.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb37wqupdh45aihs9hdfy.gif\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb37wqupdh45aihs9hdfy.gif\" alt=\"Active Case Map Animation\"><\/a><\/p>\n\n<h2>\n  \n  \n  COVID-19 Dashboard Goals\n<\/h2>\n\n<p>The JSCharting team created an advanced <a href=\"https:\/\/jscharting.com\/covid\/\" rel=\"noopener noreferrer\">interactive COVID-19 dashboard<\/a> to help raise awareness and inform safe choices, for citizens throughout the world, as we unite to fight COVID-19.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/covid\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvcewds1lkc3rdhvj91o6.gif\" alt=\"COVID-19 Dashboard Animation\"><\/a><br>\nBy translating raw data into easily understood interactive visuals, we hope these insights help us avoid each other\u2019s missteps while celebrating and replicating our successes world-wide.<\/p>\n\n<h2>\n  \n  \n  Dashboard Walk-Through\n<\/h2>\n\n<p><strong>Summary Tab:<\/strong><br>\nThe summary tab shows an at-a-glance view of global statistics, including details on the total confirmed COVID-19 cases, active cases, recovered cases, and deaths to date. <\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F652rjlroy7juw0zmsn8b.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F652rjlroy7juw0zmsn8b.PNG\" alt=\"Summary\"><\/a><\/p>\n\n<p>The +\/- superscript number shows the change in the last day, while the percentage shows the portion of confirmed cases that are still active, have recovered, or died. To view a summary for any specific country, select the country on the map below the line chart. For example, China:<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq6a8k8q8rxakaw29bgum.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq6a8k8q8rxakaw29bgum.PNG\" alt=\"China COVID Summary\"><\/a><\/p>\n\n<p>The chart above shows the drop in active cases and corresponding rise in recoveries as strong social isolation measures were put in place.  Hovering over the lines on the chart shows a combined tool-tip with specific values per day.  On a mobile device tap and drag on the chart area to show tool-tips.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1mn1r6m5i1ezxf3g78lp.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1mn1r6m5i1ezxf3g78lp.PNG\" alt=\"Summary\"><\/a><\/p>\n\n<p>The above summary for Italy shows they are earlier in their recovery, yet active cases can already be seen dropping as the curve flattens, reducing the load on their health care system. A stacked bar chart is displayed under the summary line chart showing the proportion of current active cases, recovered cases and deaths for the selected country. <\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F48yutahgk51ksrgz7pot.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F48yutahgk51ksrgz7pot.PNG\" alt=\"Tooltip Summary\"><\/a><\/p>\n\n<p>Below the summary line chart is a global thematic map shaded based on cases.  Here you can select between colored tabs for Confirmed, Active, Recovered and Deaths and hover over any given country for a tool-tip summary. This map is green, indicating that it is displaying the number of recovered cases in each country. The darker the color, the greater the number of recovered cases.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frmj1mh0wjyc0jvsmtb9l.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frmj1mh0wjyc0jvsmtb9l.PNG\" alt=\"Map Pan and Zoom\"><\/a><\/p>\n\n<p>To more easily view or select geographically small countries, you can zoom using the +\/- icons on the map and click and drag to pan the map.<\/p>\n\n<p><strong>Compare Tab:<\/strong><br>\nJumping to the top level Compare tab, this enables detailed country comparisons with options for displaying results from 1st day, 10th case, 100th case and 200th case.  This helps to align data and compare countries of interest to others where outbreaks started at different times.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsatiq8vppp7qchhbg1hi.gif\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsatiq8vppp7qchhbg1hi.gif\" alt=\"Dropdown selection\"><\/a><\/p>\n\n<p>Switching between colored tabs will change both the country comparison line chart and the thematic map to show confirmed, active, recovered or death data. <\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk002ihuremy701mgsy57.gif\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk002ihuremy701mgsy57.gif\" alt=\"Compare Active Cases\"><\/a><\/p>\n\n<p><strong>Time Tab:<\/strong><br>\nThe time tab shows temporal views including thematic maps for the total confirmed cases, active cases, recovered cases and deaths. <\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4asin9siz11ph4m3w27.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4asin9siz11ph4m3w27.PNG\" alt=\"Time Series Bars Race\"><\/a><\/p>\n\n<p>Clicking the play button will play back the changes over time - both in the thematic map and synchronized with a bar chart race where the highest values jump to the top. These animations help visualize the growth over time between different countries. While the animation plays back over time, you can continue to add or remove countries of interest. You can also click between the colored tabs and drag the date slider to play back from the start of the pandemic to visualize the spread of COVID-19 over time.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgcp7gxlzu3zd9mq9mm3t.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgcp7gxlzu3zd9mq9mm3t.PNG\" alt=\"Time Series\"><\/a><\/p>\n\n<h2>\n  \n  \n  Updated Daily\n<\/h2>\n\n<p>Dashboard data is updated daily from Johns Hopkins University Center for Systems Science and Engineering. Developers interested in doing their own visualizations can download the raw coronavirus data <a href=\"https:\/\/github.com\/datasets\/covid-19\" rel=\"noopener noreferrer\">here<\/a>.  <\/p>\n\n<h2>\n  \n  \n  What <strong>you<\/strong> can do to help\n<\/h2>\n\n<p>1) Developers needing a JavaScript chart library can <a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\">Pay What You Want<\/a> for the 8 in 1 JSCharting bundle with all proceeds donated to COVID-19 Relief.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvizcbnifpo03hgl86x9x.PNG\" alt=\"Pay What You Want\"><\/a><\/p>\n\n<p>2) <strong>Share<\/strong> the <a href=\"https:\/\/jscharting.com\/covid\/\" rel=\"noopener noreferrer\">interactive dashboard<\/a> with friends, family and through social media to help spread awareness.<\/p>\n\n<h2>\n  \n  \n  We want to hear from you!\n<\/h2>\n\n<p>Have an idea for how this dashboard could be improved? Is there another important topic you would like to see visualized? Please let us know in the comments below!<\/p>\n\n","category":["javascript","webdev","showdev"]},{"title":"Charts for Charity: Pay What You Want for JSCharting with 100% of proceeds donated!","pubDate":"Thu, 05 Mar 2020 18:28:04 +0000","link":"https:\/\/dev.to\/jscharting\/charts-for-charity-pay-what-you-want-for-jscharting-with-100-of-proceeds-donated-26o","guid":"https:\/\/dev.to\/jscharting\/charts-for-charity-pay-what-you-want-for-jscharting-with-100-of-proceeds-donated-26o","description":"<p><em>TLDR: For a limited time the JSCharting 8 in 1 bundle is being licensed for <a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\">whatever you want to pay<\/a>, with all proceeds being donated to <a href=\"https:\/\/www.ryanswell.ca\/fundraising\/pwyw-campaign\/\" rel=\"noopener noreferrer\">Ryan\u2019s Well Foundation.<\/a><\/em><\/p>\n\n<p>Did you know that over 1 billion people don't have access to safe drinking water and 2.8 billion people lack adequate sanitation? The contaminated surface water below is depended on by a community of over 1000 people.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fraiz1y2ki1aft3ztduwt.JPG\" alt=\"Contaminated Water Source\"><\/a><\/p>\n\n<p>At JSCharting we believe that all people should have access to safe, clean drinking water. Without accessible water, children and women are less likely to attend school because they need to travel long distances to collect water for their families. These long journeys also put them at risk of assault. The United Nations recognizes access to water and sanitation as a fundamental human right; however, many populations still lack access to basic drinking water:<br>\n<a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhrxwk0o6ui03csk2q67k.PNG\" alt=\"Water Access Map\"><\/a><\/p>\n\n<p>View an interactive JavaScript version of this <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/geographic-map\/\" rel=\"noopener noreferrer\">map<\/a>.<\/p>\n\n<p>To help those in need receive this basic human right, JSCharting has partnered with <a href=\"https:\/\/www.ryanswell.ca\/fundraising\/pwyw-campaign\/\" rel=\"noopener noreferrer\">Ryan's Well Foundation<\/a> and, with your support, we can make a difference.<\/p>\n\n<p>Purchase a JSCharting 8 in 1 bundle at the price you choose and all proceeds will be used to drill wells, improve sanitation, and fund education.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy44lg0k5eohnvhkkvk5x.png\" alt=\"JSCharting Bundle\"><\/a><\/p>\n\n<p>In addition to donating all future proceeds from the PWYW campaign, JSCharting has also made a $20,000 donation to Ryan's Well Foundation.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3au7af5frxzelwtjnwzi.jpg\" alt=\"Traveling long distances to collect water\"><\/a><\/p>\n\n<p>When you <a href=\"https:\/\/jscharting.com\/store\/pay-what-you-want\/\" rel=\"noopener noreferrer\">Pay What You Want<\/a> for JSCharting today, you will help save lives tomorrow. A heartfelt thanks to the JavaScript developer community for your support and for making a positive difference in the world!<\/p>\n\n","category":["javascript","webdev"]},{"title":"5 Best Front-end JavaScript Frameworks: Multi-Year Developer Surveys Visualized","pubDate":"Wed, 26 Feb 2020 16:54:34 +0000","link":"https:\/\/dev.to\/jscharting\/5-best-front-end-javascript-frameworks-multi-year-developer-surveys-visualized-11p","guid":"https:\/\/dev.to\/jscharting\/5-best-front-end-javascript-frameworks-multi-year-developer-surveys-visualized-11p","description":"<p>JavaScript's popularity has only grown over time and this meteoric rise has resulted in widespread usage from standard front-end development, to server-side usage through node.js to mobile application development. A plethora of front-end JavaScript frameworks and JS libraries have been created by developers, for developers helping to save time and improve application quality. The 5 most popular options are:<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks\/\" rel=\"noopener noreferrer\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fstmx00kgdw6nq0w5q29r.png\"><\/a><\/p>\n\n<p>Data courtesy of StateOfJS Surveys 2016, 2017, 2018, 2019. View an <a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks\/\" rel=\"noopener noreferrer\">interactive version of these charts<\/a> on our blog. <\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/blog\/best-javascript-front-end-frameworks\/\" rel=\"noopener noreferrer\"><br>\n         <img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff2j6fp90idrnbxs9mebx.png\" alt=\"5 Best JavaScript Editors Scaled Visualization\"><br>\n      <\/a><\/p>\n\n<h2>\n  \n  \n  1. React.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8etj4vfvgl2hjhrx2010.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8etj4vfvgl2hjhrx2010.PNG\"><\/a><br>\nReact.js is the leading JavaScript library for building user interfaces. Often erroneously referred to as a front-end JavaScript framework, the React library handles only the View layer of the complete Model View Controller (MVC) for building user interfaces and facilitates the creation of reusable user interface components. React is an open-source library that uses a virtual DOM that optimizes DOM updates to only those components that are changed while giving front end developers the freedom to code as if the page is rendered for each change. React uses JSX which appears similar to HTML, and is a syntax extension to JavaScript. JSX gives developers a helpful visual aid for user interface development inside of JavaScript code. JSX also provides native XSS protection by sanitizing inputs by default. It's also possible to use React without JSX working with native JavaScript. Babel supports syntax highlighting for JSX in your favorite Javascript Editors. React's use of JSX results in a steeper learning curve as you must learn this on top of familiarizing yourself with the library. Unlike other JS frameworks, you need to build your own workflow rather than using integrated framework tools. React helps create complex user interfaces using components that split the UI into reusable sections. Components accept inputs (termed props which are similar to JavaScript functions) and return React elements describing what should be rendered on screen. React does not require a dependency injection library or framework since it is based on reusable user interface components. React Native provides mobile app development for iOS and Android offering the best parts of native development with React for mobile app user interfaces. For enhanced performance, React allows for server-side rendering to static markup with ReactDOMserver typically used with node.js. React apps enable you to set up a modern react web app with a single command and one dependency.<\/p>\n\n<p>A Note on Web Components and React:<br>\n<em>React and Web Components solve different problems and developers typically don't use Web Components with React although they are supported (for example if you have a UI component that was written using Web Components). As the React site clarifies, \"Web Components provide strong encapsulation for reusable components, while React provides a declarative library that keeps the DOM in sync with your data. The two goals are complementary.\"<\/em><\/p>\n\n<p>React is by far the most used with Github \"used by\" statistics exceeding 3 million. You should choose React if you prefer to have a virtual DOM and need a lot of ready-to-use components.<\/p>\n\n<h2>\n  \n  \n  2. Vue.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayqeqsaqik5xpeiytl3p.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayqeqsaqik5xpeiytl3p.PNG\"><\/a><br>\nVue.js bills itself as the progressive JavaScript framework, which allows for adoption incrementally within your application architecture from single-page applications to full-stack integrations. Vue was created by Evan You after working at Google. Evan wanted to build a JavaScript framework that would extract the best parts of AngularJS while being much more lightweight. One potential downside of Angular's influence is the support for two way data binding which has faced criticism (see Angular below for more details). While lightweight, Vue offers an \"incrementally adoptable ecosystem\" which scales between a JavaScript library and a full-featured popular JavaScript framework for complex web applications. Vue enables you to create reusable components encapsulating HTML, CSS, and JavaScript for common user interface elements. Vue has a gentler learning curve compared with Angular and React as you are not required to learn typescript (Microsoft's superset of JavaScript required for Angular) or JSX (Typically used with React) and can leverage existing vanilla JavaScript knowledge. Vue shows Github \"used by\" of 1.2 million. You should choose Vue if you want a framework with excellent documentation that is easy to start with.<\/p>\n\n<h2>\n  \n  \n  3. Angular\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn2p682a3vwjaf5a18d4a.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn2p682a3vwjaf5a18d4a.PNG\"><\/a><br>\nAngularJS or Angular 1 was created by Google as a front-end framework for MVC (Model-View-Controller) and MVVM (Model-View-ViewModel) implementations in 2009 for its web development projects. Subsequently, Google's Angular team lead the creation of Angular aka Angular 2 which is based on TypeScript and is a complete re-write undertaken by the original team that created AngularJS. Angular utilizes HTML as a template language and supports extending HTML's syntax. Unlike React, Angular is a full frontend framework. Angular has a steep learning curve and Angular 1 has faced criticism for two-way data binding that some consider an anti-pattern that is difficult to maintain and debug in complex applications or understand through code review. You should choose angular if you want a powerful framework backed by google and are already invested in typescript.<\/p>\n\n<h2>\n  \n  \n  4. Preact\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc8xui6eft12ovcfffu5.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkc8xui6eft12ovcfffu5.PNG\"><\/a><br>\nPreact is billed as a smaller, faster React alternative using the same API. Preact focuses on optimizing performance, size (~3kb vs ~45kb for React), efficient memory usage, and offers a low learning curve for React users and overall compatibility with the React API. While the project is lean and optimized for its goals, preact-compat offers drop-in compatibility for existing React code without any changes. This can be useful for projects that rely heavily on React features not in Preact; however, you give up some of the benefits of Preact using this compatibility layer. Github used by 19k. You should choose Preact if you want a fast and lean drop-in replacement for React.<\/p>\n\n<h2>\n  \n  \n  5. Ember.js\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2owv955syjkichauw9a.PNG\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2owv955syjkichauw9a.PNG\"><\/a><br>\nEmber.js, the self-described \"framework for ambitious web developers\" is focused on developer productivity. Ideally suited for single-page applications based on the MVVM pattern, Ember.js was created by Yehuda Katz who was previously a core team member at jQuery. Useful for client-side applications, Ember also includes an official data layer which makes back-end integration easy with two-way data binding using Ember data. Ember has its own plugin repository that offers a variety of helpful integrations. Ember's Ember-CLI, a command-line add-on provides support for various technologies including CoffeeScript, Handlebars, SaaS\/Less and more. Github Used by 20k. You should choose ember if you want an elegant and quick-to-develop framework with a great community.<\/p>\n\n<h2>\n  \n  \n  Bonus: 6. Svelte\n<\/h2>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgw5zgoy9x6koushsslxf.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgw5zgoy9x6koushsslxf.png\"><\/a><br>\nAn honorable mention to Svelte which is a JavaScript framework that compiles to JavaScript at build time resulting in better client-side performance. Svelte has no virtual DOM or client-side dependencies and is the most recent framework to gain popularity according to the StateOfJS surveys. Billed as \"a radical new approach to building user interfaces,\" Svelte shifts the bulk of the work that occurs in the browser for other frameworks and libraries, to compilation that happens when you build your application. Originally released in 2016 and recently passing a version 3 milestone, Svelte is growing in popularity for developers that value performance. This performance does come at the cost of compatibility where browsers such as IE11 and older are not supported with generated code and the overall ecosystem is not as developed as frameworks that have a larger and more established user base. Github Used by 11k. You should choose Svelte if you are looking for a lightweight framework that is high performance and reasonable learning curve.<\/p>\n\n<h2>\n  \n  \n  Conclusion\n<\/h2>\n\n<p>From single web pages to advanced business logic and data flows for complex applications, there is a framework, library and developer community that is here to help. We hope this look at the best JavaScript frameworks and libraries helps you explore new options or affirm your current choices and ultimately push your software development forward. While developer's needs are as diverse as the options available, if you aren't already working with React, we suggest you do so. Not only is it the most used library by far, it's also the most likely to be reused by those that have used it previously.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-features\/dashboard\/radar-analysis\/\" rel=\"noopener noreferrer\"><br>\n<img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk511uborpoaso0xlb179.png\" alt=\"JavaScript Front-end frameworks\/library dashboard comparison\"> <\/a><br>\nExplore an <a href=\"https:\/\/jscharting.com\/examples\/chart-features\/dashboard\/radar-analysis\/\" rel=\"noopener noreferrer\">Interactive version of this dashboard<\/a>.<\/p>\n\n<h2>\n  \n  \n  Add to the Discussion\n<\/h2>\n\n<p>Have a different opinion, framework or library of choice? Perhaps Backbone.js (with Underscore), aurelia, meteor.js, or Mithril.js have helped your development more than the top 5? Please share your feedback and recommendations!<\/p>\n\n<p>If you have a developer topic or area of interest you would like to see visualized with charts and dashboards please let us know so we can address it in a future article.<\/p>\n\n","category":["javascript","react","vue","angular"]},{"title":"5 Best JavaScript Editors: Developers rank the best tools worldwide","pubDate":"Tue, 21 Jan 2020 19:54:42 +0000","link":"https:\/\/dev.to\/jscharting\/5-best-javascript-editors-developers-rank-the-best-tools-worldwide-1da","guid":"https:\/\/dev.to\/jscharting\/5-best-javascript-editors-developers-rank-the-best-tools-worldwide-1da","description":"<p>JavaScript has continued to grow in importance over the last decade. In fact, according to StackOverflow\u2019s Insights, JavaScript has been the most popular programming language for the past 7 years, edging out popular languages including Python, C# and Java. The latest 2019 State of JavaScript survey (released just before the start of 2020), includes responses from over 20,000 developers revealing five JavaScript editors that stand out accounting for over 98% of all usage!<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/line\/\" rel=\"noopener noreferrer\"><br>\n         <img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fh26c8qo0sh1jh04lbfvp.png\" alt=\"5 Best JavaScript Editors Visualized\"><br>\n      <\/a><\/p>\n\n<p>View an <a href=\"https:\/\/jscharting.com\/examples\/chart-types\/line\/\" rel=\"noopener noreferrer\">interactive and animated chart<\/a>. Data courtesy of StateOfJS Surveys 2017, 2018 and 2019.<\/p>\n\n<p><a href=\"https:\/\/jscharting.com\/examples\/chart-types\/line\/\" rel=\"noopener noreferrer\"><br>\n         <img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyfhatd308xw9t9s4g5qo.png\" alt=\"5 Best JavaScript Editors Scaled Visualization\"><br>\n      <\/a><\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwt40cx9a4tqlsb595hwm.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwt40cx9a4tqlsb595hwm.png\" alt=\"Visual Studio Code\"><\/a><\/p>\n\n<p><strong>1. Visual Studio Code<\/strong><\/p>\n\n<p>VSCode is the dominant leader in online JavaScript editors. Featuring cross platform support on Linux, macOS and Windows, VSCode has built in code completion for your Node.js modules and JavaScript code. As expected with Microsoft, Typescript is a first class citizen. Git is seamlessly integrated, meaning you can make commits, reviews diffs and more in real-time all without leaving the editor. Visual Studio Code is a lightweight code editor that was built from the ground up for speed. Autocompletion goes beyond function completion and also offers documentation and function argument information as you develop. Microsoft has done an excellent job with community engagement and VSCode has a vibrant developer community creating powerful extensions which save additional time. Sought after features such as live preview and Chrome debugging with DevTools are easily accessible through the Visual Studio Marketplace. In addition, if you really want to get under the covers, the entire text editor source code is hosted on GitHub as open source software.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnnzlvc701v2k18oue71y.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnnzlvc701v2k18oue71y.png\" alt=\"WebStorm\"><\/a><\/p>\n\n<p><strong>2. WebStorm<\/strong><\/p>\n\n<p>Jetbrains popular WebStorm is a paid editor that has a loyal following and is regularly updated. Branded, \"the smartest JavaScript IDE,\" WebStorm lives up to the marketing by offering coding assistance across Node.js, HTML and CSS. It also supports built in assistance with popular JavaScript frameworks including Meteor, Angular, React, jQuery, Vue.js and Electron. GitHub support is integrated within the IDE and other version control options are supported through official plugins including git integration, Mercurial, Perforce, and Subversion. A built in debugger for Node.js with test integration, tracing and profiling along with seamless command line tool integration round out this IDE. Attention to detail and workflow optimization including automatic saving of file changes is a hallmark of WebStorm. Regular updates with new features and a Early Access Program make the paid subscription worthwhile for many developers.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg6jb4xezougs512hg06r.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg6jb4xezougs512hg06r.png\" alt=\"VIM\"><\/a><\/p>\n\n<p><strong>3. VIM<\/strong><br>\nOne of the earliest and still very popular text editors, VIM is highly customizable and configurable with exceptional keyboard shortcut support. It's long history and keyboard dominated interface have produced a developer community with must have plugins like prettier, ALE and powerful command line support enabling you to leverage ESLint and Flow. VIM is incredibly customizable and no two JavaScript developers use it in the same way. If you started early with VIM, you may be very productive in it, but for those new to JavaScript development, VSCode, Sublime Text or Jetbrains WebStorm is a better choice.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpifwr81t5t395rywdzyo.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpifwr81t5t395rywdzyo.png\" alt=\"Sublime Text\"><\/a><\/p>\n\n<p><strong>4. Sublime Text<\/strong><\/p>\n\n<p>A commercial editor with a large user base, developers find the $80 fee for Sublime Text well worthwhile due to its speed (in part derived from it being written in C++). As with VSCode, there is a great developer and plugin community that has filled in the gaps creating a powerful editor environment for JavaScript. Often referred to as a midpoint between bloated IDE and lean editors such as VIM, Sublime opens files fast and leans on plugins via package control to make it a great experience for JS development. Leveraging Babel for intelligent syntax highlighting \/smart code completion and GitGutter for diffs and pushes, SublimeLinter for seamless ESLint and JSHint tie-ins makes Sublime a fast, capable and lightweight JavaScript editor.<\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flzly957j13ftk0dwjmx2.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flzly957j13ftk0dwjmx2.png\" alt=\"Atom\"><\/a><\/p>\n\n<p><strong>5. Atom<\/strong><\/p>\n\n<p>Marketed as a hackable text editor for the 21st century, Atom has been growing in popularity. Atom has already established a loyal following and vibrant developer community. Packages give advanced integration options offering real-time collaboration and pair coding, git and GitHub integration and more. A cross platform editor with OS X, Windows and Linux support, Atom runs on Electron and enables deep customization and styling. As a JavaScript developer you can customize Atom using JavaScript, HTML, CSS and Node.js.<\/p>\n\n<p><strong>Conclusion<\/strong><br>\nDevelopers are a unique breed, creating thousands of diverse solutions to meet every specific need or niche. Modern editors and IDEs have embraced plugin architectures which allow quick customization and leverage community contributions making it possible for generalized editors such as VSCode to meet more developer\u2019s unique needs. This enables seasoned developers to focus on their JavaScript projects rather than hacking their development environment while allowing new developers to hit the ground running.<\/p>\n\n<p><strong>Add to the Discussion<\/strong><br>\nWe would love to hear your perspective.  Please share your favorite editor, plugin or tool to make JavaScript development more efficient, enjoyable and productive in the comments below!<\/p>\n\n","category":["javascript","vscode","vim"]}]}}