为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2019-10-06 13:15:31
数据框有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是列名):


//img1.sycdn.imooc.com//5d99789b00016d7604800480.jpg

查看所有选项的?plot.ts。


如果您不想进一步控制绘图功能并且不使用循环,则还可以执行以下操作:


par(mfcol = c(ncol(data), 1))

Map(function(x,y) plot(x, main =y), data, names(data))


查看完整回答
反对 回复 2019-10-06
?
慕村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)

这使: 

//img1.sycdn.imooc.com//5d9978a800013cd206400480.jpg

查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 1303 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信