使用ggplot,如何在循环中一次添加一个点,然后在循环后通过一行连接它们?

时间:2015-05-08 13:33:35

标签: r ggplot2 line point

我正在处理大量数据,我正在考虑使用循环一次绘制一部分数据。

以下是数据样本:

Department  Period  Sales
1005    1   3354.256
1005    1   5587.164
1005    2   3946.055
1005    2   5739.555
1005    3   3990.139
1005    3   6208.411
1005    4   3887.84
1005    4   6397.811
1008    1   4014.629
1008    1   5370.781
1008    2   4311.249
1008    2   5403.442
1008    3   4028.125
1008    3   6660.305
1008    4   4564.816

我最初的想法是一次绘制一个点,然后在退出循环后用一条线连接点。

gp <- ggplot()

for (i in 1:4) {
  dat <- qdat[qdat$Period == i,]
  gp <- gp + stat_summary(data = dat , aes(x=Period , y=Sales), geom="point", fun.y="sum")
  print(gp)
}

final_plot <- gp + geom_line()

但是,我只获得积分,但无法生成任何连接点的线。

理想情况下,我还想知道是否可以一次绘制不同的线段以使用循环制作一条连续线。

非常感谢!!

1 个答案:

答案 0 :(得分:0)

正如评论中指出的那样,使用ggplot你不应该逐一将点添加到情节中。您可以轻松地在一个步骤中绘制所需的内容。我假设(告诉我,当我错了)你想要在x轴上有Period和在y-asix上属于那个时期的所有销售的总和。这可以按如下方式完成。

首先,我使用aggregate()来总结每期的销售额:

plot.data <- aggregate(Sales~Period,data=qdat,FUN=sum)

使用此数据集,绘图可以在一行中完成:

ggplot(plot.data,aes(x=Period,y=Sales)) + geom_point() + geom_line()

请注意,我使用geom_point() geom_line()来获取通过一条线连接的点。使用您提供的数据样本,我得到以下图片:

enter image description here

相关问题