2012-05-29 35 views
7

Tôi có một tệp đầu vào có khoảng 20 triệu dòng. Kích thước của tập tin là khoảng 1,2 G. Có anyway tôi có thể vẽ dữ liệu trong R. Một số cột có thể loại, hầu hết trong số họ là số.Vẽ các tệp dữ liệu khổng lồ trong R?

Tôi đã thử kịch bản âm mưu của mình với một tập con nhỏ của tệp đầu vào khoảng 800K dòng, nhưng mặc dù tôi có khoảng 8G RAM, tôi dường như không thể vẽ tất cả dữ liệu. Có cách nào đơn giản để làm điều này không.

+9

Bạn hy vọng sẽ thấy điều gì với 20 triệu điểm dữ liệu? – Chase

+5

Bất kể khả năng tính toán bạn sẽ phải giảm dữ liệu của mình thông qua biểu đồ, các ô mật độ 1D và 2D, các ô lục giác, ... –

+0

... tiếp tục theo dòng câu trả lời của @Paul Hiemstra bên dưới - nếu bạn cung cấp thêm chi tiết về (một tập hợp con) dữ liệu của bạn, bạn có thể nhận được một cuộc thảo luận thú vị về khả năng hiển thị ở đây. Ngoài ra, 'ggplot' có thể chậm hơn/nhiều bộ nhớ đói hơn các khả năng khác, nếu bạn thực sự muốn âm mưu mọi điểm. –

Trả lời

12

Nếu không có mô tả rõ ràng hơn về loại ô bạn muốn, thật khó đưa ra đề xuất cụ thể. Tuy nhiên, nói chung không cần phải vẽ 20 triệu điểm trong một âm mưu. Ví dụ: bộ đếm thời gian có thể được thể hiện bằng cách phù hợp với splines hoặc một số loại trung bình, ví dụ: tổng hợp dữ liệu hàng giờ cho trung bình hàng ngày. Ngoài ra, bạn vẽ một số tập hợp con dữ liệu, ví dụ: chỉ một điểm mỗi ngày trong ví dụ về bộ đếm thời gian. Vì vậy, tôi nghĩ thách thức của bạn không phải là nhận được nhiều 20 triệu điểm, hoặc thậm chí 800k, trên một cốt truyện, nhưng làm thế nào để tổng hợp dữ liệu của bạn một cách hiệu quả theo cách nó truyền tải thông điệp mà bạn muốn nói.

+3

Lấy mẫu dữ liệu và lặp lại quy trình một vài lần cũng sẽ hiển thị các mẫu ẩn trong dữ liệu. –

+1

Tôi đồng ý với @ RomanLuštrik, nếu mẫu lặp lại chính nó để nói mẫu 10.000 điểm bạn biết mẫu là không đổi (còn gọi là văn phòng phẩm). Nếu không, một mẫu 10.000 điểm là không đủ. –

0

mở rộng bộ nhớ khả dụng với memory.limit(size=2000) (hoặc thứ gì đó lớn hơn) có giúp không?

3

vẽ trực tiếp vào thiết bị tệp raster (gọi số png() chẳng hạn) nhanh hơn rất nhiều. Tôi đã thử âm mưu rnorm(100000) và trên máy tính xách tay của tôi X11 cairo âm mưu mất 2,723 giây, trong khi thiết bị png hoàn thành trong 2,001 giây. với 1 triệu điểm, con số này là 27.095 và 19.954 giây.

Tôi sử dụng Fedora Linux và đây là mã.

f = function(n){ 
x = rnorm(n) 
y = rnorm(n) 
png('test.png') 
plot(x, y) 
dev.off()} 

g = function(n){ 
x = rnorm(n) 
y = rnorm(n) 
plot(x, y)} 

system.time(f(100000)) 
system.time(g(100000)) 
4

Hexbin gói để vẽ hình lục giác thay vì các ô phân tán cho các cặp biến do Ben Bolker đề xuất trong Speed up plot() function for large dataset làm việc cho tôi cho 2 triệu bản ghi công bằng RAM 4GB. Nhưng nó đã thất bại trong 200 triệu bản ghi/hàng cho cùng một tập các biến. Tôi đã thử giảm kích thước thùng để điều chỉnh thời gian tính toán so với sử dụng RAM nhưng nó không giúp được gì.

Đối với 20 triệu bản ghi, bạn có thể thử hexbins với xbins = 20,30,40 để bắt đầu.

1

Tăng bộ nhớ bằng bộ nhớ.limit() đã giúp tôi ... Điều này là dành cho âm mưu với ggplot gần 36 nghìn bản ghi.

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