Rysuję prostą regresję liniową za pomocą R. Chciałbym zapisać ten obraz jako PNG lub JPEG, czy można to zrobić automatycznie? (przez kod)
Istnieją dwa różne pytania: Po pierwsze, już patrzę na fabułę na monitorze i chciałbym ją zapisać bez zmian. Po drugie, nie wygenerowałem jeszcze wykresu, ale chciałbym zapisać go bezpośrednio na dysku podczas wykonywania mojego kodu wydruku.
Odpowiedzi:
Istnieją dwa ściśle powiązane pytania i odpowiedź na każde z nich.
1. W przyszłości w moim skrypcie zostanie wygenerowany obraz. Jak zapisać go na dysku?
Aby zapisać działkę, musisz wykonać następujące czynności:
png()
,bmp()
,pdf()
lub podobnydev.off()
Przykładowy kod do zapisania wykresu do
png
pliku:Jest to opisane w (kombinowanego) stronie pomocy graficznych formatów
?png
,?bmp
,?jpeg
i?tiff
, jak również w oddzielnej stronie pomocy?pdf
.Należy jednak pamiętać, że obraz na dysku może wyglądać inaczej niż ta sama fabuła narysowana bezpośrednio na ekranie, na przykład po zmianie rozmiaru okna ekranowego.
Pamiętaj, że jeśli twoja fabuła została stworzona przez jednego z nich
lattice
lubggplot2
musisz jawnie wydrukować fabułę. Zobacz tę odpowiedź, która wyjaśnia to bardziej szczegółowo, a także linki do R FAQ: qplot ggplota nie wykonuje się podczas pozyskiwania2. Obecnie patrzę na fabułę na ekranie i chcę skopiować ją „jak jest” na dysk.
Powinno to idealnie skopiować obraz, z uwzględnieniem wszelkich zmian rozmiaru dokonanych w interaktywnym oknie. Możesz, podobnie jak w pierwszej części tej odpowiedzi, zastąpić
pdf
innymi typami plików, takimi jakpng
.źródło
getwd()
dev.print
. Są dwa ściśle powiązane pytania, które moim zdaniem wymagają różnych odpowiedzi. Drugie podpytanie to w zasadzie „Jak zapisać obraz, który już narysowałem na ekranie?”. Przepraszam, jeśli moja edycja nie jest zbyt dobra, możesz poprawić swoje zmiany.m3=garchFit(~arma(3,0)+garch(1,1))
iplot(m3)
.Jeśli chcesz nadal widzieć wykres w R, inną opcją jest użycie
dev.copy
:Jeśli dojdziesz do zagracenia zbyt wielu okien wykresu w R, użyj,
graphics.off()
aby zamknąć wszystkie okna wykresu.źródło
dev.print
jest lepszy, ponieważ dokładnie kopiuje obraz z ekranu.dev.copy
wymusza domyślnie kwadratowy obraz. Jest to frustrujące, jeśli wszystko skonfigurujesz ładnie interaktywniedev.print()
parametrów szerokości i wysokości do definiowania wymiarów. np.dev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
Jeśli korzystasz
ggplot2
z preferowanego sposobu oszczędzania, należy użyćggsave
. Najpierw musisz spiskować, po utworzeniu fabuły wywołujeszggsave
:Format obrazu zależy od rozszerzenia wybranego dla nazwy pliku. Dodatkowe parametry mogą być przekazywane
ggsave
, zwłaszczawidth
,height
idpi
.źródło
dev
, to rozwiązanie działało na maszynie wirtualnej bez urządzeń graficznych.Lubię to
albo to
albo to
I prawdopodobnie także inni. Wszystkie są wymienione razem na stronach pomocy.
źródło
W przypadku pierwszego pytania uważam, że
dev.print
najlepiej jest pracować interaktywnie. Po pierwsze, skonfiguruj swój wykres wizualnie, a gdy będziesz zadowolony z tego, co widzisz, możesz poprosić R o zapisanie bieżącego wykresu na dyskuMożesz zastąpić
pdf
innymi formatami, takimi jakpng
.Spowoduje to skopiowanie obrazu dokładnie tak, jak widzisz go na ekranie. Problem
dev.copy
polega na tym, że obraz jest często inny i nie pamięta rozmiaru okna i współczynnika proporcji - domyślnie wymusza kwadratowy wykres.W przypadku drugiego pytania (jak już odpowiedzieli inni) musisz skierować dane wyjściowe na dysk przed wykonaniem poleceń drukowania
źródło
Jeśli używasz R Studio http://rstudio.org/, istnieje specjalne menu, aby zapisać twoją fabułę w dowolnym formacie i dowolnej rozdzielczości.
źródło
Jeśli otworzysz urządzenie za pomocą
png()
,bmp()
,pdf()
itd. Jak sugeruje Andrie (najlepsza odpowiedź), okna z działek nie pojawiają się otwarte, tylko * .png, * bmp lub * .pdf zostanie utworzony. Jest to wygodne w przypadku masowych obliczeń, ponieważ R może obsługiwać tylko ograniczoną liczbę okien graficznych.Jeśli jednak chcesz zobaczyć wykresy i zapisać je, zadzwoń
savePlot(filename, type)
po narysowaniu wykresów i aktywnym oknie zawierającym je.źródło
źródło
Aby dodać do tych odpowiedzi, jeśli masz skrypt R zawierający wywołania, które generują wykresy do ekranu (urządzenie macierzyste), wszystkie one można zapisać do pliku pdf (urządzenie domyślne dla powłoki nieinteraktywnej) "Rplots.pdf „(nazwa domyślna) poprzez przekierowanie skryptu do R z terminala (zakładając, że korzystasz z systemu Linux lub OS X), np .:
W razie potrzeby można to przekonwertować do formatu jpg / png
źródło
W niektórych przypadkach chce się zarówno zapisać, jak i wydrukować podstawowy wykres r. Spędziłem trochę czasu i wymyśliłem tę funkcję narzędzia:
Należy pamiętać, że należy użyć
quote
, w przeciwnym razieplot(x)
wywołanie zostanie uruchomione w środowisku globalnym iNULL
zostanie przekazane dobasesave()
.źródło
źródło