r - 定义因子时发出警告:不赞成重复使用因子水平

标签 r ggplot2 ggproto

我在R中的雷达图遇到了一些麻烦。即使绘图很好,我也会收到以下警告:

> source('~/.active-rstudio-document')
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
> radar
Warning messages:
1: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
2: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated


我在其他帖子中也看到了相同的错误,但是我并不真正了解如何将答案应用于我的数据集...

这是我的数据集

MSF,C1,2
OCA,C1,6
SIOA,C1,4
CCFF,C1,4
MSF,C2,4
OCA,C2,2
SIOA,C2,6
CCFF,C2,2
MSF,C3,6
OCA,C3,6
SIOA,C3,6
CCFF,C3,6


这是对应的雷达图的代码(可能只有我定义数据集的第一部分是相关的,是的……那是我迷路的地方):

colnames(dataset) = c("type", "variable", "value")
dataset$value = as.numeric(dataset$value)

dataset$variable <- factor(dataset$variable, levels = rev(dataset$variable), ordered=TRUE)

# Radar function ------------------------------------------------------------
coord_radar <- function (theta = "x", start = 0, direction = 1) {
  theta <- match.arg(theta, c("x", "y"))
  r <- if (theta == "x")
    "y"
  else "x"
  ggproto("CordRadar", CoordPolar, theta = theta, r = r, start = start,
          direction = sign(direction),
          is_linear = function(coord) TRUE)
}


# Radar plot ------------------------------------------------------------
radar <- ggplot(dataset, aes(x = variable, y = value, group=type)) +
  geom_polygon(aes(group = type, color=type,fill=type), size = 1, alpha=0.1) + 
  scale_fill_manual(values=cbPalette) +
  geom_line(aes(group = type, color=type)) + 
  scale_colour_manual(values = cbPalette) + 
  coord_radar() 

最佳答案

是的,几乎所有这些都与您的问题无关。

您正在尝试创建具有以下级别的因子:rev(dataset$variable)。产生:

[1] C3 C3 C3 C3 C2 C2 C2 C2 C1 C1 C1


看看您如何复制关卡?您将只希望按需要的顺序拥有每个级别。默认值为sort(unique(dataset$variable)),它给出C1 C2 C3,或者您可以使用rev(unique(dataset$variable)给出C3 C2 C1

forcats软件包具有几个便捷功能,可轻松创建或更改因子及其级别的顺序。

关于r - 定义因子时发出警告:不赞成重复使用因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931194/

相关文章:

r - ggplot2 facet wrap : y-axis scale on the first row only

r - 在多个方面的可变 x 位置手动为 geom_area 添加颜色

r - 下一个出现的记录的索引

r - 获取当前ggplot对象

r - 如何删除ggplot2中绘图区域和面板之间的边距?

r - 使用 `jitterdodge` 时在 ggplot 中对齐点和误差线

跟踪 tibble 中连接文档的递归函数不会停止

r - 将箱线图应用于多个变量

r - 从头开始创建geom/stat

r - ggplot2:geom_text 使用绘图调整大小,并在 geom_bar 中强制/适合文本