2012-12-21 27 views
8

Tôi rất mới với R, vì vậy xin lỗi cho một câu hỏi có lẽ là ngu ngốc.Làm cách nào để vẽ một tệp CSV đa phương tiện?

Tôi có tệp CSV đa phương tiện (dấu phẩy, không có dấu ngoặc kép) trong đó hàng đầu tiên là tiêu đề, cột đầu tiên là chỉ số nguyên tiếp giáp và 17 cột khác là các giá trị dấu phẩy động của hàm .

Nhiệm vụ là vẽ tất cả 17 dòng trên cùng một biểu đồ (với cùng các trục).

Âm thanh rất đơn giản nhưng thực sự không rõ ràng.

Trả lời

2

Bạn có thể sử dụng read.csv để nhập dữ liệu dưới dạng data.frame. Sau đó, bạn có rất nhiều sự lựa chọn cho âm mưu. Tôi thích lattice cho hầu hết công việc điều tra.

Hai trong mạng. Ở đây tôi đang tạo dữ liệu ngẫu nhiên cho biểu đồ.

library(lattice) 
d <- data.frame(index=1:20, x=rnorm(20), y=rnorm(20)) 

> head(d, n=3) 
    index   x   y 
1  1 -1.065591 0.2422635 
2  2 -1.563782 -1.4250984 
3  3 1.156537 0.3659411 

xyplot(x+y~index, data=d, type='l', auto.key=list(space='right')) 

Bạn có thể tạo công thức từ tên cột. Tôi thường không làm được điều này từ dấu nhắc, nhưng sử dụng các cấu trúc như vậy trong mã:

f <- paste(paste(names(d[,-1,drop=FALSE]), collapse="+"), 
      names(d[,1,drop=FALSE]), 
      sep=" ~ ") 

xyplot(as.formula(f), data=d, type='l', auto.key=list(space='right')) 

Như trong câu trả lời của Ben, type='l' xác định dòng. Giá trị mặc định là type='p' cho các điểm. Tôi đã thêm tham số auto.key vào đây để gắn nhãn cho chuỗi.

enter image description here

+0

Sau khi tôi tải dữ liệu của mình bằng 'd <- read.table (" mytable.csv ")' và đưa ra lệnh 'head (d, n = 3)', dòng tiêu đề được hiển thị với độ lệch lớn - trông trống và được cuộn sang phải để xem tiêu đề thực tế. Khi tôi phát lệnh 'xyplot (x + y ~ index, data = d, type = 'l')', nó cho 'Lỗi trong eval (expr, envir, enclos): đối tượng 'x' không tìm thấy'. Nhưng giải pháp của Ben hoạt động tốt với cùng một tệp và ví dụ của bạn với dữ liệu ngẫu nhiên cũng hoạt động. – Ivan

+0

Trong ví dụ của tôi, 'x' và' y' là tên của các cột trong khung dữ liệu. Bạn sẽ cần phải sử dụng tên cột thực tế. Tôi nên đã chỉ định 'read.csv' vì nó sẽ cung cấp các giá trị mặc định chính xác (header = TRUE, sep =", ") cho bạn. Tôi sẽ chỉnh sửa để phản ánh điều này. Bạn có tên cột nào trong dữ liệu của mình? –

+0

Tôi đã cố gắng làm cho nó hoạt động, cảm ơn bạn. – Ivan

18

Có lẽ, cơ sở-R chỉ giải pháp nhỏ gọn nhất là

mydata <- read.csv("mydatafile.csv") 
matplot(mydata[, 1], mydata[, -1], type="l") 
  • header=TRUE là một tùy chọn mặc định read.csv(), do đó bạn không cần phải xác định sự tồn tại của hàng tiêu đề rõ ràng
  • mydata[, 1] chọn cột đầu tiên; mydata[, -1] chọn tất cả trừ cột đầu tiên
  • type="l" chọn dòng (mặc định là điểm); thấy ?matplot, ?plot để biết chi tiết của việc thay đổi kiểu đường, màu sắc, vv vv vv ...

Một khi bạn biết rằng matplot là hữu ích, bạn có thể tìm kiếm StackOverflow ví dụ khác, ví dụ How to draw multiple Lines from csv in R

+3

Cảm ơn bạn, @ ben-bolker, câu trả lời của bạn là tuyệt vời để giải quyết vấn đề của tôi. Tôi hy vọng bạn không nhớ tôi chấp nhận câu trả lời của Matthew mặc dù nó giải quyết được vấn đề vì Matthew đã có ít điểm danh tiếng hơn nhiều. – Ivan

+2

không có vấn đề gì .... –

Các vấn đề liên quan