2011-08-24 21 views
7

Tôi đang sử dụng JRI để tạo các ô ggplot2 từ Java. Hiện tại tôi phải viết các ô vào đĩa. Làm cách nào để thực hiện điều này mà không phải thực hiện các tệp, tức là chỉ hiển thị các ô trong bộ nhớ?Trong R, làm thế nào để âm mưu vào một bộ nhớ đệm thay vì một tập tin?

Tôi đã thử sử dụng gói Cairo để vẽ thành một kết nối văn bản, nhưng điều đó không hoạt động nếu không có "Bản vá kết nối R", sau khi một số Googling hóa ra là lịch sử cổ đại.

+0

AFAIK, đây không phải là chưa thể. Đó là một tính năng định kỳ được yêu cầu, mặc dù tôi tin rằng nó đòi hỏi phải làm lại đáng kể mã kết nối của R, do đó nó chưa được thực hiện cho đến nay. –

+0

Có thực sự, các kết nối R cốt truyện là lịch sử (tôi đã viết nó). Tuy nhiên, tôi đã nghe một số báo cáo thú vị từ useR năm nay rằng ai đó có thể thử và lẻn vào một lỗ hổng nhỏ cho giao diện kết nối. – Jeff

+1

Ngoài ra, có một cách không có giấy tờ để lấy dữ liệu hình ảnh thô từ thiết bị Cairo. Nó chỉ là một ai đó cần phải viết một công cụ chuyển đổi cho nó, có thể là png, jpeg, tiff, vv. Bạn sẽ phải đọc mã nguồn, nhưng phạm vi chức năng .image trong gói Cairo trên rforge.net – Jeff

Trả lời

10

Chủ yếu là từ https://stat.ethz.ch/pipermail/r-devel/2010-August/058253.html.

library(Cairo) 
library(png) 
library(ggplot2) 

Cairo(file='/dev/null') 

qplot(rnorm(5000)) # your plot 

# hidden stuff in Cairo 
i = Cairo:::.image(dev.cur()) 
r = Cairo:::.ptr.to.raw(i$ref, 0, i$width * i$height * 4) 
dim(r) = c(4, i$width, i$height) # RGBA planes 
# have to swap the red & blue components for some reason 
r[c(1,3),,] = r[c(3,1),,] 
# now use the png library 
p = writePNG(r, raw()) # raw PNG bytes 

[Cập nhật:. JRI thể xử lý RAWS, bạn chỉ cần sử dụng trừu tượng REngine và không phải là những JRI]

+0

Yang, điều này thật tuyệt vời! Tôi không biết Simon đã viết một gói như thế! Cảm ơn câu trả lời. – Jeff

+0

Công việc tuyệt vời. Bạn có biết nếu có một PDF tương đương với phương pháp này @Yang? – geotheory

+0

@gottheory vui lòng đặt ra câu hỏi và tôi sẽ đăng giải pháp này https://www.andrewheiss.com/blog/2016/12/08/save-base-graphics-as-pseudo-objects-in-r/ thật không may ' png (NULL) 'không hoạt động. – Hedgehog

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