Błąd w plot.new (): zbyt duże marginesy rysunku, wykres punktowy

109

Szukałem rozwiązania w różnych pytaniach i wypróbowałem to, co zostało zasugerowane, ale nie znalazłem rozwiązania, które by to działało.

Za każdym razem, gdy chcę uruchomić ten kod, zawsze mówi:

Błąd w plot.new (): marginesy rysunku są za duże

i nie wiem, jak to naprawić. Oto mój kod:

par(mfcol=c(5,3))
hist(RtBio, main="Histograma de Bio Pappel")
boxplot(RtBio, main="Diagrama de Caja de Bio Pappel")
stem(RtBio)
plot(RtBio, main="Gráfica de Dispersión")

hist(RtAlsea, main="Histograma de Alsea")
boxplot(Alsea, main="Diagrama de caja de Alsea")
stem(RtAlsea)
plot(RtTelev, main="Gráfica de distribución de Alsea")

hist(RtTelev, main="Histograma de Televisa")
boxplot(telev, main="Diagrama de Caja de Televisa")
stem(Telev)
plot(Telev, main="Gráfica de dispersión de Televisa")

hist(RtWalmex, main="Histograma de Walmex")
boxplot(RtWalmex, main="Diagrama de caja de Walmex")
stem(RtWalmex)
plot(RtWalmex, main="Gráfica de dispersión de Walmex")

hist(RtIca, main="Histograma de Ica")
boxplot(RtIca, main="Gráfica de caja de Ica")
stem(RtIca)
plot(RtIca, main="Gráfica de dispersión de Ica")

Co mogę zrobić?

user3530361
źródło
2
Wydaje się, że marginesy są za duże dla Twojego obrazu. Może się tak zdarzyć, jeśli masz małe okno wykresu. W każdym razie twój opis jest niewystarczający, aby zdiagnozować problem. Moglibyśmy użyć odtwarzalnego przykładu lub zrzutu ekranu twojej sesji R z oknem wykresu.
Roman Luštrik
W moim przypadku pomogło to w debugowaniu z niewielkim podzbiorem danych, które miały być wykreślone, jak plot(df[1,1:3], df2[1,1:3])- i wtedy zdałem sobie sprawę, że to, co naprawdę chciałem zrobić, to plot(unlist(df[1,1:3]), unlist(df2[1,1:3]))również zobaczyć: stackoverflow.com/a/17074060/6018688
fabianegli

Odpowiedzi:

164

Za każdym razem, gdy tworzysz wykresy, możesz otrzymać ten błąd - „ Error in plot.new() : figure margins too large”. Aby uniknąć takich błędów, możesz najpierw sprawdzić par("mar")wyjście. Powinieneś dostać:

[1] 5.1 4.1 4.1 2.1

Aby zmienić ten zapis:

par(mar=c(1,1,1,1))

Powinno to naprawić błąd. Lub możesz odpowiednio zmienić wartości.

Mam nadzieję, że to działa dla Ciebie.

Gość R
źródło
2
skąd dokładnie wiesz, które wartości znajdują się na marginesach? I dlaczego mówisz, że powinienem otrzymywać [1] 5,1 4,1 4,1 2,1, a potem mówisz mi, żebym zmienił to na wszystkie 1?
Herman Toothrot
2
Napotkałem ten sam problem z RStudio, a kiedy wszedłem par("mar"), odzyskałem ten sam dokładny ciąg, [1] 5.1 4.1 4.1 2.1więc wszedłem, par(mar=c(1,1,1,1))ale potem plot () nic nie wykreślił, więc musiałem zamknąć zarówno RStudio, jak i terminal. Po ponownym otwarciu RStudio wszystko wróciło do normy.
noobninja
2
Napotykam ten sam problem w przecenie R w RStudio. Jednak ani rozwiązanie Guest R, ani restart @noobninja nie naprawiły tego dla mnie.
SC.
Ten błąd pojawia się z powodu problemu z układem interfejsu RStudio, a nie z powodu błędu w kodzie. Druga odpowiedź naprawiła to za mnie.
Nicole Sullivan
1
@Nicole Sullivan Otrzymałem ten błąd również bez RStudio. Zrobiłem jak opisano i działa. Dzięki @djhurio!
Gwang-Jin Kim
106

Może się tak zdarzyć, gdy panel wykresu w RStudio jest zbyt mały w stosunku do marginesów wykresu, który próbujesz utworzyć. Spróbuj go rozwinąć, a następnie ponownie uruchom kod.

Interfejs użytkownika RStudio powoduje błąd, gdy panel wykresu jest zbyt mały, aby wyświetlić wykres: RStudio ze zbyt małym panelem wykresu

Samo rozwinięcie panelu wykresu naprawia błąd i wyświetla wykres: RStudio z rozwiniętym panelem wykresu

Csislander
źródło
5
To rzeczywiście działa ... po prostu powiększenie obszaru działki pomaga
Jiapeng Zhang
3
Tak, zmiana rozmiaru paneli w RStudio działa. Jest to błąd RStudio spowodowany zminimalizowaniem prawej strony interfejsu użytkownika przez zamknięcie panelu wykresu.
Nicole Sullivan
to faktycznie działa w większości przypadków. istnieje niewielka mniejszość przypadków, w których marginesy są rzeczywiście tak małe, że nawet jeśli zmaksymalizujesz to okno, nie masz rozwiązania tego problemu
Dimitrios Zacharatos
27

Wywołanie, dev.off()aby RStudio otworzyło nowe urządzenie graficzne z domyślnymi ustawieniami, zadziałało dla mnie. HTH.

PGreen
źródło
1
Czy mógłbyś wyjaśnić, jak to zrobić?
Swift Arrow
20

Jeśli otrzymasz ten komunikat w RStudio, kliknij ikonę „miotły” „Wyczyść wszystkie wykresy” na karcie Wykresy i spróbuj ponownie wykonać wykres ().

Ponadto Wykonaj polecenie

graphics.off()
Prakhar Agarwal
źródło
11
napisz to trzy linijkigraphics.off() par("mar") par(mar=c(1,1,1,1))
Hiren
6

Po prostu wyczyść wykresy i spróbuj ponownie wykonać kod ... U mnie zadziałało

Shravya Mutyapu
źródło
1

Tylko na marginesie. Czasami ten błąd „marginesu” występuje, ponieważ chcesz zapisać figurę o wysokiej rozdzielczości (np. dpi = 300Lub res = 300) w formacie R.
W tym przypadku musisz określić szerokość i wysokość . (Przy okazji, ggsave()nie wymaga tego.)

To powoduje, że ten margines błędu:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()

To naprawi błąd marginesu:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     width = 5, height = 4, units = 'in',                       # fixed
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()
Guannan Shen
źródło