【问题标题】:Error bars on a radar plot?雷达图上的误差线?
【发布时间】:2017-01-06 00:53:06
【问题描述】:

我希望为多变量数据制作雷达图,这对于 Excel 来说非常简单。

当我还想在上面绘制一些误差线时,问题就来了。据我了解,我不能在excel中做到这一点。这在 R 上可行吗?

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

谢谢!

【问题讨论】:

    标签: r excel plot


    【解决方案1】:

    我不太喜欢雷达图,但这里有一些想法可以帮助您继续前进,请参考 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 = "")
    

    # 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 = "")
    

    # 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 = "")
    

    编辑/添加

    我想我更喜欢这个:

    # 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 = "")
    

    【讨论】:

    • 这太棒了!正是我想要描绘的。谢谢!
    • 关于如何将这三者合二为一的任何想法?我实际上希望在一张图上绘制多个雷达。
    • 听起来很乱。我会使用上面的最后一个选项,并为每个雷达使用不同的颜色填充。超过两个时不太可能可读。
    • 我使用上面的选项 4 制作了一个多层雷达图,其中我在阴影和白色之间交替,如下所示:geom_polygon(aes(y = One_upper), fill = "#ac07e3", alpha = 0.5) +geom_polygon(aes(y = One_lower), fill = "white", alpha=1),但问题是,因为我必须使用“白色”以实现阴影置信区间,并且我有多个这样的层,其中一些彩色区域被白色遮挡。这是我得到的:imgur.com/tLp4KCh 但红色区域实际上应该是这样的:imgur.com/B5U5kLo 关于如何使所有颜色可见的任何提示?谢谢!
    猜你喜欢
    • 2020-07-02
    • 2015-12-19
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多