2015-09-17 5 views
2

Я пытаюсь создать простой график geom_point с использованием ggplot2, но я не могу получить легенду. У меня есть два кадра данных, которые я рисую на разных длинах (~ 2000 строк против ~ 6000 строк).R, ggplot2 добавить легенду с различными кадрами данных (разных размеров)

Я попытался добавить такие вещи, как 'scale_shape_manual (values ​​= c (21, 23)', чтобы это всплыло, но это не сработало. Я также попытался добавить 'shape = 21' в aes и 'shape = 23' в ОПЗ за свои звонки geom_point, но я получил ошибку „ошибку:.! Непрерывное значение поставляется в дискретную шкалу“ Спасибо за любую помощь Смотрите пример код ниже:

x1 = c(0, 1, 2, 3, 4) 
y1 = c(0.44, 0.64, 0.77, 0.86, 0.91) 
x2 = c(0, 1) 
y2 = c(0.42, 0.61) 
df1 = data.frame(x1, y1) 
df2 = data.frame(x2, y2) 

g<- ggplot(df1, aes(x = (df1[,1]), y = (df1[,2]*100))) + 
    geom_point(colour = 'black', size = 5, fill = 'blue', shape = 21) + 
    geom_point(data = df2, aes(x = df2[,1], y = (df2[,2]*100)), 
      colour = 'black', size = 4, fill = 'white', shape = 23) + 
    xlab("Consecutive Dry Years") + ylab("Percent") + ggtitle("Plot") + 
    scale_y_continuous(limits=c(0, 100)) + 
    scale_x_continuous(breaks=0:20) + 
    scale_shape_manual(values=c(21, 23), 
        name="My Legend", 
        labels=c("Simulated", "Historical")) + 
    # scale_fill_manual(values=c('blue', 'white'), 
    #      name="My Legend", 
    #      labels=c("Simulated", "Historical")) + 
    # scale_colour_manual(values=c('black', 'black'), 
    #      name="My Legend", 
    #      labels=c("Simulated", "Historical")) + 
    theme_bw() 
g 
+0

какие проблемы вы с? .... ваши работает код и производит хороший сюжет – pcantalupo

+0

сюжет не дает легенды. Я не могу понять, как заставить легенду появиться. – bski

+0

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

ответ

1

для моего ggplotting я всегда помещаю свои данные в один фрейм данных. Я вроде помню, что кто-то сказал, что существует конфликт с указанием разных цветов в геометрах. Я думаю, что этот код дает вам идею:

df3 = data.frame(type=c(rep("sim",5), rep("his",2)), x = c(x1,x2), y=c(y1,y2)) 
g = ggplot(df3, aes(x=x,y=y*100)) + geom_point(aes(color=type)) + geom_line(aes(color=type)) + 
    xlab("Consecutive Dry Years") + ylab("Percent") + ggtitle("Plot") + 
    scale_y_continuous(limits=c(0, 100)) 
g 

enter image description here

+0

Очень круто, очень просто. Я не знаю, почему я не думал о «укладке» моих данных. Трудно перейти от парадигмы построения R по умолчанию к парадигме ggplot. Благодаря! – bski

+0

да, я тоже сталкиваюсь с этим – pcantalupo

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