2016-01-18 3 views
0

Я пробовал целый день организовать два уровня факторов, называемых «тип» и «имя», с помощью числового значения «оценка» и по типу категории (с цветом, определенным по типу), упорядоченным по Гол. Я также пытаюсь получить группу под названием «ВСЕ» сверху, поэтому она разделяется другими тремя категориями в «типе». Мои попытки до сих пор были очень неудачными, я не понимаю, почему я не могу даже правильно переупорядочить. Любая помощь очень ценится.аранжировать двумя факторами

Это мои данные:

df = structure(list(score = c(12, 12.2, 12.5, 12.3, 12.2, 12.4, 12.5, 12.7, 12.1, 12.8, 12.4, 12.3, 12.2, 12.6, 12.8, 12.1, 12.5), range1 = c(0.003356, 1.20497, -0.128138, -42.6093, -41.1975, -44.706, -20, -46.4245, -0.543379, 2.09828, -20, -20, -44.2262, -46.6559, -20, -20, 2.37709), point = c(1.56805, 2.11176, 0.1502, -22.6093, -21.1975, -24.706, -0.491829, -26.4245, 2.49973, 2.94457, 0.0443572, 0.0208999, -24.2262, -26.6559, 2.69408, 3.22951, 3.33255), range2 = c(2.3767, 2.73239, 0.430373, 4.34247, 4.96875, 3.78027, 1.91331, 4.07937, 3.54538, 3.5491, 1.87162, 2.41067, 5.26578, 4.50965, 4.55967, 5.05772, 3.97742), type = structure(c(1L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("ALL", "A", "B", "C"), class = "factor"), name = structure(c(13L, 14L, 15L, 1L, 4L, 5L, 6L, 8L, 12L, 17L, 2L, 3L, 7L, 9L, 10L, 11L, 16L), .Label = c("B_vision1", "C_vision2", "C_vision3", "B_vision4", "B_vision5", "A_vision2", "C_vision4", "B_vision6", "C_vision6", "C_vision5", "C_vision1", "B_vision7", "B_ALL", "C_ALL", "A", "C_vision7", "B_vision3"), class = "factor")), .Names = c("score", "range1", "point", "range2", "type", "name"), row.names = c(NA, -17L), class = "data.frame") 

Я попробовал все эти варианты:

df$name2 = reorder(df$name, -df$score) 
# df$name <- reorder(df$name, -df$score) 
df <- transform(df, category2 = factor(paste(name, type))) 
df <- transform(df, category2 = reorder(category2, score)) 

#library(plyr) 
#df = arrange(df,type, name) 

ggplot(df, aes(x=name, y=point, ymin=range1, ymax=range2, colour=type)) + geom_pointrange() + coord_flip() 

или

ggplot(df, aes(x=category2, y=point, ymin=range1, ymax=range2, colour=type)) + geom_pointrange() + coord_flip() 
+0

тип Преобразовать и имя характера столбцов вместо факторов. Другой вариант заключается в том, чтобы сохранить их в качестве факторов, но переупорядочить уровни. – Gopala

+0

Благодарим, что преобразование символов не решает его, хотя ... d $ type = as.character (df $ type); ДФ $ имя = as.character (ДФ $ название); ggplot (df, aes (x = name, y = point, ymin = range1, ymax = range2, color = type)) + geom_pointrange() + coord_flip() – jamespower

+0

Можете ли вы привести пример ожидаемого вывода? – Zelazny7

ответ

0

Я думаю, что я интерпретировал то вы пытаетесь делайте правильно, но я, возможно, ошибся.

имена (и оценки) могут быть отсортированы по отсортированного списка счетов, как

ordered.names <- as.character(df$name)[order(df$score)] 
ordered.scores <- as.character(df$score)[order(df$score)] 

Re упорядочения уровней имен (со счетом аннотированный) затем

df$name <- factor(df$name, levels=ordered.names, labels=paste(ordered.names, "(", ordered.scores, ")")) 

Plotting эти с ggplot:

library(ggplot) 
ggplot(df, aes(x=name, y=point, ymin=range1, ymax=range2, group=type, color=type)) + 
    geom_pointrange() + 
    theme(axis.text.x=element_text(angle=90, hjust=0)) 

производит

ggplot of point by name, arranged by score, colored by type

Если вы хотите, чтобы это разделить по типу, а также, вы можете фасет сюжет

ggplot(df, aes(x=name, y=point, ymin=range1, ymax=range2, group=type, color=type)) + 
    geom_pointrange() + 
    theme(axis.text.x=element_text(angle=90, hjust=0)) + 
    facet_wrap(~type, ncol=4, scale="free_x") 

ggplot of point by name, arranged by score, colored by type, facet by type

+1

Джонатан, спасибо большое. Да, это был цвет по типу, который я искал, и грани для типа == «ВСЕ» по сравнению со всеми остальными на самом деле, может быть, это слишком сложно, хотя, как мне кажется, мне пришлось бы создать другую переменную для этого, в любом случае это определенно чрезвычайно полезно для упорядочивания факторов, основанных на оценках, и я могу идти отсюда! Большое спасибо! – jamespower

Смежные вопросы