首先,我是R中的一个新手。不幸的是,我无法找到与我的问题相关的现有标签。我有几个以下结构的data.frame:
行: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年的每个城市的迁移流量),以便比较它们。有没有办法做到这一点?
答案 0 :(得分:0)
蛮力非优雅的方法(但为什么不,它很简短):
Disallow: /x*
请注意,在您的示例中,data.frame [2,]适用于City 1.
答案 1 :(得分: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
可以让颜色根据行数动态更改。 xlab
中plot
的参数将允许您使x轴标签更复杂。虽然这段代码很简单,并且依赖于特定数量的行,但您可以轻松地将其概括为可以处理更多变化的数据。