PDF aus ggplot2-Karte, grid.arrange & Hintergrundbild

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

Moderatoren: EDi, jogo

Antworten
Konkordanz
Beiträge: 7
Registriert: So Sep 10, 2023 9:06 am

PDF aus ggplot2-Karte, grid.arrange & Hintergrundbild

Beitrag von Konkordanz »

Hallo Forum,

ich habe mir mit ggplot2 eine Landkarte ("karte") gebastelt. Gemeinsam mit einigen Textfeldern ("grob1" - "grob4.2) möchte ich diese in eine PDF exportieren, auf welche zudem ein Hintergrund-Bild ("background2.jpg") gelegt werden soll. Aber ich scheitere seit vielen Stunden an dieser Aufgabe. Es ist kein Problem, alles ohne Hintergrundbild einzufügen oder das Hintergrundbild einzufügen und dann die Texte auf diesem Hintergrund erscheinen zu lassen.
Was aber ein Problem darstellt: Sobald ich die Karte einfüge, gehts insofern schief, als dass der Inhalt verschwindet, weil das Hintergrundbild auf dem Inhalt liegt. Kennt sich da jemand aus und kann mir helfen, wie ich mein Ziel erreiche? Btw: Schiebe ich den Schritt "Hintergrundbild hinzufügen" vor den grid.arrange-Befehl, erscheint das Hintergrundbild auf der Seite 1 und der Rest auf der Seite 2. Das ist also auch keine Lösung :( Danke für die Hilfe!

Hier ist die Syntax, die ich bis jetzt verwende:

Code: Alles auswählen


#Leeren Raster als Platzhalter erzeugen
blank <- grid.rect(gp=gpar(col="NA"))

# Definieren, wo und unter welchen Bedingungen die PDF gespeichert werden soll
pdf_file <- file.path("...PFAD...", paste("Gemeinde", ".pdf", sep = ""))

# PDF öffnen und Größe definieren
pdf(file = pdf_file, 
    width = 8.27, height = 11.69)                                      

#Inhalte in die PDF einfügen
grob1 <-  textGrob("Gemeinde...", gp=gpar(fontsize=22, fontface = "bold"))

#Landkreis
kreis_titel <- "Landkreis: "
grob2.1 <-   textGrob(kreis_titel, gp=gpar(fontsize=14,fontface="bold"),just = "left")

kreis_inh <- "Bautzen"
grob2.2 <- textGrob(kreis_inh, gp=gpar(fontsize=14),just = "left")

#AGS
AGS_titel <- "Gemeindekennziffer: "
grob3.1 <- textGrob(AGS_titel, gp=gpar(fontsize=14,fontface="bold"),just = "left")

AGS_Inh <- "14625250"
grob3.2 <- textGrob(AGS_Inh, gp=gpar(fontsize=14),just = "left")

#Einwohner
Einwohner_titel <- "Einwohner: "
grob4.1 <- textGrob(Einwohner_titel, gp=gpar(fontsize=14,fontface="bold"),just = "left")

Einwohner_inh <- "16853"
grob4.2 <- textGrob(Einwohner_inh, gp=gpar(fontsize=14),just = "left")

#Layout, wie die A4-Seite in Raster aufgeteilt wird, vorab definieren
layout <- rbind(c(1, 1, 1, 1, 1, 1, 1, 1, 1),       # Zeile 1 mit x Spalten
                c(2, 2, 3, 3, 3, NA, NA, NA, NA),    # Zeile 2 mit x Spalten
                c(4, 4, 5, 5, 5, NA, NA, NA, NA),    # Zeile 3 mit x Spalten
                c(6, 6, 7, 7, 7, NA, NA, NA, NA),    # Zeile 4 mit x Spalten
                c(8, 8, 8, 8, 8, 8, 8, 8, 8),             # Zeile 5 mit x Spalten
                c(9, 9, 9, 9, 9, 9, 9, 9, 9))             # Zeile 6 mit x Spalten

grid.arrange( grob1,   #1 im Layout
                    grob2.1, #2 im Layout 
                    grob2.2, #3 im Layout
                    grob3.1, #4 im Layout
                    grob3.2, #5 im Layout 
                    grob4.1, #6 im Layout
                    grob4.2, #7 im Layout
                    blank,
                    karte,
                    layout_matrix=layout,
                    heights = c(5,1,1,1,2,20))   

# Hintergrundbild hinzufügen
#Pfad Hintergrundbild
background_image <- image_read("...PFAD/background2.jpg")  
grid.raster(as.raster(background_image), x = 0.5, y = 0.5, width = 1, height = 1)

#PDF schließen und Prozess beenden
dev.off()

# PDF-Datei anzeigen
shell.exec(pdf_file)

ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: PDF aus ggplot2-Karte, grid.arrange & Hintergrundbild

Beitrag von ruedi_br »

Hi, ich habe zwar noch nie mit grobs gearbeitet, aber m.W. arbeitet das stapelorientiert. Dann wird das letzt-hinzugefügte Hintergrundbild ganz nach oben gelegt.
HTH Ruedi
fortune(111)
Antworten