2014-02-12 3 views
1

Я задал аналогичный вопрос относительно этого несколько дней назад, но мои потребности немного изменились, и у меня возникли проблемы. У меня есть набор данных, который выглядит следующим образом:ggplot2: Позиция dodge на основе переменной, отличной от цвета

http://pastebin.com/a1PzfeG1

И я использовал следующий код:

ggplot(aes(x=factor(ATM),y=value), data=CONDITION) + 
    geom_boxplot(aes(fill=factor(TEMP))) + 
    geom_point(aes(color=factor(PARENT)), position=position_dodge(width=0.75)) + 
facet_wrap(~ variable, ncol = 1) + 
scale_fill_manual(values = c("#88CCFF","#FF6666")) + 
scale_colour_manual(values = c("#336699","#990000","#009900")) + 
labs(title = "(Fig. 1) Effect of temperature and hydrostatic pressure on the development of larval Crepidula fornicata") + 
xlab("Pressure \n (atm)") + 
ylab("Number of Larvae") + 
guides(fill=guide_legend(title="Temperature (°C)"),colour=guide_legend(title="Parent")) 

Чтобы сделать график, который выглядит следующим образом:

Graph

Теперь, если я задаю цвет geom_point как коэффициент (TEMP), то позиция dodge выстраивает их в соответствие с соответствующими квадратиками, но когда я изменил его на основе родителя, он теперь смещает их на основе этой переменной. Мне интересно, есть ли способ выстроить точки, основанные на переменной TEMP, но покрасить их на основе PARENT.

Спасибо заранее,

Кез

ответ

4

Это происходит потому, что TEMP имеет два уровня, тогда как PARENT имеет три. ggplot будет увернуться от того, сколько уровней у вас есть. Так как у вас есть два ящика, уклонение будет правильно выстраиваться, когда ваши очки имеют два уровня. Если у вас было три ящика, то PARENT точки уклонения выстроились нормально. Вот обходной путь с помощью group:

geom_point(aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75)) 

Это работает, потому что по умолчанию color будет назначать группы, если группы не иначе определены. Поскольку здесь мы активно указываем группы, те преобладают и уклоняются от уклонов, основанных на явных группах, а не на цветных подразумеваемых группах.

+0

Это было восхитительно просто и отлично работало! Большое спасибо за вашу помощь! – Kez

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