2016-08-13 14 views
8

Tôi gặp một chút rắc rối với biểu đồ radar của tôi trong R. Mặc dù cốt truyện là tốt Tôi nhận được cảnh báo sau đây:Cảnh báo khi xác định các yếu tố: nhân đôi mức trong yếu tố này được phản

> 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 

Tôi đã thấy lỗi tương tự trong bài viết khác nhưng tôi không thực sự hiểu làm thế nào để áp dụng các câu trả lời cho bộ dữ liệu của tôi ...

Đây là bộ dữ liệu của tôi

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 

Và đây là mã cho correspo nding biểu đồ radar (có lẽ chỉ là phần đầu tiên mà tôi xác định dữ liệu của tôi là có liên quan nhưng yeah ... đó là nơi tôi đã mất):

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() 

Trả lời

15

Vâng, gần như tất cả điều đó là không liên quan đến vấn đề của bạn.

Bạn đang cố tạo yếu tố với các mức sau: rev(dataset$variable). Sản lượng đó:

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

Xem mức độ sao chép của bạn như thế nào? Bạn sẽ muốn có mỗi cấp chỉ một lần, theo thứ tự mà bạn muốn. Giá trị mặc định là sort(unique(dataset$variable)), cho số C1 C2 C3 hoặc bạn có thể sử dụng rev(unique(dataset$variable) để cung cấp C3 C2 C1.

Gói forcats có một số chức năng tiện lợi để dễ dàng tạo hoặc thay đổi các yếu tố và thứ tự cấp độ của chúng.

+0

Tuyệt vời, cảm ơn bạn rất nhiều vì đã trả lời! Dòng 'dataset $ variable <- factor (tập dữ liệu $ variable, levels = rev (duy nhất (dataset $ variable)), được đặt hàng = TRUE)' hiện nó – Jonas

Các vấn đề liên quan