2016-09-08 3 views
-1

Я создал сюжет гладких выровненных кривых некоторых данных вместе с соответствующими точками данных с помощью следующего кода в rstudio:Создание легенды в R при использовании ggplot(), geom_smooth

#begin code 
library(ggplot2) 
ggplot(mydata, aes(x,y)) + geom_point() + geom_smooth() 
p <- ggplot() + 

# blue plot 
geom_point(data=mydata, aes(x,y)) + 
geom_smooth(data=mydata, aes(x,y),fill="blue", 
colour ="darkblue", size=1) + 

# red plot 
geom_point(data=mydata, aes(x,y2)) + 
geom_smooth(data=mydata, aes(x,y2), fill="darkred", 
colour="red", size=1) 

p + xlab('Density') + ylab("Potential Energy (MeV)") 

#endcode 

Где подают данные в виде x, y, y2 в трех столбцах.

Я могу заставить графики работать только найти, но я не могу понять, как добавить легенду. Собственная функция legend() не работает, и любая попытка использовать theme() или scale_colour_manual() просто возвращает графики без изменений. Как добавить легенду или графику, чтобы различать красные и синие кривые?

+0

пожалуйста обеспечивает воспроизводимый пример –

+3

Вы не используете ggplot в том, что она предназначена. Весы должны добавляться автоматически, если вы правильно формируете свои данные. Затем вы можете использовать scale_color_blah для изменения масштабов. Попробуйте что-нибудь в этом направлении. Вам нужно создать новый data.frame, который складывает два столбца y сверху друг на друга, а затем создает индикатор (в данном случае var), для y и y2. 'mydata = data.frame (x = c (mydata $ x, mydata $ x), y = c (mydata $ y, mydata $ 2), var = c (rep (0, LENGTH OF Y), rep (1, LENGTH из Y2))); ggplot (data = iris, aes (x = x, y = y, color = var)) + geom_point() + geom_smooth() ' – Vlo

ответ

1

Это данные, которые я использовал в качестве примера.

mydata=data.frame(x=seq(1,10), 
        y1=floor(runif(min = 1,max=10,10)), 
        y2=floor(runif(min = 1,max=10,10))) 

Чтобы работать с ggplot2, я использовал функцию melt из библиотеки reshape2.

mydata=melt(mydata,measure.vars = c("y1","y2")) 

Затем я использовал следующий код, ЛМК, если это соответствует вашим потребностям:

ggplot(mydata,aes(x,value))+ 
    geom_point(aes(fill=as.factor(variable)))+ 
    geom_smooth(aes(fill=as.factor(variable)))+ 
    scale_fill_manual(values=c("red","blue"),guide=guide_legend(title="Variable")) 
Смежные вопросы