Creating Interactive Radar Charts in R with the ‘fmsb’ Library

rtip
viz
Author

Steven P. Sanderson II, MPH

Published

October 3, 2023

Introduction

Radar charts, also known as spider, web, polar, or star plots, are a useful way to visualize multivariate data. In R, we can create radar charts using the fmsb library. Here are several examples of how to create radar charts in R using the fmsb library:

Examples

Example 1: Basic radar chart

The following code creates a basic radar chart using the radarchart() function from the fmsb package. The input data format is specific, where each row represents an entity and each column is a variable. The first row should be the maximum values of the data, and the second row should be the minimum values. The default radar chart can be customized using various options, such as line color, fill color, line width, and axis label color.

# Load the fmsb package
library(fmsb)

# Create sample data
data <- as.data.frame(matrix(sample(2:20, 10, replace = T), 
                             ncol = 10))
colnames(data) <- c("Var1", "Var2", "Var3", "Var4", "Var5", 
                    "Var6", "Var7", "Var8", "Var9", "Var10")
data <- rbind(rep(20, 10), rep(0, 10), data)

# Create a basic radar chart
radarchart(data)

Example 2: Customized radar chart

The following code creates a customized radar chart using the radarchart() function. The axistype argument is set to 1 to customize the polygon, and the pcol, pfcol, and plwd arguments are used to customize the grid and line properties.

# Create sample data
data <- as.data.frame(matrix(sample(2:20, 10, replace = T), 
                             ncol = 10))
colnames(data) <- c("Var1", "Var2", "Var3", "Var4", "Var5", 
                    "Var6", "Var7", "Var8", "Var9", "Var10")
data <- rbind(rep(20, 10), rep(0, 10), data)

# Customize the radar chart
radarchart(data, axistype = 1, pcol = rgb(0.2, 0.5, 0.5, 0.9), 
           pfcol = rgb(0.2, 0.5, 0.5, 0.5), plwd = 4, cglcol =
          "grey", cglty = 1)

Example 3: Radar chart with multiple groups

The following code creates a radar chart with multiple groups using the radarchart() function. The input data frame should have more than three variables as axes, and the rows indicate cases as series. The first row should show the maximum values, the second row should show the minimum values, and the actual data should be given as row 3 and lower rows.

# Create sample data
set.seed(1)
data <- data.frame(rbind(rep(10, 8), rep(0, 8), 
                         matrix(sample(0:10, 24, replace = TRUE),
                                nrow = 3)))
colnames(data) <- paste("Var", 1:8)

# Create a radar chart with multiple groups
radarchart(data, axistype = 1, pcol = 1, plwd = 2, 
           pdensity = 10, pangle = 40, cglty = 1, 
           cglcol = "gray")

Conclusion

These are just a few examples of how to create radar charts in R using the fmsb library. With some creativity, you can customize the charts to suit your needs. I encourage you to try creating your own radar charts using the fmsb library and experiment with different options to see what works best for your data.

References:

  • [1] https://www.datanovia.com/en/blog/beautiful-radar-chart-in-r-using-fmsb-and-ggplot-packages/
  • [2] https://r-graph-gallery.com/142-basic-radar-chart.html
  • [3] https://www.geeksforgeeks.org/how-to-create-radar-charts-in-r/
  • [4] https://r-charts.com/ranking/radar-chart/
  • [5] https://www.statology.org/radar-chart-in-r/
  • [6] https://rdrr.io/cran/fmsb/man/radarchart.html