2013-08-22 3 views
0

Может кто-то пожалуйста, покажите мне, как построить с ggplot эффект взаимодействия ниже (код генерируется с помощью this инструмента):Как преобразовать график регрессионного взаимодействия в ggplot?

xx <- c(40,65) 
yy <- c(26.77,37.15) 
x <- c(40,65) # <-- x-coords for lines 
y1 <- c(28.5,37.15) 
y2 <- c(30.345,35.895) 
y3 <- c(32.19,34.64) 
plot(xx,yy,type='n',font=2,font.lab=2,xlab='x1',ylab='Y',main='2-Way Interaction Plot') 
lines(x,y1,lwd=3,lty=1,col=1) 
lines(x,y2,lwd=3,lty=5,col=2) 
lines(x,y3,lwd=3,lty=6,col=3) 
points(x,y1,col=1,pch=16) 
points(x,y2,col=1,pch=16) 
points(x,y3,col=1,pch=16)              
legend(leg[1],leg[2],legend=c('W1(1)','W1(2)','W1(3)'),lwd=c(3,3,3),lty=c(1,5,6),col=c(1,2,3)) 

y1, y2, y3 являются точками/условные значения крутизны для модератора.

+1

Добро пожаловать на Cross Проверено! Но этот вопрос касается программирования и будет лучше в Stack Overflow. – Scortchi

+0

Я надеюсь [это] (http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_%28ggplot2%29/#with-x-axis-treated-as-continuous) и [это] (http: // docs .ggplot2.org/current/stat_summary.html) пример поможет вам начать работу. – Henrik

+0

Проверьте свой синтаксис, пожалуйста. И что такое 'leg [1]' и 'leg [2]'? – Frank

ответ

0

Вам нужен dataframe в длинном формате: (. Легенда появляется автомагически)

dfrm <- data.frame(x=rep(x,3), y=c(y1,y2,y3), 
        group=rep(c("y1","y2","y3") ,each=2)) 
ggplot(data=dfrm, aes(x=x,y=y,group=group)) + 
         geom_point()+geom_line(aes(col=group)) 

Есть также xlim и ylim функции, если вы хотите, чтобы следить за соблюдением «XX» и YY ограничения, которые применяются к в вашем базовом графическом шаблоне.

enter image description here

+0

спасибо @DWin. В случае, если кто-то другой является новичком в R, как я, и пытается реплицировать: group - это модератор «w» -variable и y1, y2, y3 выше, являются условными значениями в w (значения). Код для фрейма данных и ggplot: 'group = c ("w (1)", "w (1)", "w (2)", "w (2)", "w (3)" , "w (3)") x = c (40, 65, 40, 65, 40, 65) y = c (28,5, 37,15, 30,345, 35,895, 32,19, 34,64) mydata <- data.frame (x, y, group) ggplot (data = mydata, aes (x = x, y = y, group = group)) + geom_point() + geom_line (aes (col = group)) ' – user29436

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