Lỗi trong plot.new (): lề con số quá lớn trong R


111

Tôi mới làm quen với R nhưng tôi đã thực hiện nhiều biểu đồ tương quan với các tập dữ liệu nhỏ hơn. Tuy nhiên, khi tôi cố gắng vẽ một tập dữ liệu lớn (2gb +), tôi có thể tạo ra cốt truyện tốt, nhưng chú thích không hiển thị. Có lời khuyên nào không? hoặc các lựa chọn thay thế?

library(gplots)
r.cor <- cor(r)
layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
par(oma=c(5,7,1,1))
cx <- rev(colorpanel(25,"yellow","black","blue"))
leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]], 
    cex.axis=0.9,las=2)
axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]],
     cex.axis=0.9,las=2)
image(as.matrix(leg),col=cx,axes=T)     

Lỗi trong plot.new(): lề con số quá lớn

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)

1
Bạn nên cung cấp cho chúng tôi một ví dụ có thể tái tạo chứng minh những căn bệnh bạn đang gặp phải. stackoverflow.com/questions/12765668/…
Roman Luštrik

Tôi đã thử tất cả những điều trên, và không có gì hiệu quả. Tuy nhiên, thỉnh thoảng (ít nhất là đối với một người mới như tôi), dữ liệu trong ma trận hoặc data.frame có thể bị ép buộc thành một số loại mà bạn không biết. Trong trường hợp đó, hãy sử dụng "as.numeric" trước dữ liệu của bạn để đảm bảo đây không phải là vấn đề.
pApaAPPApapapa 14/02/17

Câu trả lời:


85

Tôi nghi ngờ vấn đề là vùng hình nhỏ 2 được tạo bởi layout()cuộc gọi của bạn không đủ lớn để chỉ chứa các lề mặc định, chưa nói đến một âm mưu.

Trước khi dòng gây ra sự cố, hãy thử:

par(mar = rep(2, 4))

sau đó vẽ hình thứ hai

image(as.matrix(leg),col=cx,axes=T)

Bạn sẽ cần phải thử với kích thước của lề trên par() gọi mà tôi hiển thị để làm đúng. Bạn cũng có thể cần phải tăng kích thước của thiết bị thực mà bạn đang vẽ.

Mẹo cuối cùng, hãy lưu các giá trị par()mặc định trước khi thay đổi chúng, vì vậy hãy thay đổi par()cuộc gọi hiện tại của bạn thành:

op <- par(oma=c(5,7,1,1))

sau đó khi kết thúc âm mưu làm

par(op)

Ah, cảm ơn bạn đã làm rõ. Thay vào đó, tôi đang thao tác bố cục (ma trận ()). Đánh giá cao sự giúp đỡ!
Steve Hwang

2
đây là gợi ý phù hợp cho tôi. Tôi đã phải tăng kích thước hình ảnh, hoặc giảm độ phân giải trongpng(filename="myfile.png", res=150, width = 1000, height = 1000)
vanao veneri

146

Lỗi này có thể xảy ra trong Rstudio đơn giản là vì ngăn "Plots" của bạn vừa đủ quá nhỏ. Hãy thử phóng to "Tệp, Lô đất, Gói, Trợ giúp, Trình xem" của bạn và xem nó có hữu ích không!


8
Điều này đã giải quyết vấn đề của tôi! Tôi đã mở rộng cửa sổ "Môi trường", thu nhỏ cửa sổ "Lô đất", v.v. Tôi chỉ cần mở rộng cửa sổ. Cảm ơn bạn!
Rock Lee

Đồng ý, điều này cũng ảnh hưởng đến RStudio của tôi và chỉ cần mở rộng cửa sổ đã giúp ích.
Kingz

Đôi khi tôi vô tình kết thúc với một số ngăn do sử dụng par (). par(mfrow=c(1,1))có thể đặt lại bạn vào một ngăn.
Matt

1
Đó là một lỗi rất kỳ lạ đối với tôi vì tôi mới làm quen với R. Chưa từng gặp bất kỳ vấn đề nào trước đây với bất kỳ ngôn ngữ / IDE nào khác trong đó bố cục IDE sẽ ảnh hưởng đến mã của tôi !!
Adarsha

Tuyệt vời, điều này cũng làm việc cho tôi. Tuy nhiên, một lỗi kỳ lạ như vậy!
Mohammad

70

Nếu bạn nhận được thông báo này trong RStudio, hãy nhấp vào hình 'cán chổi' "Xóa tất cả các lô" trong tab Plots và thử lại plot () có thể hoạt động.

nhập mô tả hình ảnh ở đây


1
Đây là câu trả lời tốt nhất.
NewbieDave

15
graphics.off()
rawr

Tôi thích câu trả lời này
O.rka

Đây thực sự là câu trả lời tốt nhất. Cảm ơn.
merve bıçakçı

24

Điều này đôi khi xảy ra trong RStudio. Để giải quyết vấn đề này, bạn có thể thử vẽ một cửa sổ bên ngoài (chỉ dành cho Windows):

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 

1
Đây là một câu trả lời tốt hơn là mua một màn hình lớn hơn. Ngoài ra còn có một lệnh x11 () hoạt động trên Linux.
Ron Jensen - Tất cả chúng ta đều là Monica

1
Câu trả lời thích hợp nhất từ ​​trước đến nay. Cảm ơn.
TeeKea

bất kỳ tương đương cho MacOSX?
TeYaP

Tôi đã thử giải pháp này khi gặp Error in plot.new() : figure margins too largelỗi trong RStudio khi vẽ OLS-CUSUM và nó hoạt động một cách kỳ diệu. Rất cảm ơn jobligado.
Erdogan CEVHER

19

Tôi gặp lỗi này trong R Studio và đã được khắc phục đơn giản bằng cách làm cho thanh bên lớn hơn bằng cách nhấp và kéo cạnh của nó từ phải sang trái.


2
đây là người chiến thắng. Tại sao điều này thậm chí là một điều?
colin

2
Không có giải pháp nào khác phù hợp với tôi ngoại trừ giải pháp này.
zsad512,

1
Không biết làm thế nào hoặc tại sao, nhưng đây cũng là giải pháp duy nhất hiệu quả với tôi.
TheSciGuy

10

Kiểm tra xem đối tượng của bạn là một danh sách hay một vectơ. Để làm điều này, hãy nhập is.list(yourobject). Nếu điều này là đúng, hãy thử đổi tên nó x<-unlist(yourobject). Điều này sẽ biến nó thành một vector mà bạn có thể vẽ.


Điều này đã làm điều đó cho tôi (sử dụng png()/ dev.off()trong Rstudio).
knowah

5

nhập mô tả hình ảnh ở đây

Chỉ cần thu phóng khu vực này nếu bạn sử dụng RStudio.


3

Tôi đã tìm thấy lỗi này ngày hôm nay. Ban đầu, tôi đang cố gắng xuất nó thành một .jpegtệp có chiều rộng và chiều cao thấp.

jpeg("method1_test.jpg", width=900, height=900, res=40)

Sau đó, tôi đã tăng chiều rộng và chiều cao thành:

jpeg("method1_test.jpg", width=1900, height=1900, res=40)

Lỗi không có ở đó. :)

Bạn cũng có thể chơi với độ phân giải, nếu độ phân giải cao, bạn cần thêm chiều rộng và chiều cao.



2

Tôi đã vật lộn với lỗi này trong nhiều tuần (sử dụng RStudio). Tôi đã cố gắng di chuyển cửa sổ âm mưu lớn hơn và nhỏ hơn, nhưng điều đó không hiệu quả. Khi tôi di chuyển (kéo) ứng dụng sang màn hình lớn hơn của mình, sự cố đã biến mất! Tôi đã choáng váng ... quá nhiều giờ lãng phí ... Tôi biết mã của mình là đúng ...


0

Khung RStudio Plots đang giới hạn chiều rộng và chiều cao của ô. Tuy nhiên nếu bạn thực hiện âm mưu của mình từ Rmarkdown mã , nó sẽ hoạt động mà không có giới hạn về trường canvas vì vùng vẽ được thiết lập theo kích thước giấy.

Ví dụ:

    ```{r}
#inside of code chunk in Rmarkdown
        grid <- par(mfrow=c(4, 5))
        plot(faithful, main="Faithful eruptions")
        plot(large.islands, main="Islands", ylab="Area")
        ...
        par(grid)
    ```

0

Tôi tìm thấy cùng một lỗi ngày hôm nay. Tôi đã thử nút "Xóa tất cả các lô", nhưng nó vẫn cho tôi một lỗi tương tự. Sau đó, thủ thuật này đã làm việc cho tôi, Cố gắng tăng diện tích cốt truyện bằng cách kéo. Nó sẽ giúp bạn chắc chắn.


0

Tôi vừa sử dụng Xóa tất cả các âm mưu sau đó lại đưa ra lệnh âm mưu và nó rất hữu ích


1
Chào mừng đến với SO. Xin bạn có thể giải thích tại sao đây là câu trả lời.
Mike Poole

0

Nếu lợi nhuận thấp, thì tốt hơn hết là nên bắt đầu với thiết bị vẽ sơ đồ mới:

dev.new()
# plot()
# save your plot
dev.off()

Bạn sẽ không bao giờ bị lỗi ký quỹ, trừ khi bạn vẽ một thứ gì đó lớn mà không thể đáp ứng được.

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.