2016-01-20 22 views
7

Tôi đang cố gắng vẽ một số triệu điểm dữ liệu trong R. Tôi hiện đang sử dụng ggplot2 (nhưng tôi mở để gợi ý các gói thay thế). Vấn đề là biểu đồ mất quá nhiều thời gian để hiển thị (thường lên trên một phút). Tôi đang tìm cách để làm điều này nhanh hơn - trong thời gian thực lý tưởng. Tôi sẽ đánh giá cao bất kỳ sự trợ giúp nào - đính kèm mã vào câu hỏi cho sự rõ ràng.Hiệu quả vẽ hàng triệu điểm dữ liệu trong R

Tạo (ngẫu nhiên) khung dữ liệu với ~ 500000 điểm dữ liệu:

letters <- c("A", "B", "C", "D", "E", "F", "G") 
myLetters <- sample(x = letters, size = 100000, replace = T) 
direction <- c("x", "y", "z") 
factor1 <- sample(x = direction, size = 100000, replace = T) 
factor2 <- runif(100000, 0, 20) 
factor3 <- runif(100000, 0, 100) 
decile <- sample(x = 1:10, size = 100000, replace = T) 


new.plot.df <- data.frame(letters = myLetters, factor1 = factor1, factor2 = factor2, 
         factor3 = factor3, decile = decile) 

Bây giờ, âm mưu dữ liệu:

color.plot <- ggplot(new.plot.df, aes(x = factor3, y = factor2, color = factor1)) + 
geom_point(aes(alpha = factor2)) + 
facet_grid(decile ~ letters) 

enter image description here

Làm thế nào để làm cho render nhanh hơn ?

+6

Điều đầu tiên xuất hiện trong đầu tôi là lấy một tập hợp con dữ liệu đầy đủ mà bạn đang vẽ. Ít điểm hơn có lẽ có nghĩa là thời gian hiển thị nhanh hơn. Bí quyết là tìm ra cách lấy mẫu hàng triệu điểm. –

+0

Cảm ơn Tim. Tôi đang thử các phương pháp lấy mẫu khác nhau, nhưng ngoài việc đi xuống con đường đó, có cách nào khác không? –

+0

Chỉ có 2 thứ có thể là một giải pháp thay thế sẽ bằng cách nào đó bằng cách sử dụng 'ggplot' để render nhanh hơn, đòi hỏi chuyên môn mà tôi không có. Và khả năng khác sẽ là dĩ nhiên để có được một cỗ máy nhanh hơn, mà có lẽ không phải là một lựa chọn. –

Trả lời

1

Nói chung có hai chiến lược mà tôi sử dụng cho việc này:

1) Như đã trình bày trong các ý kiến, lấy một mẫu mô tả hợp lý của dữ liệu của bạn sẽ không ảnh hưởng đến cốt truyện của bạn và bạn sẽ giảm số lượng điểm để render.

2) Một mẹo mà tôi sử dụng thực sự là tạo đối tượng mà không hiển thị ô và thay vào đó lưu cốt truyện vào hình ảnh PNG. Điều này thực sự tăng tốc quá trình bởi rất nhiều vì khi bạn mở hình ảnh nó sẽ là một raster chứ không phải là một hình ảnh vectơ.

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