Возможно, ваши образцы данных не соответствуют реальным данным, с которыми вы работаете, но для df2
нет никаких линий, которые можно было бы провести. Для каждого значения x и y существует только одно значение. Вот модифицированная версия вашего df2
с достаточным количеством точек данных для построения линий:
df <- data.frame(grp=c("A","A","B","B","C","C"),val=c(1,2,3,1,2,3))
df2 <- data.frame(grp=c("A","A","B","B","C","C"),val=c(1,4,3,5,0,2))
p <- ggplot(df, aes(x=grp, y=val))
p <- p + geom_bar(stat="identity", alpha=0.75)
p + geom_line(data=df2, aes(x=grp, y=val), colour="blue")
В качестве альтернативы, если приведенный выше пример данных верен, вы можете нанести эту информацию в виде точки с помощью geom_point(data = df2, aes(x = grp, y = val), colour = "red", size = 6)
. Очевидно, вы можете изменить цвет и размер по своему вкусу.
РЕДАКТИРОВАТЬ: В ответ на комментарий
Я не совсем уверен, как должен выглядеть визуальный эффект многочлена частоты по гистограмме. Должны ли значения x быть связаны друг с другом? Во-вторых, вы продолжаете ссылаться на нужные строки, но ваш код показывает geom_bar()
, что, я полагаю, не то, что вам нужно? Если вам нужны строки, используйте geom_lines()
. Если два приведенных выше предположения верны, то вот способ сделать это:
#First let's summarise df2 by group
df3 <- ddply(df2, .(grp), summarise, total = sum(val))
> df3
grp total
1 A 5
2 B 8
3 C 3
#Second, let's plot df3 as a line while treating the grp variable as numeric
p <- ggplot(df, aes(x=grp, y=val))
p <- p + geom_bar(alpha=0.75, stat = "identity")
p + geom_line(data=df3, aes(x=as.numeric(grp), y=total), colour = "red")
person
Chase
schedule
02.12.2010