{"id":18279,"date":"2020-12-12T19:10:21","date_gmt":"2020-12-12T18:10:21","guid":{"rendered":"https:\/\/www.datanovia.com\/en\/?p=18279"},"modified":"2020-12-12T19:11:13","modified_gmt":"2020-12-12T18:11:13","slug":"beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages","status":"publish","type":"post","link":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/","title":{"rendered":"Beautiful Radar Chart in R using FMSB and GGPlot Packages"},"content":{"rendered":"<div id=\"rdoc\">\n<p>A <strong>radar chart<\/strong>, also known as a <strong>spider plot<\/strong> is used to visualize the values or scores assigned to an individual over multiple quantitative variables, where each variable corresponds to a specific axis.<\/p>\n<p>This article describes how to create a <strong>radar chart in R<\/strong> using two different packages: the <code>fmsb<\/code> or the <code>ggradar<\/code> R packages.<\/p>\n<p>Note that, the fmsb radar chart is an R base plot. The <code>ggradar<\/code> package builds a ggplot spider plot.<\/p>\n<p>You will learn:<\/p>\n<ul>\n<li>how to create a beautiful <strong>fmsb radar chart<\/strong><\/li>\n<li>how to create <strong>ggplot radar chart<\/strong><\/li>\n<li><strong>alternatives to radar charts<\/strong><\/li>\n<\/ul>\n<p>Contents:<\/p>\n<div id=\"TOC\">\n<ul>\n<li><a href=\"#demo-data\">Demo data<\/a><\/li>\n<li><a href=\"#fmsb-radar-chart\">fmsb radar chart<\/a>\n<ul>\n<li><a href=\"#prerequisites\">Prerequisites<\/a><\/li>\n<li><a href=\"#data-preparation\">Data preparation<\/a><\/li>\n<li><a href=\"#basic-radar-plot\">Basic radar plot<\/a><\/li>\n<li><a href=\"#customize-the-radar-charts\">Customize the radar charts<\/a><\/li>\n<li><a href=\"#create-radar-charts-for-multiple-individuals\">Create radar charts for multiple individuals<\/a><\/li>\n<li><a href=\"#compare-every-profile-to-an-average-profile\">Compare every profile to an average profile<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ggplot-radar-chart-using-the-ggradar-r-package\">ggplot radar chart using the ggradar R package<\/a>\n<ul>\n<li><a href=\"#prerequisites-1\">Prerequisites<\/a><\/li>\n<li><a href=\"#key-function-and-arguments\">Key function and arguments<\/a><\/li>\n<li><a href=\"#data-preparation-1\">Data preparation<\/a><\/li>\n<li><a href=\"#basic-radar-plot-1\">Basic radar plot<\/a><\/li>\n<li><a href=\"#customize-radar-charts\">Customize radar charts<\/a><\/li>\n<li><a href=\"#radar-chart-with-multiple-individuals-or-groups\">Radar chart with multiple individuals or groups<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#alternatives-to-radar-charts\">Alternatives to radar charts<\/a>\n<ul>\n<li><a href=\"#case-when-all-quantitative-variables-have-the-same-scale\">Case when all quantitative variables have the same scale<\/a><\/li>\n<li><a href=\"#case-when-you-have-a-lot-of-individuals-to-plot-or-if-your-variables-have-different-scales\">Case when you have a lot of individuals to plot or if your variables have different scales<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n<\/div>\n<div id=\"demo-data\" class=\"section level2\">\n<h2>Demo data<\/h2>\n<p>We\u2019ll use a demo data containing exam scores for 3 students on 9 topics (Biology, Physics, etc). The scores range from 0 to 20. Columns are quantitative variables and rows are individuals.<\/p>\n<pre class=\"r\"><code># Demo data\r\nexam_scores &lt;- data.frame(\r\n    row.names = c(\"Student.1\", \"Student.2\", \"Student.3\"),\r\n      Biology = c(7.9, 3.9, 9.4),\r\n      Physics = c(10, 20, 0),\r\n        Maths = c(3.7, 11.5, 2.5),\r\n        Sport = c(8.7, 20, 4),\r\n      English = c(7.9, 7.2, 12.4),\r\n    Geography = c(6.4, 10.5, 6.5),\r\n          Art = c(2.4, 0.2, 9.8),\r\n  Programming = c(0, 0, 20),\r\n        Music = c(20, 20, 20)\r\n)\r\nexam_scores<\/code><\/pre>\n<pre><code>##           Biology Physics Maths Sport English Geography Art Programming Music\r\n## Student.1     7.9      10   3.7   8.7     7.9       6.4 2.4           0    20\r\n## Student.2     3.9      20  11.5  20.0     7.2      10.5 0.2           0    20\r\n## Student.3     9.4       0   2.5   4.0    12.4       6.5 9.8          20    20<\/code><\/pre>\n<\/div>\n<div id=\"fmsb-radar-chart\" class=\"section level2\">\n<h2>fmsb radar chart<\/h2>\n<div id=\"prerequisites\" class=\"section level3\">\n<h3>Prerequisites<\/h3>\n<p>Install the <code>fmsb<\/code> R package:<\/p>\n<pre class=\"r\"><code>install.packages(\"fmsb\")<\/code><\/pre>\n<p>Load the package:<\/p>\n<pre class=\"r\"><code>library(fmsb)<\/code><\/pre>\n<\/div>\n<div id=\"data-preparation\" class=\"section level3\">\n<h3>Data preparation<\/h3>\n<div class=\"block\">\n<p>The data should be organized as follow:<\/p>\n<ul>\n<li>The row 1 must contain the maximum values for each variable<\/li>\n<li>The row 2 must contain the minimum values for each variable<\/li>\n<li>Data for cases or individuals should be given starting from row 3<\/li>\n<li>The number of columns or variables must be more than 2.<\/li>\n<\/ul>\n<\/div>\n<pre class=\"r\"><code># Define the variable ranges: maximum and minimum\r\nmax_min &lt;- data.frame(\r\n  Biology = c(20, 0), Physics = c(20, 0), Maths = c(20, 0),\r\n  Sport = c(20, 0), English = c(20, 0), Geography = c(20, 0),\r\n  Art = c(20, 0), Programming = c(20, 0), Music = c(20, 0)\r\n)\r\nrownames(max_min) &lt;- c(\"Max\", \"Min\")\r\n\r\n# Bind the variable ranges to the data\r\ndf &lt;- rbind(max_min, exam_scores)\r\ndf<\/code><\/pre>\n<pre><code>##           Biology Physics Maths Sport English Geography  Art Programming Music\r\n## Max          20.0      20  20.0  20.0    20.0      20.0 20.0          20    20\r\n## Min           0.0       0   0.0   0.0     0.0       0.0  0.0           0     0\r\n## Student.1     7.9      10   3.7   8.7     7.9       6.4  2.4           0    20\r\n## Student.2     3.9      20  11.5  20.0     7.2      10.5  0.2           0    20\r\n## Student.3     9.4       0   2.5   4.0    12.4       6.5  9.8          20    20<\/code><\/pre>\n<\/div>\n<div id=\"basic-radar-plot\" class=\"section level3\">\n<h3>Basic radar plot<\/h3>\n<pre class=\"r\"><code># Plot the data for student 1\r\nlibrary(fmsb)\r\nstudent1_data &lt;- df[c(\"Max\", \"Min\", \"Student.1\"), ]\r\nradarchart(student1_data)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-basic-fmstb-radar-plot-1.png\" width=\"480\" \/><\/p>\n<div class=\"success\">\n<p>It can be seen that the Student 1 has a high score in Music and Physics compared to the other topics.<\/p>\n<\/div>\n<\/div>\n<div id=\"customize-the-radar-charts\" class=\"section level3\">\n<h3>Customize the radar charts<\/h3>\n<p>Key arguments to customize the different components of the <code>fmsb<\/code> radar chart:<\/p>\n<div class=\"block\">\n<ul>\n<li>Variable options\n<ul>\n<li><code>vlabels<\/code>: variable labels<\/li>\n<li><code>vlcex<\/code>: controls the font size of variable labels<\/li>\n<\/ul>\n<\/li>\n<li>Polygon options:\n<ul>\n<li><code>pcol<\/code>: line color<\/li>\n<li><code>pfcol<\/code>: fill color<\/li>\n<li><code>plwd<\/code>: line width<\/li>\n<li><code>plty<\/code>: line types. Can be a numeric vector 1:6 or a character vector c(\u201csolid\u201d, \u201cdashed\u201d, \u201cdotted\u201d, \u201cdotdash\u201d, \u201clongdash\u201d, \u201ctwodash\u201d). To remove the line, use <code>plty = 0<\/code> or <code>plty = \u201cblank\u201d<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li>Grid options:\n<ul>\n<li><code>cglcol<\/code>: line color<\/li>\n<li><code>cglty<\/code>: line type<\/li>\n<li><code>cglwd<\/code>: line width<\/li>\n<\/ul>\n<\/li>\n<li>Axis options:\n<ul>\n<li><code>axislabcol<\/code>: color of axis label and numbers. Default is \u201cblue\u201d.<\/li>\n<li><code>caxislabels<\/code>: Character vector to be used as labels on the center axis.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<p><strong>Helper function to produce a beautiful radar chart<\/strong>:<\/p>\n<pre class=\"r\"><code>create_beautiful_radarchart &lt;- function(data, color = \"#00AFBB\", \r\n                                        vlabels = colnames(data), vlcex = 0.7,\r\n                                        caxislabels = NULL, title = NULL, ...){\r\n  radarchart(\r\n    data, axistype = 1,\r\n    # Customize the polygon\r\n    pcol = color, pfcol = scales::alpha(color, 0.5), plwd = 2, plty = 1,\r\n    # Customize the grid\r\n    cglcol = \"grey\", cglty = 1, cglwd = 0.8,\r\n    # Customize the axis\r\n    axislabcol = \"grey\", \r\n    # Variable labels\r\n    vlcex = vlcex, vlabels = vlabels,\r\n    caxislabels = caxislabels, title = title, ...\r\n  )\r\n}<\/code><\/pre>\n<div class=\"warning\">\n<p>In the code above, we used the function <code>alpha()<\/code> [in scales package] to change the polygon fill color transparency.<\/p>\n<\/div>\n<pre class=\"r\"><code># Reduce plot margin using par()\r\nop &lt;- par(mar = c(1, 2, 2, 1))\r\ncreate_beautiful_radarchart(student1_data, caxislabels = c(0, 5, 10, 15, 20))\r\npar(op)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\" width=\"480\" \/><\/p>\n<\/div>\n<div id=\"create-radar-charts-for-multiple-individuals\" class=\"section level3\">\n<h3>Create radar charts for multiple individuals<\/h3>\n<p>Create the radar chart of the three students on the same plot:<\/p>\n<pre class=\"r\"><code># Reduce plot margin using par()\r\nop &lt;- par(mar = c(1, 2, 2, 2))\r\n# Create the radar charts\r\ncreate_beautiful_radarchart(\r\n  data = df, caxislabels = c(0, 5, 10, 15, 20),\r\n  color = c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\")\r\n)\r\n# Add an horizontal legend\r\nlegend(\r\n  x = \"bottom\", legend = rownames(df[-c(1,2),]), horiz = TRUE,\r\n  bty = \"n\", pch = 20 , col = c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\"),\r\n  text.col = \"black\", cex = 1, pt.cex = 1.5\r\n  )\r\npar(op)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-spider-chart-with-multiple-groups-1.png\" width=\"480\" \/><\/p>\n<p>Create separated spider charts for each individual. This is recommended when you have more than 3 series.<\/p>\n<pre class=\"r\"><code># Define colors and titles\r\ncolors &lt;- c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\")\r\ntitles &lt;- c(\"Student.1\", \"Student.2\", \"Student.3\")\r\n\r\n# Reduce plot margin using par()\r\n# Split the screen in 3 parts\r\nop &lt;- par(mar = c(1, 1, 1, 1))\r\npar(mfrow = c(1,3))\r\n\r\n# Create the radar chart\r\nfor(i in 1:3){\r\n  create_beautiful_radarchart(\r\n    data = df[c(1, 2, i+2), ], caxislabels = c(0, 5, 10, 15, 20),\r\n    color = colors[i], title = titles[i]\r\n    )\r\n}\r\npar(op)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-radar-plot-for-each-individual-1.png\" width=\"576\" \/><\/p>\n<\/div>\n<div id=\"compare-every-profile-to-an-average-profile\" class=\"section level3\">\n<h3>Compare every profile to an average profile<\/h3>\n<p>Radar charts are most useful if the profile of every individual is compared to an average profile.<\/p>\n<ol style=\"list-style-type: decimal;\">\n<li>Create a demo data containing exam scores for 10 students:<\/li>\n<\/ol>\n<pre class=\"r\"><code>set.seed(123)\r\ndf &lt;- as.data.frame(\r\n  matrix(sample(2:20 , 90 , replace = TRUE),\r\n         ncol=9, byrow = TRUE)\r\n  )\r\ncolnames(df) &lt;- c(\r\n  \"Biology\", \"Physics\", \"Maths\", \"Sport\", \"English\", \r\n  \"Geography\", \"Art\", \"Programming\", \"Music\"\r\n  )\r\nrownames(df) &lt;- paste0(\"Student.\", 1:nrow(df))\r\nhead(df)<\/code><\/pre>\n<pre><code>##           Biology Physics Maths Sport English Geography Art Programming Music\r\n## Student.1      16      20    15     4      11        19  12           6    15\r\n## Student.2       6      20    10     4       9         8  11          10    20\r\n## Student.3       5      15    18    12       8        13  16          11    14\r\n## Student.4       8      10    10    11       8         7   3           6     9\r\n## Student.5      13      14    19     2       7        16  10          16    17\r\n## Student.6       7      12     9     8      17        18  19          18     3<\/code><\/pre>\n<ol style=\"list-style-type: decimal;\" start=\"2\">\n<li>Rescale each variable to range between 0 and 1:<\/li>\n<\/ol>\n<pre class=\"r\"><code>library(scales)\r\ndf_scaled &lt;- round(apply(df, 2, scales::rescale), 2)\r\ndf_scaled &lt;- as.data.frame(df_scaled)\r\nhead(df_scaled)<\/code><\/pre>\n<pre><code>##           Biology Physics Maths Sport English Geography  Art Programming Music\r\n## Student.1    1.00    1.00  0.69  0.11    0.47      1.00 0.56        0.00  0.71\r\n## Student.2    0.09    1.00  0.31  0.11    0.35      0.27 0.50        0.33  1.00\r\n## Student.3    0.00    0.69  0.92  0.56    0.29      0.60 0.81        0.42  0.65\r\n## Student.4    0.27    0.38  0.31  0.50    0.29      0.20 0.00        0.00  0.35\r\n## Student.5    0.73    0.62  1.00  0.00    0.24      0.80 0.44        0.83  0.82\r\n## Student.6    0.18    0.50  0.23  0.33    0.82      0.93 1.00        1.00  0.00<\/code><\/pre>\n<ol style=\"list-style-type: decimal;\" start=\"3\">\n<li>Prepare the data for creating the radar plot using the <code>fmsb<\/code> package:<\/li>\n<\/ol>\n<pre class=\"r\"><code># Variables summary\r\n# Get the minimum and the max of every column  \r\ncol_max &lt;- apply(df_scaled, 2, max)\r\ncol_min &lt;- apply(df_scaled, 2, min)\r\n# Calculate the average profile \r\ncol_mean &lt;- apply(df_scaled, 2, mean)\r\n# Put together the summary of columns\r\ncol_summary &lt;- t(data.frame(Max = col_max, Min = col_min, Average = col_mean))\r\n\r\n\r\n# Bind variables summary to the data\r\ndf_scaled2 &lt;- as.data.frame(rbind(col_summary, df_scaled))\r\nhead(df_scaled2)<\/code><\/pre>\n<pre><code>##           Biology Physics Maths Sport English Geography   Art Programming Music\r\n## Max         1.000   1.000 1.000 1.000   1.000     1.000 1.000        1.00 1.000\r\n## Min         0.000   0.000 0.000 0.000   0.000     0.000 0.000        0.00 0.000\r\n## Average     0.464   0.575 0.476 0.427   0.423     0.587 0.544        0.50 0.629\r\n## Student.1   1.000   1.000 0.690 0.110   0.470     1.000 0.560        0.00 0.710\r\n## Student.2   0.090   1.000 0.310 0.110   0.350     0.270 0.500        0.33 1.000\r\n## Student.3   0.000   0.690 0.920 0.560   0.290     0.600 0.810        0.42 0.650<\/code><\/pre>\n<ol style=\"list-style-type: decimal;\" start=\"4\">\n<li>Produce radar plots showing both the average profile and the individual profile:<\/li>\n<\/ol>\n<pre class=\"r\"><code>opar &lt;- par() \r\n# Define settings for plotting in a 3x4 grid, with appropriate margins:\r\npar(mar = rep(0.8,4))\r\npar(mfrow = c(3,4))\r\n# Produce a radar-chart for each student\r\nfor (i in 4:nrow(df_scaled2)) {\r\n  radarchart(\r\n    df_scaled2[c(1:3, i), ],\r\n    pfcol = c(\"#99999980\",NA),\r\n    pcol= c(NA,2), plty = 1, plwd = 2,\r\n    title = row.names(df_scaled2)[i]\r\n  )\r\n}\r\n# Restore the standard par() settings\r\npar &lt;- par(opar) <\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-compare-every-profile-to-average-profile-1.png\" width=\"576\" \/><\/p>\n<\/div>\n<\/div>\n<div id=\"ggplot-radar-chart-using-the-ggradar-r-package\" class=\"section level2\">\n<h2>ggplot radar chart using the ggradar R package<\/h2>\n<div id=\"prerequisites-1\" class=\"section level3\">\n<h3>Prerequisites<\/h3>\n<p>Installation:<\/p>\n<pre class=\"r\"><code>devtools::install_github(\"ricardo-bion\/ggradar\")<\/code><\/pre>\n<p>Loading the package:<\/p>\n<pre class=\"r\"><code>library(\"ggradar\")<\/code><\/pre>\n<\/div>\n<div id=\"key-function-and-arguments\" class=\"section level3\">\n<h3>Key function and arguments<\/h3>\n<pre class=\"r\"><code>ggradar(\r\n  plot.data, values.radar = c(\"0%\", \"50%\", \"100%\"),\r\n  grid.min = 0, grid.mid = 0.5, grid.max = 1, \r\n  )<\/code><\/pre>\n<ul>\n<li><code>plot.data<\/code>: data containing one row per individual or group<\/li>\n<li><code>values.radar<\/code>: values to show at minimum, average and maximum grid lines<\/li>\n<li><code>grid.min<\/code>: value at which minimum grid line is plotted<\/li>\n<li><code>grid.mid<\/code>: value at which average grid line is plotted<\/li>\n<li><code>grid.max<\/code>: value at which maximum grid line is plotted<\/li>\n<\/ul>\n<\/div>\n<div id=\"data-preparation-1\" class=\"section level3\">\n<h3>Data preparation<\/h3>\n<div class=\"warning\">\n<p>All variables in the data should be at the same scale. If this is not the case, you need to rescale the data.<\/p>\n<p>For example, you can rescale the variables to have a minimum of 0 and a maximum of 1 using the function <code>rescale()<\/code> [scales package]. We\u2019ll describe this method in the next sections.<\/p>\n<\/div>\n<pre class=\"r\"><code>library(tidyverse)\r\n# Put row names into  a column named group\r\ndf &lt;- exam_scores %&gt;% rownames_to_column(\"group\")\r\ndf<\/code><\/pre>\n<pre><code>##       group Biology Physics Maths Sport English Geography Art Programming Music\r\n## 1 Student.1     7.9      10   3.7   8.7     7.9       6.4 2.4           0    20\r\n## 2 Student.2     3.9      20  11.5  20.0     7.2      10.5 0.2           0    20\r\n## 3 Student.3     9.4       0   2.5   4.0    12.4       6.5 9.8          20    20<\/code><\/pre>\n<\/div>\n<div id=\"basic-radar-plot-1\" class=\"section level3\">\n<h3>Basic radar plot<\/h3>\n<pre class=\"r\"><code># Plotting student 1\r\nggradar(\r\n  df[1, ], \r\n  values.radar = c(\"0\", \"10\", \"20\"),\r\n  grid.min = 0, grid.mid = 10, grid.max = 20\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-ggradar-ggplot-radar-chart-basic-1.png\" width=\"432\" \/><\/p>\n<\/div>\n<div id=\"customize-radar-charts\" class=\"section level3\">\n<h3>Customize radar charts<\/h3>\n<p>Key arguments to customize the different components of the ggplot radar chart. For more options see the documentation.<\/p>\n<pre class=\"r\"><code>ggradar(\r\n  df[1, ], \r\n  values.radar = c(\"0\", \"10\", \"20\"),\r\n  grid.min = 0, grid.mid = 10, grid.max = 20,\r\n  # Polygons\r\n  group.line.width = 1, \r\n  group.point.size = 3,\r\n  group.colours = \"#00AFBB\",\r\n  # Background and grid lines\r\n  background.circle.colour = \"white\",\r\n  gridline.mid.colour = \"grey\"\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-ggradar-ggplot-radar-chart-customized-1.png\" width=\"432\" \/><\/p>\n<\/div>\n<div id=\"radar-chart-with-multiple-individuals-or-groups\" class=\"section level3\">\n<h3>Radar chart with multiple individuals or groups<\/h3>\n<p>Create the radar chart of the three students on the same plot:<\/p>\n<pre class=\"r\"><code>ggradar(\r\n  df, \r\n  values.radar = c(\"0\", \"10\", \"20\"),\r\n  grid.min = 0, grid.mid = 10, grid.max = 20,\r\n  # Polygons\r\n  group.line.width = 1, \r\n  group.point.size = 3,\r\n  group.colours = c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\"),\r\n  # Background and grid lines\r\n  background.circle.colour = \"white\",\r\n  gridline.mid.colour = \"grey\",\r\n  legend.position = \"bottom\"\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-ggradar-ggplot-radar-chart-multiple-individuals-1.png\" width=\"528\" \/><\/p>\n<\/div>\n<\/div>\n<div id=\"alternatives-to-radar-charts\" class=\"section level2\">\n<h2>Alternatives to radar charts<\/h2>\n<p>A circular plot is difficult to read. An alternative to a radar chart is an ordered lolliplot or dotchart. This section describes how to create dotcharts. The <code>ggpubr<\/code> R package will be used in this section to create a dotchart.<\/p>\n<p>Load required packages:<\/p>\n<pre class=\"r\"><code>library(tidyverse)\r\nlibrary(ggpubr)<\/code><\/pre>\n<div id=\"case-when-all-quantitative-variables-have-the-same-scale\" class=\"section level3\">\n<h3>Case when all quantitative variables have the same scale<\/h3>\n<div id=\"displaying-one-individual\" class=\"section level4\">\n<h4>Displaying one individual<\/h4>\n<p>Data preparation:<\/p>\n<pre class=\"r\"><code>df2 &lt;- t(exam_scores) %&gt;%\r\n  as.data.frame() %&gt;%\r\n  rownames_to_column(\"Field\")\r\ndf2<\/code><\/pre>\n<pre><code>##         Field Student.1 Student.2 Student.3\r\n## 1     Biology       7.9       3.9       9.4\r\n## 2     Physics      10.0      20.0       0.0\r\n## 3       Maths       3.7      11.5       2.5\r\n## 4       Sport       8.7      20.0       4.0\r\n## 5     English       7.9       7.2      12.4\r\n## 6   Geography       6.4      10.5       6.5\r\n## 7         Art       2.4       0.2       9.8\r\n## 8 Programming       0.0       0.0      20.0\r\n## 9       Music      20.0      20.0      20.0<\/code><\/pre>\n<p>Plot creation:<\/p>\n<pre class=\"r\"><code>ggdotchart(\r\n  df2, x = \"Field\", y = \"Student.1\",\r\n  add = \"segments\", sorting = \"descending\",\r\n  ylab = \"Exam Score\", title = \"Student 1\"\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-loliplot-one-individual-1.png\" width=\"480\" \/><\/p>\n<\/div>\n<div id=\"displaying-two-individuals\" class=\"section level4\">\n<h4>Displaying two individuals<\/h4>\n<p>Data preparation:<\/p>\n<pre class=\"r\"><code>df3 &lt;- df2 %&gt;%\r\n  select(Field, Student.1, Student.2) %&gt;%\r\n  pivot_longer(\r\n    cols = c(Student.1, Student.2),\r\n    names_to = \"student\",\r\n    values_to = \"value\"\r\n  )\r\nhead(df3)<\/code><\/pre>\n<pre><code>## # A tibble: 6 x 3\r\n##   Field   student   value\r\n##   &lt;chr&gt;   &lt;chr&gt;     &lt;dbl&gt;\r\n## 1 Biology Student.1   7.9\r\n## 2 Biology Student.2   3.9\r\n## 3 Physics Student.1  10  \r\n## 4 Physics Student.2  20  \r\n## 5 Maths   Student.1   3.7\r\n## 6 Maths   Student.2  11.5<\/code><\/pre>\n<p>Plot creation:<\/p>\n<pre class=\"r\"><code>ggdotchart(\r\n  df3, x = \"Field\", y = \"value\", \r\n  group = \"student\", color = \"student\", palette = \"jco\",\r\n  add = \"segment\", position = position_dodge(0.3),\r\n  sorting = \"descending\"\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-loliplot-two-individual-1.png\" width=\"480\" \/><\/p>\n<\/div>\n<div id=\"displaying-multiple-individuals\" class=\"section level4\">\n<h4>Displaying multiple individuals<\/h4>\n<p>Data preparation:<\/p>\n<pre class=\"r\"><code>df4 &lt;- df2 %&gt;%\r\n  select(Field, Student.1, Student.2, Student.3) %&gt;%\r\n  pivot_longer(\r\n    cols = c(Student.1, Student.2, Student.3),\r\n    names_to = \"student\",\r\n    values_to = \"value\"\r\n  )\r\nhead(df4)<\/code><\/pre>\n<pre><code>## # A tibble: 6 x 3\r\n##   Field   student   value\r\n##   &lt;chr&gt;   &lt;chr&gt;     &lt;dbl&gt;\r\n## 1 Biology Student.1   7.9\r\n## 2 Biology Student.2   3.9\r\n## 3 Biology Student.3   9.4\r\n## 4 Physics Student.1  10  \r\n## 5 Physics Student.2  20  \r\n## 6 Physics Student.3   0<\/code><\/pre>\n<p>Plot creation:<\/p>\n<pre class=\"r\"><code>ggdotchart(\r\n  df4, x = \"Field\", y = \"value\", \r\n  group = \"student\", color = \"student\", palette = \"jco\",\r\n  add = \"segment\", position = position_dodge(0.3),\r\n  sorting = \"descending\", facet.by = \"student\",\r\n  rotate = TRUE, legend = \"none\"\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-loliplot-multiple-individual-1.png\" width=\"576\" \/><\/p>\n<\/div>\n<\/div>\n<div id=\"case-when-you-have-a-lot-of-individuals-to-plot-or-if-your-variables-have-different-scales\" class=\"section level3\">\n<h3>Case when you have a lot of individuals to plot or if your variables have different scales<\/h3>\n<p>A solution is to create a parallel coordinates plot.<\/p>\n<pre class=\"r\"><code>library(GGally)\r\nggparcoord(\r\n  iris,\r\n  columns = 1:4, groupColumn = 5, order = \"anyClass\",\r\n  showPoints = TRUE, \r\n  title = \"Parallel Coordinate Plot for the Iris Data\",\r\n  alphaLines = 0.3\r\n  ) + \r\n  theme_bw() +\r\n  theme(legend.position = \"top\")<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/radar-chart-in-r-parallele-coordinates-1.png\" width=\"480\" \/><\/p>\n<div class=\"warning\">\n<p>Note that, the default of the function <code>ggparcoord()<\/code> is to rescale each variable by subtracting the mean and dividing by the standard deviation.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"conclusion\" class=\"section level2\">\n<h2>Conclusion<\/h2>\n<p>This article describes how to create radar chart in R for one or multiple individuals using the fmsb package and the ggradar package (a ggplot2 extension).<\/p>\n<\/div>\n<\/div>\n<p><!--end rdoc--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A radar chart, also known as a spider plot is used to visualize the values or scores assigned to an individual over multiple quantitative variables, where each variable corresponds to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":18280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rating_form_position":"","rating_results_position":"","mr_structured_data_type":"","footnotes":""},"categories":[134],"tags":[376],"class_list":["post-18279","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-visualization","tag-circular-plot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia\" \/>\n<meta property=\"og:description\" content=\"A radar chart, also known as a spider plot is used to visualize the values or scores assigned to an individual over multiple quantitative variables, where each variable corresponds to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\" \/>\n<meta property=\"og:site_name\" content=\"Datanovia\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-12T18:10:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-12T18:11:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"960\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alboukadel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alboukadel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\"},\"author\":{\"name\":\"Alboukadel\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\"},\"headline\":\"Beautiful Radar Chart in R using FMSB and GGPlot Packages\",\"datePublished\":\"2020-12-12T18:10:21+00:00\",\"dateModified\":\"2020-12-12T18:11:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\"},\"wordCount\":824,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\",\"keywords\":[\"Circular Plot\"],\"articleSection\":[\"Data Visualization\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\",\"name\":\"Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\",\"datePublished\":\"2020-12-12T18:10:21+00:00\",\"dateModified\":\"2020-12-12T18:11:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png\",\"width\":960,\"height\":960,\"caption\":\"radar-chart-in-r-customized-fmstb-radar-chart-1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.datanovia.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Beautiful Radar Chart in R using FMSB and GGPlot Packages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"name\":\"Datanovia\",\"description\":\"Data Mining and Statistics for Decision Support\",\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.datanovia.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\",\"name\":\"Datanovia\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"width\":98,\"height\":99,\"caption\":\"Datanovia\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\",\"name\":\"Alboukadel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"caption\":\"Alboukadel\"},\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/","og_locale":"en_US","og_type":"article","og_title":"Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia","og_description":"A radar chart, also known as a spider plot is used to visualize the values or scores assigned to an individual over multiple quantitative variables, where each variable corresponds to [&hellip;]","og_url":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/","og_site_name":"Datanovia","article_published_time":"2020-12-12T18:10:21+00:00","article_modified_time":"2020-12-12T18:11:13+00:00","og_image":[{"width":960,"height":960,"url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png","type":"image\/png"}],"author":"Alboukadel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alboukadel","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#article","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/"},"author":{"name":"Alboukadel","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e"},"headline":"Beautiful Radar Chart in R using FMSB and GGPlot Packages","datePublished":"2020-12-12T18:10:21+00:00","dateModified":"2020-12-12T18:11:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/"},"wordCount":824,"commentCount":5,"publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png","keywords":["Circular Plot"],"articleSection":["Data Visualization"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/","url":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/","name":"Beautiful Radar Chart in R using FMSB and GGPlot Packages - Datanovia","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png","datePublished":"2020-12-12T18:10:21+00:00","dateModified":"2020-12-12T18:11:13+00:00","breadcrumb":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#primaryimage","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/12\/radar-chart-in-r-customized-fmstb-radar-chart-1.png","width":960,"height":960,"caption":"radar-chart-in-r-customized-fmstb-radar-chart-1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.datanovia.com\/en\/blog\/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.datanovia.com\/en\/"},{"@type":"ListItem","position":2,"name":"Beautiful Radar Chart in R using FMSB and GGPlot Packages"}]},{"@type":"WebSite","@id":"https:\/\/www.datanovia.com\/en\/#website","url":"https:\/\/www.datanovia.com\/en\/","name":"Datanovia","description":"Data Mining and Statistics for Decision Support","publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.datanovia.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.datanovia.com\/en\/#organization","name":"Datanovia","url":"https:\/\/www.datanovia.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","width":98,"height":99,"caption":"Datanovia"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e","name":"Alboukadel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","caption":"Alboukadel"},"url":"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/"}]}},"multi-rating":{"mr_rating_results":[]},"_links":{"self":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/18279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/comments?post=18279"}],"version-history":[{"count":2,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/18279\/revisions"}],"predecessor-version":[{"id":18283,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/18279\/revisions\/18283"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media\/18280"}],"wp:attachment":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media?parent=18279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/categories?post=18279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/tags?post=18279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}