在ggplot中绘制多个时间序列

use*_*765 21 r ggplot2

我有一个由10个变量组成的时间序列数据集.

我想创建一个时间序列图,其中每个10变量随着时间的推移在同一图表上以不同的颜色绘制.值应位于Y轴上,日期应位于X轴上.

单击此处查看数据集csv

这是我一直使用的(可能是错误的)代码:

c.o<-read.csv(file="co.csv",head=TRUE)
ggplot(c.o, aes(Year, a, b, c, d, e,f))+geom_line()
Run Code Online (Sandbox Code Playgroud)

以下是代码的输出结果:

谁能指出我正确的方向?我以前的帖子里找不到任何东西.

问题已解决,见下文.

还有一件事我想知道:

是否有可能在图中添加一条额外的线来表示所有变量在时间上的平均值,并在该线下方和上方进行一些平滑以表示各个变化?

use*_*1_G 40

如果您的数据被调用df如下:

library(ggplot2)
library(reshape2)
meltdf <- melt(df,id="Year")
ggplot(meltdf,aes(x=Year,y=value,colour=variable,group=variable)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以基本上在我的代码中,当我使用aes()im告诉它x轴是Year,y轴是value然后colour/ grouping是由variable.

melt()功能是以您ggplot2 希望的格式获取您的数据.一个大的专栏year等等,当你告诉它用你的单独的线条绘制时,你会有效地分裂variable.

  • 我错过了你应该使用的代码`meltdf <-melt(df,id ="Year")`.我也纠正了这个问题. (2认同)
  • 或者您可以使用`geom_smooth`,可能与`geom_point`结合使用以获得更平滑的图形. (2认同)