雷达图上的误差棒?

时间:2017-01-06 00:53:07

标签: r excel plot

我正在寻找多变量数据的雷达图,这个任务很简单,可以用于excel。

当我想在此上绘制一些错误条时问题就出现了。据我所知,我不能在excel中做到这一点。这可能在R?

或者有人可以提出替代方案吗?我有32个单值维度。

谢谢!

1 个答案:

答案 0 :(得分:7)

我不太喜欢雷达图表但是这里有一些想法可以让你前进,借鉴this approach。我最喜欢我的选项1的外观,但我不确定如何解决var32和var1之间的差距(我有一些想法,但有点尴尬)。

library(tidyverse)
library(ggplot2)
library(scales)

# make some mock data
mydata <- data.frame(variable = paste0("Var", 1:32),
                     midpoint = rnorm(32),
                     stderr = rnorm(32, 1, 0.1),
                     stringsAsFactors = FALSE) %>%
  mutate(upper = midpoint + 1.96 * stderr,
         lower = midpoint - 1.96 * stderr) %>%
  mutate(variable = factor(variable, levels = variable)) 

# Option 1:
mydata %>%
  ggplot(aes(x = variable, y = midpoint, group = 1)) +
  geom_ribbon(aes(ymin = lower, ymax = upper), fill = "grey50", alpha = 0.5) +
  geom_line(colour = "purple") +
  theme_light() +
  theme(panel.grid.minor = element_blank()) + 
  coord_polar() +
  labs(x = "", y = "")

enter image description here

# Option 2:
mydata %>%
  gather(measure, value, -variable, -stderr) %>%
  ggplot(aes(x = variable, y = value, colour = measure, group = measure, linetype = measure)) +
  geom_polygon(fill = NA) +
  theme_light() +
  theme(panel.grid.minor = element_blank()) + 
  coord_polar() +
  scale_colour_manual(values = c("steelblue", "black", "steelblue")) +
  scale_linetype_manual(values = c(2,1,2)) +
  labs(x = "", y = "")

enter image description here

# Option 3:
mydata %>%
  ggplot(aes(x = variable, y = midpoint, group = 1)) +
  geom_polygon(fill = NA, colour = "purple") +
  geom_segment(aes(xend = variable, y = lower, yend = upper), colour = "grey50") +
  geom_point(colour = "purple") +
  theme_light() +
  theme(panel.grid.minor = element_blank()) + 
  theme(panel.grid.major.x = element_blank()) +
  coord_polar() +
  labs(x = "", y = "")

enter image description here

编辑/添加

我想我更喜欢这个:

# Option 4:
mydata %>%
  ggplot(aes(x = variable, y = midpoint, group = 1)) +
  geom_polygon(aes(y = upper), fill = "grey50", alpha = 0.5) +
  geom_polygon(aes(y = lower), fill = "grey99", alpha = 0.7) +
  geom_polygon(fill = NA, colour = "purple") +
  theme_light() +
  theme(panel.grid.minor = element_blank()) + 
  coord_polar() +
  labs(x = "", y = "")

enter image description here