如何在R中绘制数据框的所有列

数据框有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语言的角度来看)?


ITMISS
浏览 1304回答 3
3回答

慕田峪9158850

有一种非常简单的方法可以使用单独的面板或同一面板绘制数据框中的所有列: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

您可以赴汤蹈火,你的解决方案转换为一个lapply,sapply或apply致电。(我看到@jonw显示了一种执行此操作的方法。)除此之外,您已经拥有的代码完全可以接受。如果这些都是时间序列或类似的时间序列,则以下可能是合适的替代方法,它将每个序列在其自己的面板中绘制在一个绘图区域上。我们使用该zoo软件包是因为它确实很好地处理了有序数据。require(zoo)set.seed(1)## example datadat <- data.frame(X = cumsum(rnorm(100)), Y = cumsum(rnorm(100)),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Z = cumsum(rnorm(100)))## convert to multivariate zoo objectdatz <- zoo(dat)## plot itplot(datz)这使:&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP