2015-12-07 20 views
6

Próbowałem (na próżno), aby utworzyć wykres z ggplot w Rmarkdown. Kod jest następujący:Błąd rmarkdown z ggplot i png

```{r,echo=FALSE} 
#fig.width=12,fig.height=6 
panel2$PlotSize<-round(log(panel2$BSFA0200),0)- min(round(log(panel2$BSFA0200),0))+1# set size of dots 
panel2$PlotSize[panel2$PlotSize==-Inf]<-NA 
panel2$PlotColour<-ifelse(panel2$PlotSize<7,1,panel2$PlotSize) 
panel2$PlotSize<-as.factor(panel2$PlotSize) 
panel2$PlotColour<-as.factor(panel2$PlotColour) 

g1<-ggplot(data=panel2,aes(x=NFR,y=PROF7*100,size=PlotSize,colour=PlotSize))+ geom_point() 

g1 

``` 

Z dzianiny działa to wiadomość w porządku, jednak gdy są wykonywane w pliku RMD (jako html lub pdf) I zawsze ten błąd

processing file: 1Profti_model.Rmd 
    |..                | 4% 
    ordinary text without R code 

    |.....               | 8% 
label: setup (with options) 
List of 1 
$ include: logi FALSE 

    |........               | 12% 
    ordinary text without R code 

    |..........              | 15% 
label: unnamed-chunk-1 (with options) 
List of 3 
$ echo : logi FALSE 
$ warning: logi FALSE 
$ message: logi FALSE 


Attaching package: 'dplyr' 

The following objects are masked from 'package:stats': 

    filter, lag 

The following objects are masked from 'package:base': 

    intersect, setdiff, setequal, union 

Loading required package: zoo 

Attaching package: 'zoo' 

The following objects are masked from 'package:base': 

    as.Date, as.Date.numeric 

    |............              | 19% 
    inline R code fragments 

    |...............             | 23% 
label: unnamed-chunk-2 (with options) 
List of 1 
$ echo: logi FALSE 

    |..................            | 27% 
    ordinary text without R code 

    |....................            | 31% 
label: unnamed-chunk-3 (with options) 
List of 1 
$ echo: logi FALSE 

Quitting from lines 98-109 (1Profti_model.Rmd) 
Error in png(..., res = dpi, units = "in") : unable to start png() device 
Calls: <Anonymous> ... in_dir -> plot2dev -> do.call -> <Anonymous> -> png 
In addition: Warning messages: 
1: Removed 55 rows containing missing values (geom_point). 
2: In png(..., res = dpi, units = "in") : 
    unable to open file '1Profti_model_files/figure-html/unnamed-chunk-3-1.png' for writing 
3: In png(..., res = dpi, units = "in") : opening device failed 

Execution halted 

ja również próbowałem obejść problem zapisując wykres w png i wczytując go jako obrazek. Również brak wyników (patrz Error with loading png in Rmd file)

Dzięki za pomoc

UPDATE:

zgodnie z sugestiami z niektórych z was dodałem inną nazwę klocek i powielane kod z Davit na przetwarzanie moich danych (patrz zaktualizowany kod). Niestety błąd nadal istnieje. Co ciekawe, knitr nie może napisać png, ale może napisać csv w tym samym folderze, w którym jest kod (przetestowałem go).

Wreszcie, przetestowałem uruchamianie tego samego kodu na moim dysku C i (niespodzianka!) To działa. Jednak dla mnie nie jest to zbyt efektywne, ponieważ nie chcę być zależny od konkretnej maszyny i muszę dzielić się tą pracą z innymi (więc napęd sieciowy jest koniecznością). Co więcej, cały inny pakiet/kod działa dobrze na dysku sieciowym, tylko ten png() wydaje się być problemem.

Z góry dziękuję za pomoc! --- tytuł: Nowy dokument autor: Me wyjściowa: html_document ---

```{r prova,echo=FALSE, results='asis', message = FALSE, error = FALSE, warning= FALSE} 
#.libPaths("D:/xxxx/packages") 
require(ggplot2) 

panel2 <- data.frame(BSFA0200 = rnorm(100), 
         NFR = rnorm(100), 
         PROF7 = rnorm(100)) 

panel2$PlotSize<-round(log(panel2$BSFA0200),0)- min(round(log(panel2$BSFA0200),0))+1# set size of dots 
panel2$PlotSize[panel2$PlotSize==-Inf]<-NA 
panel2$PlotColour<-ifelse(panel2$PlotSize<7,2,panel2$PlotSize) 

write.csv(panel2[1:100,c('BSFA0200',"NFR","PROF7")],file="test.csv") 

g1 <- ggplot(data = panel2, 
      aes(x = NFR, 
       y = PROF7 * 100, 
       size = factor(PlotSize), 
       colour = factor(PlotSize) 
       )) 

g1 + geom_point() 

``` 

wyjście błędu:

Loading required package: ggplot2 

Quitting from lines 9-32 (test.Rmd) 
Error in png(..., res = dpi, units = "in") : unable to start png() device 
Calls: <Anonymous> ... in_dir -> plot2dev -> do.call -> <Anonymous> -> png 
In addition: Warning messages: 
1: Removed 35 rows containing missing values (geom_point). 
2: In png(..., res = dpi, units = "in") : 
    unable to open file 'test_files/figure-html/prova-1.png' for writing 
3: In png(..., res = dpi, units = "in") : opening device failed 
Execution halted 

Moja wersja knitr 1.11 (to powinno być ostatni) i wersja R to 3.2.2

> R.Version() 
$platform 
[1] "i386-w64-mingw32" 

$arch 
[1] "i386" 

$os 
[1] "mingw32" 

$system 
[1] "i386, mingw32" 

$status 
[1] "" 

$major 
[1] "3" 

$minor 
[1] "2.2" 

$year 
[1] "2015" 

$month 
[1] "08" 

$day 
[1] "14" 

$`svn rev` 
[1] "69053" 

$language 
[1] "R" 

$version.string 
[1] "R version 3.2.2 (2015-08-14)" 

$nickname 
[1] "Fire Safety" 
+1

w zakładce rmarkdown po prawej znajdują się dwie mniejsze zakładki, "Wyjście" i "Problemy". co mówi w przypadku problemów? jakie masz uprawnienia do plików? – rawr

+1

Czy to właśnie 'ggplot' powoduje problem? Czy potrafisz wykonać dzianinę bazową? Czy może nie masz prawa do zapisu w folderze? – Axeman

+0

@rawr Komunikat w Issue is: Błąd w png (..., res = dpi, units = "in"): nie można uruchomić urządzenia png() Połączenia: ... in_dir -> plot2dev -> do.call -> -> png. Ponadto: Komunikaty ostrzegawcze: 1: In png (..., res = dpi, units = "in"): nie można otworzyć pliku "XXXX/figure-html/unnamed-chunk-3-1.png" do zapisu. 2: In png (..., res = dpi, units = "in"): Urządzenie otwierające się nie powiodło – Dani

Odpowiedz

1

Miałem tego sam raz wydać. Poniższy kod działa. Albo miałeś zły nagłówek, albo nie dzwoniłeś do paczek: ciężko powiedzieć, ponieważ nie dostarczyłeś tych informacji. Prosimy również o przesłanie przykładowych danych następnym razem.

Oto pełny kod, który działa (przynajmniej dla mnie). Jeśli nie działa na twoim komputerze, opublikuj swoje dane i pełny skrypt Rmd, a postaram się pomóc.

--- 
title: New Document 
author: Me 
output: 
    html_document 
--- 

```{r,echo=FALSE, results='asis', message = FALSE, error = FALSE, warning= FALSE} 
require(ggplot2) 

panel2 <- data.frame(BSFA0200 = rnorm(100), 
         NFR = rnorm(100), 
         PROF7 = rnorm(100), 
         PlotSize = factor(rep(1:10, 10)), 
         PlotColour = factor(1:100)) 

g1 <- ggplot(data = panel2, 
      aes(x = NFR, 
       y = PROF7 * 100, 
       size = PlotSize, 
       colour = PlotSize)) 

g1 + geom_point() 
``` 

enter image description here

1

dostałem tę wiadomość, jak również. Kłopot polegał na tym, że ścieżka do pliku była zbyt długa. Miałem plik R Markdown w zbyt wielu podfolderach, a nazwa mojego pliku R R jest zbyt długa. Po zmniejszeniu długości ścieżki pliku problem został rozwiązany. Mam nadzieję, że to działa dla ciebie.