Fehlerhafter pdf Export mit und ohne Cairo

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von Werekorden »

Hallo,


Ich poste hier mal ein Problem, dass teilweise schon unter viewtopic.php?f=18&t=1038 besprochen wurde.


Ich habe mittlerweile mein RStudio und R selbst neuinstalliert da sich kein Paket updaten lies. Jetzt nutze ich RStudio 1.1.463 und R 3.5.3. mit den jeweils neuesten VErsionen der Pakete.

Ich benötige folgende Pakete um meine logariythmische Regressions-Plot durchzuführen.
library(Rcpp)
library(rlang)
library(gcookbook)
library(ggplot2)
library(hrbrthemes)
library(magick)
library(plyr)
library(dplyr)
library(MASS)
library(scales)
library(Cairo)
Sobald ich versuche mit RStudio den Plot als PDF zu exportieren klappt es nicht richtig. MIt Cairo Unterstützung habe ich zwar alle Texte, aber in falschen Schriftarten und die Formel ist komplett zerhackt und nicht lesbar. Ohne Cairo bekomme ich gar keinen Text aber dafür ist die Formel in perfekter Form.


Wenn ich es als EPS-Datei exportiere sind die Überschriften da in Helvetica. Allerdings fehlt plötzlich der Name und die E-Mail in der Grafik.

SVG klappt auch nicht da kommen dann folgende Fehlermeldungen:
Fontconfig warning: line 5: unknown element "its:rules"
Fontconfig warning: line 6: unknown element "its:translateRule"
Fontconfig error: line 6: invalid attribute 'translate'
Fontconfig error: line 6: invalid attribute 'selector'
Fontconfig error: line 7: invalid attribute 'xmlns:its'
Fontconfig error: line 7: invalid attribute 'version'
Fontconfig warning: line 9: unknown element "description"
Fontconfig warning: "/Users/andreas/Library/R/3.5/library/magick/etc/fonts/conf.d/10-hinting-slight.conf", line 4: unknown element "its:rules"
PNG Datei geht aber in mieser Quali.


Mit ggsave() klappt es auch nicht. Folgender Fehler tritt auf:
Fehler in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, : unzulässiger Zeichensatztyp
Zusätzlich: Es gab 50 oder mehr Warnungen (Anzeige der ersten 50 mit warnings())
>
Hat jemand eine Idee :?:
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von EDi »

Hat jemand eine Idee :?:
Zeig uns doch mal ein reproduzierbares Beispiel um unsere Kreativität zu erhöhen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von Werekorden »

Hier der Code:

Code: Alles auswählen

  library(Rcpp)
  library(rlang)
  library(gcookbook)
  library(ggplot2)
  library(hrbrthemes)
  library(magick)
  library(plyr)
  library(dplyr)
  library(MASS)
  library(scales)
  library(Cairo)
  library(extrafont)
  #extrafont::loadfonts()
  #font_import()
  #loadfonts()
  #Dateneingabe
  Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471)
  CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)
  data.frame(Konz_x, CT_Wert_y)
  p <- data.frame(Konz_x, CT_Wert_y)
  p
  
  #Model-Erstellung für Formeldarstellung in plot 
  model <- lm(CT_Wert_y ~ log(Konz_x))
  summary(model)
  model
  eqn <- as.character(as.expression(substitute(italic(y)==a+b*italic(x)*"," ~~ italic(r)^2~ "=" ~ r2,
         list(a = format(coef(model) [1], digits = 4), b = format(coef(model)[2], digits = 4), r2 = format(summary(model)$r.squared, digits = 2)
          ))))
  eqn
  parse(text = eqn)
  
 #Plot-Erstellung
  point <- ggplot(p, aes(x=Konz_x, y=CT_Wert_y)) 
  point + geom_point() + annotation_logticks(sides = "b")  + scale_x_log10() + stat_smooth(method=lm, se=0.99, colour="purple") +
    labs(title = 'Linearity Plot of FTD-Kit Data',
         subtitle = 'Linearity Plot to find Range of Linearity with Coefficient of Determination',
         x = 'Copies/ml patient sample',
         y = 'Ct-value',
         caption = 'Name / Name@Name.de') + 
    annotate("text", label = eqn, parse = TRUE, x=2600 , y=20.5) +
    theme_ipsum() + 
    theme(plot.title = element_text(color = "#3a4fa7ff"), plot.caption = element_text(color = "#3a4fa7ff", face = 'bold'))
  logo <-image_read("/Users/Andreas/Pictures/black-sailing-boat.svg")
  grid::grid.raster(logo, x = 0.87, y = 0.88, just = c('left', 'bottom'), width = unit(0.8, 'inches'))
So sieht der PLot in RStudio aus. Bildschirmfoto:
Bild

Dann kommt das PDF mit Cairo:
Rplot01_with-cairo.pdf
Rplot01 Export aus RStudio mit Cairo
(31.34 KiB) 67-mal heruntergeladen
Nun folgt das PDF ohne Cairo:
Rplot01_no-cairo.pdf
Rplot01 Export aus RStudio ohne Cairo
(7.2 KiB) 37-mal heruntergeladen
Hier der PNG Export mit RStudio:
Bild

So ich hoffe das langt. Der Plot wurde mit dem Code, wie von mir gepostet erstellt, ich habe nur die Beschreibungen ein wenig geändert.
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von Werekorden »

Hi,

Konnte ich bei irgendjemand die Kreativität steigern? Habt ihr vielleicht irgendeine Idee?

VG
Andreas
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von EDi »

file_show.pdf
(32.68 KiB) 43-mal heruntergeladen

Code: Alles auswählen

ggsave('test.pdf', p, device = cairo_pdf)
klappt bei mir problemlos.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von Werekorden »

Hi,

Bei mir kommt folgende Fehlermeldung wenn ich ggsave nutze:
Saving 10.9 x 7.33 in image
Fehler in UseMethod("grid.draw") : nicht anwendbare Methode für 'grid.draw' auf Objekt der Klasse "data.frame" angewendet
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von EDi »

Werekorden hat geschrieben: Do Apr 11, 2019 6:52 pm Hi,

Bei mir kommt folgende Fehlermeldung wenn ich ggsave nutze:
Saving 10.9 x 7.33 in image
Fehler in UseMethod("grid.draw") : nicht anwendbare Methode für 'grid.draw' auf Objekt der Klasse "data.frame" angewendet
Bitte reproduzierbaren liefern,sonst glaube ich nicht dass du ggsave ordentlich verwendet hast (u.nd meine Muse hier einen Beitrag zu schreiben sink sehr stark).

Bei mir funktioniert das hier:

Code: Alles auswählen

library(ggplot2)
library(hrbrthemes)
library(scales)
library(Cairo)
library(extrafont)
extrafont::loadfonts()
#font_import()
#loadfonts()
#Dateneingabe
Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471)
CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)
data.frame(Konz_x, CT_Wert_y)
p <- data.frame(Konz_x, CT_Wert_y)
p

#Model-Erstellung für Formeldarstellung in plot 
model <- lm(CT_Wert_y ~ log(Konz_x))
summary(model)
model
eqn <- as.character(as.expression(substitute(italic(y)==a+b*italic(x)*"," ~~ italic(r)^2~ "=" ~ r2,
                                             list(a = format(coef(model) [1], digits = 4), b = format(coef(model)[2], digits = 4), r2 = format(summary(model)$r.squared, digits = 2)
                                             ))))
eqn
parse(text = eqn)

#Plot-Erstellung
point <- ggplot(p, aes(x=Konz_x, y=CT_Wert_y)) 
p <- point + geom_point() + annotation_logticks(sides = "b")  + scale_x_log10() + stat_smooth(method=lm, se=0.99, colour="purple") +
  labs(title = 'Linearity Plot of FTD-Kit Data',
       subtitle = 'Linearity Plot to find Range of Linearity with Coefficient of Determination',
       x = 'Copies/ml patient sample',
       y = 'Ct-value',
       caption = 'Name / Name@Name.de') + 
  annotate("text", label = eqn, parse = TRUE, x=2600 , y=20.5) +
  theme_ipsum() +
  theme(plot.title = element_text(color = "#3a4fa7ff"), plot.caption = element_text(color = "#3a4fa7ff", face = 'bold'))

ggsave('test.pdf', p, device = cairo_pdf)

Und ich vermute du willst einen data.frame mit ggsave speichern (was keinen Sinne ergibt, weil ggsave nur Objekt der Klasse ggplot verarbeiten kann).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von Werekorden »

Dein Code funktioniert natürlich, denn es fehlt ja der Teil meines Codes, der die Fehlermledung verursacht.

Code: Alles auswählen

logo <-image_read("/Users/Andreas/Pictures/black-sailing-boat.svg")
grid::grid.raster(logo, x = 0.87, y = 0.88, just = c('left', 'bottom'), width = unit(0.8, 'inches'))
Siehe meinen Code oben. Die grid.raster Funktion scheint ein Problem zu machen. Ohne Logo geht es bei mir auch.

So sagt der Fehler auch:
Fehler in UseMethod("grid.draw") : nicht anwendbare Methode für 'grid.draw' auf Objekt der Klasse "data.frame" angewendet


Hier mein Rstudio Fenster:
Bildschirmfoto 2019-04-11 um 20.17.18.png

und meine Session INfo:

Code: Alles auswählen

R version 3.5.3 (2019-03-11)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.4

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] extrafont_0.17   Cairo_1.5-10     scales_1.0.0     MASS_7.3-51.4    dplyr_0.8.0.1    plyr_1.8.4       magick_2.0       hrbrthemes_0.6.0 ggplot2_3.1.1   
[10] gcookbook_2.0    rlang_0.3.4      Rcpp_1.0.1      

loaded via a namespace (and not attached):
 [1] pillar_1.3.1     compiler_3.5.3   tools_3.5.3      digest_0.6.18    evaluate_0.13    tibble_2.1.1     gtable_0.3.0     pkgconfig_2.0.2  rstudioapi_0.10 
[10] yaml_2.2.0       xfun_0.6         Rttf2pt1_1.3.7   withr_2.1.2      knitr_1.22       gdtools_0.1.8    grid_3.5.3       tidyselect_0.2.5 glue_1.3.1      
[19] R6_2.4.0         rmarkdown_1.12   purrr_0.3.2      extrafontdb_1.0  magrittr_1.5     htmltools_0.3.6  assertthat_0.2.1 colorspace_1.4-1 labeling_0.3    
[28] lazyeval_0.2.2   munsell_0.5.0    crayon_1.3.4    

Es wäre sehr hilfreich, wenn ihr bestimmte Infos braucht dies genauer zu erwähnen, ich dachte Bilder, Code und Fehlermeldungen langen. Gerne lese ich mir auch eine FAQ diesbezüglich durch.

Trotzdem schonmal danke für die Hilfe.

VG
Andreas
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von EDi »

Code: Alles auswählen

logo <-image_read("/Users/Andreas/Pictures/black-sailing-boat.svg")
Dieser Pfad existiert bei mir nicht.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Fehlerhafter pdf Export mit und ohne Cairo

Beitrag von EDi »

Code: Alles auswählen

library(ggplot2)
library(hrbrthemes)
library(scales)
library(Cairo)
library(extrafont)
extrafont::loadfonts()
#font_import()
#loadfonts()
#Dateneingabe
Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471)
CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)
data.frame(Konz_x, CT_Wert_y)
p <- data.frame(Konz_x, CT_Wert_y)
p

#Model-Erstellung für Formeldarstellung in plot 
model <- lm(CT_Wert_y ~ log(Konz_x))
summary(model)
model
eqn <- as.character(as.expression(substitute(italic(y)==a+b*italic(x)*"," ~~ italic(r)^2~ "=" ~ r2,
                                             list(a = format(coef(model) [1], digits = 4), b = format(coef(model)[2], digits = 4), r2 = format(summary(model)$r.squared, digits = 2)
                                             ))))
eqn
parse(text = eqn)

#Plot-Erstellung
point <- ggplot(p, aes(x=Konz_x, y=CT_Wert_y)) 
p <- point + geom_point() + annotation_logticks(sides = "b")  + scale_x_log10() + stat_smooth(method=lm, se=0.99, colour="purple") +
  labs(title = 'Linearity Plot of FTD-Kit Data',
       subtitle = 'Linearity Plot to find Range of Linearity with Coefficient of Determination',
       x = 'Copies/ml patient sample',
       y = 'Ct-value',
       caption = 'Name / Name@Name.de') + 
  annotate("text", label = eqn, parse = TRUE, x=2600 , y=20.5) +
  theme_ipsum() +
  theme(plot.title = element_text(color = "#3a4fa7ff"), plot.caption = element_text(color = "#3a4fa7ff", face = 'bold'))
ggsave('test.pdf', p, device = cairo_pdf)

library(magick)
tiger <- image_read_svg('https://upload.wikimedia.org/wikipedia/commons/f/fd/Ghostscript_Tiger.svg')
plot <- image_read('test.pdf')
final_plot <- image_composite( plot, image_scale(tiger, "100"),  offset = "+400")
final_plot
image_write(final_plot, "test_final.pdf")
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten