các âm mưu ggplot trong tập lệnh không hiển thị trong Rstudio


82

Tôi gặp sự cố lạ với Rstudio: Nếu một tập lệnh gọi các hàm ggplot2 để hiển thị một cốt truyện, thì việc sử dụng Nguồn để chạy tập lệnh không tạo ra các âm mưu. Nếu tôi chọn toàn bộ tập lệnh với Ctrl+A, sau đó Chạy dòng hiện tại hoặc lựa chọn ( Ctrl+Enter), thì cốt truyện sẽ hiển thị. Tương tự như vậy, nhập các lệnh vẽ biểu đồ vào bảng điều khiển sẽ tạo ra kết quả chính xác.

Ví dụ:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()

Sẽ chỉ tạo ra đầu ra nếu được dán vào bảng điều khiển, không phải nếu có nguồn gốc.

Có những câu hỏi khác về điều này, nhưng cả hai đều không hữu ích:

Tôi làm cách nào để Rstudio hiển thị các âm mưu khi tập lệnh được lấy từ nguồn? Tôi đang sử dụng Rstudio 0.98.1062 và R 3.1.1.

Câu trả lời:


129

Giải pháp là gọi print()đối tượng ggplot một cách rõ ràng :

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)

ggplothàm trả về đối tượng của lớp ggplot; ggplot2 hoạt động bằng cách nạp chồng printhàm để hoạt động khác nhau trên các đối tượng của lớp ggplot - thay vì in chúng ra STDOUT, nó tạo ra biểu đồ.

Mọi thứ đều hoạt động tốt trong chế độ tương tác, vì R giả định rằng hầu hết các lệnh được chạy thông qua print()chức năng. Điều này là để thuận tiện cho chúng tôi và cho phép chúng tôi nhập rnorm(1)và nhận bất kỳ đầu ra hiển thị nào. Khi lệnh Run current select được sử dụng ( Ctrl+Enter), RStudio sẽ hoạt động như thể mỗi dòng đã chọn được nhập trong chế độ tương tác và chạy. Bạn có thể xác minh điều đó bằng cách kiểm tra lịch sử lệnh của mình trong Consolengăn sau khi chạy một vài dòng đã chọn.

Nhưng chế độ tiện lợi này bị bỏ qua khi tệp được đọc bởi source(). Vì chức năng này được thiết kế để chạy các tập lệnh R (có thể dài và tốn kém về mặt tính toán), nên không mong muốn gây ô nhiễm STDOUT với các thông báo có mức độ ưu tiên thấp. Đó là lý do tại sao source()theo mặc định sẽ chỉ xuất ra thông báo lỗi. Nếu bạn muốn bất cứ điều gì khác, bạn phải yêu cầu rõ ràng điều đó.


20

mặc dù đó là một câu hỏi khá cũ. Tôi đã gặp vấn đề tương tự và đã tìm thấy một giải pháp nhanh chóng, nếu bạn muốn sử dụng nút "nguồn" trên hộp chỉnh sửa R studio.

bạn có thể chỉ cần bật "nguồn có tiếng vọng" (Ctrl + Shift + Enter) và âm mưu hiển thị như mong đợi


1
Tuyệt vời, không biết điều đó! Điều đó bổ sung một cách độc đáo cho lời giải thích do @ Mirosław Zalewski đưa ra.
Uwe


1

Tôi tìm thấy câu hỏi này khi tìm kiếm một vấn đề tương tự (các âm mưu không hiển thị trong RStudio). Tôi đang cố gắng khắc phục sự cố một khối ggplot2 phức tạp bằng cách chạy nó theo từng phần, nhưng không thể hiển thị bất kỳ thứ gì trong cửa sổ cốt truyện.

Lý do: tiff()chức năng tôi mở trước đó chưa đóng.

Giải pháp: Tôi đã chạy dev.off()một vài lần cho đến khi tất cả các tiff()chức năng trước đó của tôi hoàn thành, sau đó tôi có thể tạo các ô trong RStudio và xem kết quả trong cửa sổ ô.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.