2010-12-10 9 views
15

W R, poznałem działa błąd w następujący sposób:„Błąd w plot.new(): marginesy postać zbyt duże”

> png("p3_sa_para.png", 4, 2) 
> par(mfrow=c(1,2)) 
> plot(c(1:10), ylab="Beta",xlab="Iteration") 
Error in plot.new() : figure margins too large 
> plot(c(1:10), ylab="Gamma",xlab="Iteration") 
Error in plot.new() : figure margins too large 
> dev.off() 
X11cairo 
     2 

Mam już obraz wielkości małe, aby być 4 na 2, to dlaczego nadal narzeka "margines graficzny za duży"? Jak mogę rozwiązać ten problem z png?

To dziwne, że jeśli zmienię png na pdf, to zadziała. Zastanawiam się też, dlaczego?

Dzięki i pozdrawiam!

+6

zaoszczędzisz sobie wiele kłopotów, jeśli przeczytasz pomoc do funkcji R, których używasz. Jaka "szerokość" i "wysokość" znajdują się na urządzeniu 'png' jest wyraźnie określona w'? Png' –

+5

@gavin Nie zgadzam się, natknąłem się na dokładny problem i pierwszą rzeczą, której szukałem, jest pomoc w spisku, a następnie pomoc dla wartości nominalnej. , a po wszystkie bezużyteczne informacje, poszedłem na png ostatni. Pomoc jest dobra tylko wtedy, gdy masz pojęcie, gdzie powinieneś patrzeć. –

+2

@ Tg logiczną rzeczą do zrobienia w sytuacji, gdy pojawi się błąd, jest rozbicie go. Jeśli działka działa bez 'png()' wiemy, że problem leży w 'png()'. Jeśli usunięcie 'png()' nie robi różnicy to zawęziliśmy zakres problemu. Nie powinno być prawdziwej potrzeby wymachiwania się wokół czytania wielu plików pomocy itp. W takich sytuacjach, * jeśli * przyjmiesz logiczne podejście do rozwiązania problemu, zlokalizujesz problem i odczytasz odpowiedni plik pomocy. Czy nie zgadzasz się z koniecznością przeczytania pomocy lub czegoś innego? –

Odpowiedz

23

Funkcja png() wykorzystuje pikseli nie cala, więc spróbować czegoś podobnego

png("p3_sa_para.png", 640, 480) 

I odpowiedzieć na drugie pytanie, tak, pdf() wykorzystuje cali bo to format grafiki wektorowej nie ma pojęcia pikseli. Funkcje help(png) i help(pdf) są Twoimi przyjaciółmi.

7

Problem może po prostu wynikać z używania określonego IDE. Używałem Rstudio i miałem mnóstwo błędów. Mój dokładny kod działał dobrze na konsoli.

3

Jest to typowy problem dla kreślenia specjalnie kiedy używasz IDE, która ma miejsce na generowanie i pokazując fabuły, myśli, że jest to ogólny problem i to jest logika za nim: gdy powiesz R działki coś, R najpierw spojrzeć na dane, a następnie spojrzeć na obszar, który ma do dyspozycji, tak aby cal wykonał wykreślenie.

PNG() i podobne polecenia:

W twoim przypadku daliście działki do 4 przez 2 obszar obrazu, aby go wykreślić, dzięki czemu można go rozwiązać przez zwiększenie powierzchni w rozmiarze, który można dopasować twoja fabuła. (Jak Dirk Eddelbuettel mentioned)

W przypadku IDE

Jest to o wiele prostsze w większości przypadków po prostu zwiększyć obszar kreślenia przeciągając marginesy, a następnie ponownie uruchomić swój kod (zamknij żadnych par() jeśli masz jakieś otwarte wcześniej i utworzysz nowe) enter image description here