数据框有n列,我想得到n个图,每列一个图。我是一个新手,我不太熟练R,反正我找到了两种解决方案。第一个有效,但是它不打印列名(我需要它们!):data <- read.csv("sample.csv",header=T,sep=",")for ( c in data ) plot( c, type="l" )第二个效果更好,因为它打印列名:data <- read.csv("sample.csv",header=T,sep=",")for ( i in seq(1,length( data ),1) ) plot(data[,i],ylab=names(data[i]),type="l")有什么更好的解决方案(从R语言的角度来看)?
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
有一种非常简单的方法可以使用单独的面板或同一面板绘制数据框中的所有列:
plot.ts(data)
哪个产生(其中X1-X4是列名):
查看所有选项的?plot.ts。
如果您不想进一步控制绘图功能并且不使用循环,则还可以执行以下操作:
par(mfcol = c(ncol(data), 1))
Map(function(x,y) plot(x, main =y), data, names(data))
慕村9548890
TA贡献1884条经验 获得超4个赞
您可以赴汤蹈火,你的解决方案转换为一个lapply,sapply或apply致电。(我看到@jonw显示了一种执行此操作的方法。)除此之外,您已经拥有的代码完全可以接受。
如果这些都是时间序列或类似的时间序列,则以下可能是合适的替代方法,它将每个序列在其自己的面板中绘制在一个绘图区域上。我们使用该zoo软件包是因为它确实很好地处理了有序数据。
require(zoo)
set.seed(1)
## example data
dat <- data.frame(X = cumsum(rnorm(100)), Y = cumsum(rnorm(100)),
Z = cumsum(rnorm(100)))
## convert to multivariate zoo object
datz <- zoo(dat)
## plot it
plot(datz)
这使:
- 3 回答
- 0 关注
- 1357 浏览
添加回答
举报
0/150
提交
取消