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"
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
Czy to właśnie 'ggplot' powoduje problem? Czy potrafisz wykonać dzianinę bazową? Czy może nie masz prawa do zapisu w folderze? – Axeman
@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