亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在R中繪制數據框的所有列

如何在R中繪制數據框的所有列

ITMISS 2019-10-06 13:15:31
數據框有n列,我想得到n個圖,每列一個圖。我是一個新手,我不太熟練R,反正我找到了兩種解決方案。第一個有效,但是它不打印列名(我需要它們?。篸ata <- 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是列名):


http://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)

這使: 

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

查看完整回答
反對 回復 2019-10-06
  • 3 回答
  • 0 關注
  • 1392 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號