2015-11-17 5 views
6

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

Чтобы показать им разные режимы, я хотел показать им, что будет производиться с использованием .~Species, Species~. и Species~Species (плохой пример, который я допускаю).

Это, похоже, вызывает странное поведение в ggplot, и мне было интересно, почему это может быть. Я ожидал бы, что нижеприведенный сюжет содержит точки вдоль диагонали, где названия видов на каждой оси соответствуют друг другу. Вместо этого все указано под setosa по оси x, а затем по его фактическим видам по оси y.

Я понимаю, что этот пример не возникнет ни в одном реалистичном сценарии использования, он просто поразил меня как интересную причуду. Почему ggplot ведут себя так?

Я также пробовал это с набором данных mtcars и получал тот же эффект.

library("ggplot2") 
data(iris) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species) 

ggplot faceted scatterplot showing bug

+1

вы можете быть заинтересованы в 'GGally :: ggpairs()' ... –

+0

ха, да я прийти в этот после того, как я подумал, что я должен построить матрицы рассеяния! – Tumbledown

+0

Не знаю, почему это происходит, но я думаю, вы можете получить то, что хотите, создав еще одну переменную 'iris $ Species1 <- iris $ Species' и faceting на' Species ~ Species1'. –

ответ

0

Это потому, что у вас нет никакой информации для ggplot2 печатать комбинацию, например, сетоза и версиколор.

Здесь, в этом коде, я повторно использую комментарий @Sam, и я делаю выбор (изменение порядка) новых видов столбцов, которые мы создаем. Это создает combinaison видов. Экологически это, вероятно, вводит в заблуждение, как и я, но, конечно же, он печатает разновидности в комбинациях разных facet_grid.

library("ggplot2") 
data(iris) 
iris$Species1 <- sample(iris$Species) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species1) 

Это то, на что это могло бы быть похоже. Опять же, я просто создал разные пары видов для печати пар в сетке фасетов. R_output

Это будет примером с разных лет

iris$Year <- rep(2010:2014,dim(iris)[2]) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Year~Species) 

enter image description here