2013-11-19 2 views
3

У меня возникли проблемы с добавлением линий линейной регрессии к моим ggplots. Вот как это должно выглядеть следующим образом: enter image description hereКак добавить регрессионную линию в обертку ggplot

Это, как она в настоящее время выглядит следующим образом: enter image description here

Это мой код:

p <- ggplot(data = wage, aes(x = educ, y = lwage, colour = black, 
       cex = IQ, pch = married, alpha = 0.7)) + geom_jitter() 

p1 <- p + facet_grid(urban~experclass) + geom_smooth(se=F,method="lm") 

p1 + labs(x = "Education (year)", y = "Log Wage", shape = "Marital status", 
      colour = "Ethnicity") + guides(alpha = FALSE) 

Является ли позиция моего geom_smooth неправильно? Я хочу только одну черную линию регрессии для каждого элемента сюжета - и не один за слоем.

Кроме того, что происходит, когда я добавляю линию регрессии, это то, что символы легенды меняются. Особенно легенда IQ выглядит довольно странно. Что-то я здесь не рассматривал?

Как это должно выглядеть:

enter image description here

Как это выглядит:

enter image description here

+0

Вы можете попробовать положить 'группу = взаимодействия (городской, experclass)' в ваш айс? –

+2

Я думаю, что даже 'group = 1' будет работать в этом случае. –

+0

thx. Это действительно сработало! По-прежнему существует проблема с легендой - я обновил свой пост соответственно. – SWR

ответ

0

Я могу попытаться ответить по крайней мере одну часть вашего вопроса - который является частью о черчения одна линия регрессии вместо двух на панель. У меня нет данных, поэтому я не могу полностью воспроизвести вашу проблему, но я думаю, что это сработает.

Эстетика в исходном вызове ggplot() будет наследоваться всеми последующими слоями, включая geom_smooth. То, что вам кажется, это эстетика цвета (которая является идентификатором группировки), которая применяется только к дрожащим точкам, а не к линии. Таким образом, вы можете написать код так:

p <- ggplot(data = wage, aes(x = educ, y = lwage, 
      cex = IQ, pch = married, alpha = 0.7)) + 
      geom_jitter() 

    p1 <- p + facet_grid(urban~experclass) + 
      geom_smooth(se=F,method="lm", 
      aes(colour = black)) 

или, в качестве альтернативы, в качестве одного ggplot вызова в измененном стиле:

p3 <- ggplot(data = wage, 
       aes(x = educ, y = lwage, 
        size = IQ, shape = married, alpha = 0.7)) + 
      geom_jitter() + 
      geom_smooth(se=F,method="lm", 
         aes(colour = black))+ 
      facet_grid(urban~experclass) 
    p3 
Смежные вопросы