0

首先,我是 R 中的新手。不幸的是,我找不到与我的问题相关的现有标签。我有以下结构的几个data.frames:

线路:City1、City2、City3、(...)

列:Migration-Flow 2004、Migration-Flow 2005、Migration-Flow 2006 (...)

City    Migration-Flow 2004    Migration-Flow 2005    Migration-Flow 2006
----    -------------------    -------------------    -------------------
City1   5920                   1339                   -3394
City2   3001                   4129                   4430
...

我的线条(不是我的专栏)代表每个城市的时间序列。例如,data.frame[,2] 表示 City1 在 2004 年到 2010 年之间的时间序列。

我想要做的是,在一个图表中绘制每条线(从 2004 年到 2010 年每个城市的迁移流量)以便比较它们。有没有办法做到这一点?

4

2 回答 2

0

蛮力非优雅方法(但为什么不呢,它很短):

# Generate artificial data
flow = matrix(runif(100,1000,2000),nrow=10)
d = data.frame(City=paste0("City",1:10),flow)

# Brute force
plot(unlist(d[1,-1]), type = "l")
for (i in 2:nrow(d)) lines(unlist(d[i,-1]),col=i)

请注意,在您的示例中 data.frame[2,] 是针对城市 1 的。

于 2015-05-19T17:11:05.347 回答
0

使用该plot命令,您可以从数据的第一行生成图。然后,使用lines,您可以为每个新行在绘图中添加新行。一个简单的for循环将使这个过程相对简单。下面是一个简单的例子:

set.seed(519310)
testdata <- data.frame(City=c("Trenton","New Dehli","Kabul","New York","Santa Fe","Berlin","Oslo"),
                       Migration.2004=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2005=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2006=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2007=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2008=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2009=sample(x = -1000:1000,size = 7,replace = TRUE),
                       Migration.2010=sample(x = -1000:1000,size = 7,replace = TRUE))

plot(x = 1:(ncol(testdata)-1),
     y = testdata[1,2:8],
     type = "l",
     ylim = c(-1000,1000))

colors <- c("red","blue","green","yellow","purple","orange","dark blue")

for(x in 2:nrow(testdata)) {

    lines(x = 1:(ncol(testdata)-1),y = testdata[x,2:8],type = "l",col = colors[x])
}

这将产生以下输出:

绘图输出

使用该legend命令您可以生成一个图例,使用该命令可以colorRamp让您根据行数动态更改颜色。xlabin 的参数plot将允许您使 x 轴标签更复杂。虽然此代码很简单并且依赖于特定数量的行,但您可以轻松地将其概括为处理更多不同的数据。

于 2015-05-19T17:11:30.160 回答