A radar plot or spider plot is an elegant method to visualize the quality of solutions with more than two objectives. Essentially it shows multiple numeric values starting from the same origin in a circular two-dimensional representation.

Users who are into gaming might know the kind of visualization from games like Pro Evolution Soccer, NHL or most likely any kind of sport games. Here, the individual strength and weaknesses of players (speed, tequniqual skills, fitness etc.) are often visualized by means of radar plots.

The drawback of this method is that it is difficult to compare many solutions or - even worse - many solutions from different algorithms to get the big picture.

plot_radar(df, obj.cols = c("y1", "y2", "y3"))

Arguments

df

[data.frame]
Data frame with columns at least those given via parameter obj.cols, “problem” and “algorithm”.

obj.cols

[character(>= 2)]
Column names of the objective function values. Default is c("y1", "y2").

Value

A ggplot object.

References

[1] T. Tušar and B. Filipič, Visualization of Pareto Front Approximations in Evolutionary Multiobjective Optimization: A Critical Review and the Prosection Method, in IEEE Transactions on Evolutionary Computation, vol. 19, no. 2, pp. 225-245, April 2015, doi: 10.1109/TEVC.2014.2313407.

See also

Other multi-objective visualizations: plot_eaf_diff(), plot_eaf(), plot_heatmap(), plot_pcp(), plot_scatter2d(), plot_scatter3d()

Examples

data(mtcars) # scale to [0, 1] tbl = as.data.frame(scale(mtcars[1:6, ], center = FALSE, scale = TRUE)) tbl$car = rownames(tbl) if (FALSE) { # 6 cars in one plot g = plot_radar(tbl, c("mpg", "cyl", "hp")) print(g) # split by car (-> 6 plots) print(g + facet_wrap(car ~ .)) }