2016-11-09 2 views
2

У меня есть следующая функция графика, используя ggplot2.R - изменить порядок штрихов в функции с помощью ggplot2

Function_Plot <- function(Fun_Data, Fun_Color) 
{ 
    MyPlot <- ggplot(data = na.omit(Fun_Data), aes_string(x = colnames(Fun_Data[2]), fill = colnames(Fun_Data[1]))) + 
      geom_bar(stat = "count") + 
      coord_flip() + 
      scale_fill_manual(values = Fun_Color) 
    return(MyPlot) 
} 

Результат:

Image

Мне нужно обновить свою функцию, чтобы изменить порядок планку по частотам слов (в порядке убывания). Поскольку я вижу ответ на другой вопрос о переупорядочении, я пытаюсь ввести функцию reorder в aes_string, но это не сработает.

Воспроизводимый пример:

a <- c("G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G2","G2","G2","G2","G2","G2","G2","G2") 
b <- c("happy","sad","happy","bravery","bravery","God","sad","happy","freedom","happy","freedom", 
     "God","sad","happy","freedom",NA,"money","sad") 

MyData <- data.frame(Cluster = a, Word = b) 
MyColor <- c("red","blue") 

Function_Plot(Fun_Data = MyData, Fun_Color = MyColor) 
+2

Попробуйте 'MyData <- as.data.frame (таблица (MyData [, 2], MyData [, 1])); MyData [, 1] <- reorder (MyData [, 1], MyData [, 3], FUN = sum); ggplot (data = na.omit (MyData), aes_string (x = colnames (MyData [1]), y = colnames (MyData [ 3]), fill = colnames (MyData [2]))) + geom_bar (stat = "identity") '. – lukeA

ответ

1

Ну, если переназначения не работают внутриaes_string, давайте попробуем это заранее.

Function_Plot <- function(Fun_Data, Fun_Color) 
{ 
    Fun_Data[[2]] <- reorder(Fun_Data[[2]], Fun_Data[[2]], length) 
    MyPlot <- ggplot(data = na.omit(Fun_Data), aes_string(x = colnames(Fun_Data[2]), fill = colnames(Fun_Data[1]))) + 
      geom_bar(stat = "count") + 
      coord_flip() + 
      scale_fill_manual(values = Fun_Color) 
    return(MyPlot) 
} 

Function_Plot() 

enter image description here

Пара Другие ноты - я бы рекомендовал использовать более последовательный стиль, смешивая ли или не использовать использование _ для разделения слов в именах переменных сбивает с толку и просят ошибок.

Это не имеет большого значения, если только ваши данные не являются действительно большой, но извлечение имен из кадра данных очень эффективно, тогда как подмножество кадра данных менее эффективно. Ваш код подмножает кадр данных, а затем извлекает оставшиеся имена столбцов, например, colnames(Fun_Data[1]). Будет чище извлекать имена, а затем подмножество этого вектора: colnames(Fun_Data)[1]

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