2016-08-31 4 views
2

Мой набор данных содержит несколько категориальных переменных, которые я бы хотел визуализировать, чтобы увидеть распределение.Как построить несколько категориальных переменных в R

Например, если бы я хотел визуализировать 4 переменные (производитель, транс, фл, класс) в данных миль на галлон, установленных в ggplot2, я должен написать 4 строки кода:

ggplot(mpg, aes(manufacturer)) + geom_bar() + coord_flip() 
ggplot(mpg, aes(trans)) + geom_bar() + coord_flip() 
ggplot(mpg, aes(fl)) + geom_bar() + coord_flip() 
ggplot(mpg, aes(class)) + geom_bar() + coord_flip() 

Результирующая barplot :

enter image description here

Как я могу написать код, чтобы сделать это более эффективно? цикл? применить функцию? Я хотел бы видеть каждый график по одному, если это возможно.

ответ

3

Ваша идея использовать lapply является одним из решений.

Для этого требуется aes_stringaes.

Одиночные участки

Это создает одиночные участки на столбец (имя) Вы обеспечиваете в качестве первого аргумента lapply:

lapply(c("manufacturer", "trans", "fl", "class"), 
    function(col) { 
    ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip() 
    }) 

Комбинированные участки

Если требуется, чтобы все участки на один участок, вы можете использовать miscset::ggplotGrid:

library(miscset) # install from CRAN if required 
ggplotGrid(ncol = 2, 
    lapply(c("manufacturer", "trans", "fl", "class"), 
    function(col) { 
     ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip() 
    })) 

Результат выглядит следующим образом:

enter image description here

+0

Это фантастика! Спасибо за быстрый ответ @setempler. Есть ли способ заказать бары по счету? – rishi

+0

@ rishi Да, описанный здесь: http://stackoverflow.com/questions/5208679/order-bars-in-ggplot2-bar-graph - ответ Alex Brown – setempler

+0

@setempler Можно ли пометить значения для каждого графика и применить цвет для каждого бара? спасибо. – user7462639

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