2013-05-14 3 views
1

Если у меня есть фактор для моей переменной у и попытаться использовать geom_hline в facet_grid я получаю сообщение об ошибке:горизонтальная линия; Ось у как фактор: ggplot2

p <- qplot(mpg, factor(sample(c("a", "b", "c", "d"), nrow(mtcars), T)), data=mtcars, facets = vs ~ am) 

hline.data <- data.frame(z = factor(c("a", "b", "c", "d")), vs = c(0,0,1,1), am = c(0,1,0,1)) 
p + geom_hline(aes(yintercept = z), hline.data) 

## > p + geom_hline(aes(yintercept = z), hline.data) 
## Error in x - from[1] : non-numeric argument to binary operator 

Почему я получаю сообщение об ошибке, и как я могу это исправить?

PS Я могу это исправить, повернув его как числовой в:

hline.data <- data.frame(z = factor(c("a", "b", "c", "d")), vs = c(0,0,1,1), am = c(0,1,0,1)) 

qplot(mpg, as.numeric(factor(sample(c("a", "b", "c", "d"), nrow(mtcars), T))), data=mtcars, facets = vs ~ am) + 
    geom_hline(aes(yintercept = as.numeric(z)), hline.data) 

Но я теряю нужные ярлыки фактора.

ответ

2

The Исправление является добавление цифровой версию z, чтобы не превратить его

hline.data <- data.frame(z = factor(c("a", "b", "c", "d")), vs = c(0,0,1,1), 
         am = c(0,1,0,1)) 

## add numeric version of `z` as a new variable 
hline.data <- transform(hline.data, z0 = as.numeric(z)) 

p <- qplot(mpg, factor(sample(c("a", "b", "c", "d"), nrow(mtcars), T)), 
      data=mtcars, facets = vs ~ am) 
p + geom_hline(aes(yintercept = z0), hline.data) 

Производство

enter image description here

+0

Это работает, но чувствует, как взломать. Это ошибка в ggplot2 или, возможно, что-то запрашивается на его сайте GitHub? –

+0

@TylerRinker Трудно сказать, является ли это ошибкой, поскольку в документации не указано, что принимает 'yintercept'. Нет разумной системы координат, в которой характерный фактор имеет смысл. Ось оси масштабируется численно, даже если она помечена символами. –

+0

Правда, но в некотором роде это похоже на то, как ведет себя точка. Я бы ожидал, что это поведение будет расширено здесь. Я проделал это как продолжение списка рассылки ggplot. –

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