Digitale Dokumentation in R zu Schauer 2025 ‘La Hoguette - Kultur, Phänomen, Subkultur?’

Abbildungen und Statistiken zu Kapitel 6.2.3 - Fallstudie Friedberg-Bruchenbrücken Datengrundlage

Autor:in
Zugehörigkeiten

Michaela Schauer

Department für Kulturwissenschaften, Geschwister-Scholl-Platz 1, Ludwig-Maximilians-Universität München, München 80539, Deutschland

Naturhistorisches Museum Wien, Burgring 7, 1010 Wien, Österreich

Vienna Institute for Archaeological Science (VIAS), Universität Wien, Franz-Klein-Gasse 1, 1190 Wien, Österreich

Research Network Human Evolution und Archaeological Sciences (HEAS), Universität Wien, Djerassiplatz 1, 1030 Wien, Österreich

Veröffentlichungsdatum

27. Oktober 2025

1 Einleitung

1.1 Inhalt

Dieses Skript dokumentiert die zu Kapitel 6.2.3 - Schauer (2025) gehörenden Abbildungen und Statistiken:

1.2 Praktische Hinweise

1.2.1 Einführende Literatur

Um mit dem bereitgestellten R-Skript arbeiten zu können, werden die wichtigsten praktischen Schritte, die für den Einstieg erforderlich sind, kurz erklärt. Dies ersetzt jedoch nicht das Studium des Programms selbst und der Inhalte der Skripte.

Siegmund (2020) wird als Grundlage in deutscher Sprache empfohlen, als Einführung in das R-Plugin Quarto seine Anleitung Siegmund (2023). Auf Englisch ist die R Quarto-Website besonders zu empfehlen.

Field, A. u. a. (2013) ist lesenswert, unterhaltsam und enthält alle relevanten Informationen für den Einstieg. Das R Core Team bietet eine regelmäßig aktualisierte Einführung an; die aktuelle Version ist hier zu finden.

1.2.2 R, R Studio und R Quarto

R, auch R Console oder RGUI, ist das „reine“ R, d. h. es arbeitet ausschließlich mit Code. RStudio hingegen verfügt über eine Benutzeroberfläche und greift auf R zu.

Dieses R-Skript wurde in RStudio in Verbindung mit Quarto erstellt – einer R-spezifischen Schreibumgebung, die die Handhabung von Code sowohl bei der Entwicklung als auch bei der Veröffentlichung erheblich vereinfacht. Quarto ermöglicht es, einzelne R-Skripte in Form von Quarto-Dateien (.qmd) zu erstellen und in verschiedene andere Formate (.html, .pdf) zu exportieren. Neben dem „reinen“ R-Code können auch zusätzliche Informationen zu den Code-Modulen bereitgestellt werden.

Quarto-Dokumente enthalten ausführbaren R-Code, d. h. sie wurden entwickelt und umfangreich getestet, um die gewünschten Berechnungen fehlerfrei durchzuführen. Werden die Quarto-Dateien in RStudio geöffnet, sind die Code-Blöcke grau hinterlegt und können automatisch ausgeführt werden. Weitere Informationen zu Quarto und Quarto-Code finden sich hier.

Um mit diesem Skript zu arbeiten, wird empfohlen, R und RStudio, sowie R Quarto zu installieren.

1.2.3 R Projekte

Um sicherzustellen, dass die Berechnungen reibungslos ablaufen, wurde das Skript in ein R-Projekt eingebettet. Die R-Projektdatei (.Rproj) befindet sich im übergeordneten Ordner der Berechnungen und kann durch Doppelklicken geöffnet werden. Der Dateipfad wird über die Position dieser Datei definiert, sodass das gesamte Projekt beliebig gespeichert werden kann – vorausgesetzt, die Daten befinden sich in den vorgegebenen Ordnern. Die einzige Voraussetzung ist, dass der unter Skript-Kapitel Kapitel 3 hinterlegte Code-Schnipsel beim ersten Arbeiten mit diesem Skript ausgeführt wird.

Ein weiterer Vorteil von R-Projekten ist, dass alle Quarto-Dateien, die beim letzten Schließen geöffnet waren, direkt beim Öffnen des Projekts wieder geladen werden – es muss also nicht manuell nach der Dateistruktur gesucht werden.

1.2.4 R Pakete

R-Pakete müssen zunächst installiert und anschließend in jeder Sitzung erneut geladen werden siehe auch Skript-Kapitel 2, um die Berechnungen auszuführen. Sie enthalten Funktionen, die für bestimmte Analysen erforderlich sind. Zum Installieren kann der folgende Code verwendet werden:

  • install.packages(“Paket-Name”)

Die Pakete werden mit folgendem Befehl geladen:

  • library(Paket-Name)

Eine kurze Einführung in grundlegende R-Befehle findet sich beispielsweise auch hier.

1.3 Skript & Packages

Dieses Quarto-Skript (R Quarto v. 1.5.55) (Allaire u. a. 2024) wurde mit R v. 4.4.1 (R Core Team 2024) und RStudio v. 2024.04.2 (RStudio Team 2024) erstellt. Es werden folgende R-Pakete verwendet:

Vor Beginn der Analysen müssen sowohl alle Pakete (siehe Skript-Kapitel Kapitel 2) geladen als auch das Working Directory gesetzt werden (siehe Skript-Kapitel Kapitel 3).

Der Code ist lauffähig, d. h. er kann fehlerfrei ausgeführt werden, sofern die vorgegebene Datenstruktur beibehalten wird.

In jedem Code-Block wird der Code zur Erstellung der jeweils ersten Abbildung erläutert – nachfolgende Grafiken mit vergleichbarem Code erhalten keine eigene Beschreibung.

1.4 Gerät und Messparameter

Die Messdaten wurden mit dem Niton XL3t (Nr. 97390) des Departments für Kulturwissenschaften der Universität München im TestAllGeo-Modus ermittelt (60 Sekunden Standard, Niedrig, Hoch sowie 120 Sekunden Leicht-Modus) und mit einem 8 mm Messspot von M. Schauer durchgeführt. Die Messungen fanden von September bis Dezember 2018 sowie von September 2019 bis Juli 2020 statt. Weitere Informationen finden sich in Kapitel 6.1.1 – Schauer (2025).

2 Notwendige R Pakete

library(ggplot2)
library(ggpubr)
library(dplyr)
library(data.table)
library(cowplot)

3 Working directory

knitr::opts_knit$set(root.dir = "./")

4 Abb. 6-19

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_ArchDaten.csv")

# Diagramm erstellen
Balken_BB_MW_Messstelle<-ggplot(data) + geom_bar(aes(x=Messstelle),fill="lightgrey",color="black")+ # Manuelle Definition der Farbe der Balken
  xlab("Messstelle")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,350,50),expand=c(0,0), limits=c(0,390))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+ theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  geom_text(aes(x=Messstelle,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75) # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken

# Daten einlesen und filtern
data1<- read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_vollständigMW_bearb.csv")
data<-subset(data1,Messstelle %in% c("frischer Bruch"))

# Diagramm erstellen
Balken_BB_MW_Material<-ggplot(data) + geom_bar(aes(x=Kultur),fill="lightgrey",color="black")+ 
  xlab("Artefakttyp")+ylab("Probenanzahl")+ 
  theme_classic()+ 
  scale_y_continuous(breaks=seq(0,340,20),expand=c(0,0), limits=c(0,225))+
  theme(axis.line=element_line(colour="black",size=0.25))+ theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+
  geom_text(aes(x=Kultur,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75)

# Kombination der Diagramme
plot_grid(Balken_BB_MW_Messstelle,Balken_BB_MW_Material,ncol=1,nrow=2,align = "v",axis = "lr",rel_heights=c(1,1))

# Export des kombinierten Diagramms
ggsave("Abb.6-19.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=8,width=9,unit=c("cm"),dpi=1200)

5 Abb. 6-20

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Diagramm erstellen
Balken_BB_MW_Kultur_Häuser<-ggplot(data) + 
  geom_bar(aes(fill=Kultur, x=Haus),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("La Hoguette" = "grey20", "LBK" = "lightgrey"))+ # Manuelle Definition der Farbe der Balken
  xlab("Häuser")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,10),expand=c(0,0), limits=c(0,62))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="none") +  theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  geom_text(aes(mapping=Kultur, x=Haus,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75)+ # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

# Daten filtern
data<-filter(data, Haus=="Gruben")

# Definieren der Befundnummern als Zahlenwerte
data$HausuGruben <- ifelse(data$HausuGruben %in% c("2","12", "17", "29","45", "48", "79"), # Auswahl der zu formatierenden Werte
                      sprintf("%03d", as.numeric(data$HausuGruben)),data$HausuGruben) # Formatieren der Befundnummern auf drei Stellen mit vorangestellten Nullen

# Diagramm erstellen
Balken_BB_MW_Kultur_Gruben<-ggplot(data) + 
  geom_bar(aes(fill=Kultur, x=HausuGruben),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+
  scale_fill_manual(values = c("La Hoguette" = "grey20", "LBK" = "lightgrey"))+
  xlab("Gruben")+ylab("Probenanzahl")+
  theme_classic()+ 
  scale_y_continuous(breaks=seq(0,300,2),expand=c(0,0), limits=c(0,19))+ 
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") +  theme(axis.ticks=element_line(size=0.25,colour="black"))+
  geom_text(aes(mapping=Kultur, x=HausuGruben,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

# Kombination der Diagramme
plot_grid(Balken_BB_MW_Kultur_Häuser,Balken_BB_MW_Kultur_Gruben,ncol=1,nrow=2,align = "v",axis = "lr",rel_heights=c(1,1))

# Export des kombinierten Diagramms
ggsave("Abb.6-20.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=10,width=15.3,unit=c("cm"),dpi=1200)

6 Abb. 6-21

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Bodenproben//Daten_BB_BP_vollständig_bearb.csv")

# Diagramm erstellen
ggplot(data) + geom_bar(aes(fill=Label, x=Probennr.),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("Bodenprobe" = "white", "Ton" = "black"))+ # Manuelle Definition der Farbe der Balken
  xlab("Befundnummer")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,1),expand=c(0,0), limits=c(0,4))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  geom_text(aes(mapping=Label, x=Probennr.,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75)+ # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

# Export des Diagramms
ggsave("Abb.6-21.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=5,width=10,unit=c("cm"),dpi=1200)

7 Abb. 6-22

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Diagramm erstellen
ggplot(data) + geom_bar(aes(fill=Kultur, x=Datierung),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("La Hoguette" = "grey20", "LBK" = "lightgrey"))+ # Manuelle Definition der Farbe der Balken 
  xlab("Datierung")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,20),expand=c(0,0), limits=c(0,210))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  geom_text(aes(mapping=Kultur, x=Datierung,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75) # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken

# Export des Diagramms
ggsave("Abb.6-22.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=6,width=6.5,unit=c("cm"),dpi=1200)

8 Abb. 6-23 - Statistik

# Daten einlesen und filtern
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")
Tab1<-data[,c(24,53),]

# Erstellen der Tabelle
Tab2<-Tab1 %>% count(Gruppe.Magerung, Kultur) # Berechnen wie häufig die jeweiligen Magerungsarten für La Hoguette und Bandkeramik vorkommen
Tab3<-Tab2 %>% group_by(Kultur) %>% mutate(Prozent = prop.table(n)*100) # Berechnen der prozentualen Anteile je Magerungsart für La Hoguette und Bandkeramik

# Export der Tabelle
write.csv(Tab3,"../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//Tab_Abb_6_23.csv",row.names=FALSE)

9 Abb. 6-24

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Definieren der Befundnummern als Zahlenwerte
data$HausuGruben <- ifelse(data$HausuGruben %in% c("2","12", "17", "29","45", "48", "79"), # Auswahl der zu formatierenden Werte
                      sprintf("%03d", as.numeric(data$HausuGruben)),data$HausuGruben) # Formatieren der Befundnummern auf drei Stellen mit vorangestellten Nullen

# Daten filtern
data2<-data[,c(24,29,34,53),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(HausuGruben,Gruppe.Magerung,Kultur,Knochen)

# Diagramm erstellen
ggplot(data3, aes(x=HausuGruben,y=Gruppe.Magerung, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=1.5) + scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Kontext") + ylab("Warenart") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-24.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=19,width=15.3,unit=c("cm"),dpi=1200)

10 Abb. 6-25

# Daten einlesen und filtern
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")
data2<-data[,c(23,24,34,53),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(Datierung,Gruppe.Magerung,Kultur,Knochen)

# Diagramm erstellen
ggplot(data3, aes(x=Datierung,y=Gruppe.Magerung, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) + scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Datierung") + ylab("Warenart") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-25.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=19,width=8,unit=c("cm"),dpi=1200)

11 Abb. 6-26

# Daten einlesen und filtern
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")
data<-filter(data, Typ != "Unbestimmt")

# Darstellungsreihenfolge definieren
data$Typ<-factor(data$Typ,levels=c("Eifoermiger Topf","Schale","Kumpfartiges Gefaess","Becherartiges Gefaess","Becher","Flasche","Schuessel", "Feinkeramischer Kumpf","Grobkeramischer Kumpf","Fussgefaess"))

# Diagramm erstellen
ggplot(data) + geom_bar(aes(fill=Kultur, x=Typ),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("La Hoguette" = "grey20", "LBK" = "lightgrey"))+ # Manuelle Definition der Farbe der Balken 
  xlab("Gefäßtyp")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,10),expand=c(0,0), limits=c(0,61))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
    geom_text(aes(mapping=Kultur,x=Typ,label=..count..),stat='count',position=position_dodge(1),vjust=-0.3,size=2.75)+ # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

# Export des Diagramms
ggsave("Abb.6-26.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=8,width=9,unit=c("cm"),dpi=1200)

12 Abb. 6-27

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Darstellungsreihenfolge definieren
data$Typ<-factor(data$Typ,levels=c("Eifoermiger Topf","Schale","Kumpfartiges Gefaess","Becherartiges Gefaess","Becher","Flasche","Schuessel", "Feinkeramischer Kumpf","Grobkeramischer Kumpf","Fussgefaess", "Unbestimmt"))

# Daten filtern
data<-filter(data, Typ != "Unbestimmt")
data<-subset(data, Kultur %in% c("La Hoguette"))

# Definieren der Befundnummern als Zahlenwerte
data$HausuGruben <- ifelse(data$HausuGruben %in% c("2","12", "17", "29","45", "48", "79"), # Auswahl der zu formatierenden Werte
                      sprintf("%03d", as.numeric(data$HausuGruben)),data$HausuGruben) # Formatieren der Befundnummern auf drei Stellen mit vorangestellten

# Daten filtern
data2<-data[,c(24,29,31,34),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(Typ,HausuGruben,Kultur,Knochen)

# Diagramm erstellen
ggplot(data3, aes(x=HausuGruben,y=Typ, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) +scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Kontexte") + ylab("Typ") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-27.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=6,width=9,unit=c("cm"),dpi=1200)

13 Abb. 6-28

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Darstellungsreihenfolge definieren
data$Typ<-factor(data$Typ,levels=c("Eifoermiger Topf","Schale","Kumpfartiges Gefaess","Becherartiges Gefaess","Becher","Flasche","Schuessel", "Feinkeramischer Kumpf","Grobkeramischer Kumpf","Fussgefaess", "Unbestimmt"))

# Daten filtern
data<-subset(data, Kultur %in% c("La Hoguette"))
data2<-data[,c(23,24,31,34),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(Typ,Datierung,Kultur,Knochen)

# Diagramm erstellen
ggplot(data3, aes(x=Datierung,y=Typ, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) +scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Datierung") + ylab("Gefäßtyp") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +theme(legend.position="bottom") + # Manuelle Formatierung von Achsen- und Legendendarstellung
  theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Achsentext rotieren
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-28.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=6,width=8,unit=c("cm"),dpi=1200)

14 Abb. 6-29

# Daten einlesen und filtern
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")
data<-filter(data, ZierDetail != "Unverziert")

# Darstellungsreihenfolge definieren
data$ZierDetail<-factor(data$ZierDetail,levels=c("21.1","21.4","21.5","21.4/5","21.5/Leiste","22.1","22.1/58.1","22.1/58.6/Leiste","58.1","58.2","58.5","58.6","58.1/2","58.1/2/Leiste","58.1/7","Leiste","19.1","21.2","21.6","21.7","21.8","21.9","21.2/29.1","21.2/29.22","21.6/29.2","21.7/29.2","21.9/29.1","21.9/29.3/29.22.1","22.1/29.20","22.1/29.20/30.3","22.1/29.20/30.31/58.1","22.1/29.23","22.1/29.27","22.2","29.1","29.2","29.22","29.23","29.27","29.31","29.38","29.55","29.1/2","29.1/3","29.2/22","Eckiges Band gefuellt mit 29.22","29.20/22","29.20/30.1/58.1","29.3/58.2","29.20/Notenkopfzier","30.1/51.1/Linien in Winkelbaendern/Notenkopfzier","Doppelt perforiert","Fingerkniffe als Winkelband","Miniaturgefaess"))

# Diagramm erstellen
ggplot(data) + geom_bar(aes(fill=Kultur, x=ZierDetail),position = position_dodge2(preserve = 'single',padding =0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("La Hoguette" = "grey20", "LBK" = "lightgrey"))+ # Manuelle Definition der Farbe der Balken
  xlab("Zier")+ylab("Probenanzahl")+ # Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,1),expand=c(0,0),limits=c(0,8.5))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") +theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  geom_text(aes(mapping=Kultur,x=ZierDetail,label=..count..),stat='count',position=position_dodge(1),hjust=-0.5,size=2.75)+ # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken
  scale_x_discrete(limits=rev)+ # Kategorien der x-Achse invers darstellen
  coord_flip() # Achsen invers darstellen

# Export des Diagramms
ggsave("Abb.6-29.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=23,width=10,unit=c("cm"),dpi=1200)

15 Abb. 6-30

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Darstellungsreihenfolge definieren
data$Typ<-factor(data$Typ,levels=c("Eifoermiger Topf","Schale","Kumpfartiges Gefaess","Becherartiges Gefaess","Becher","Flasche","Schuessel", "Feinkeramischer Kumpf","Grobkeramischer Kumpf","Fussgefaess", "Unbestimmt"))
data$ZierDetail<-factor(data$ZierDetail,levels=c("21.1","21.4","21.5","21.4/5","21.5/Leiste","22.1","22.1/58.1","22.1/58.6/Leiste","58.1","58.2","58.5","58.6","58.1/2","58.1/2/Leiste","58.1/7","Leiste","19.1","21.2","21.6","21.7","21.8","21.9","21.2/29.1","21.2/29.22","21.6/29.2","21.7/29.2","21.9/29.1","21.9/29.3/29.22.1","22.1/29.20","22.1/29.20/30.3","22.1/29.20/30.31/58.1","22.1/29.23","22.1/29.27","22.2","29.1","29.2","29.22","29.23","29.27","29.31","29.38","29.55","29.1/2","29.1/3","29.2/22","Eckiges Band gefuellt mit 29.22","29.20/22","29.20/30.1/58.1","29.3/58.2","29.20/Notenkopfzier","30.1/51.1/Linien in Winkelbaendern/Notenkopfzier","Doppelt perforiert","Fingerkniffe als Winkelband","Miniaturgefaess","Unverziert"))

# Daten filtern
data2<-data[,c(24,31,34,61),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(ZierDetail,Typ,Kultur,Knochen)

# Daten filtern
data3<-filter(data3, ZierDetail != "Unverziert")
data3<-filter(data3, Typ != "Unbestimmt")

# Diagramm erstellen
ggplot(data3, aes(x=Typ,y=ZierDetail, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) +scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Gefäßtyp") + ylab("Zier")+ # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black"))+theme(legend.position="bottom")+theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
 scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-30.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=23,width=10,unit=c("cm"),dpi=1200)

16 Abb. 6-31

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Darstellungsreihenfolge definieren
data$ZierDetail<-factor(data$ZierDetail,levels=c("21.1","21.4","21.5","21.4/5","21.5/Leiste","22.1","22.1/58.1","22.1/58.6/Leiste","58.1","58.2","58.5","58.6","58.1/2","58.1/2/Leiste","58.1/7","Leiste","19.1","21.2","21.6","21.7","21.8","21.9","21.2/29.1","21.2/29.22","21.6/29.2","21.7/29.2","21.9/29.1","21.9/29.3/29.22.1","22.1/29.20","22.1/29.20/30.3","22.1/29.20/30.31/58.1","22.1/29.23","22.1/29.27","22.2","29.1","29.2","29.22","29.23","29.27","29.31","29.38","29.55","29.1/2","29.1/3","29.2/22","Eckiges Band gefuellt mit 29.22","29.20/22","29.20/30.1/58.1","29.3/58.2","29.20/Notenkopfzier","30.1/51.1/Linien in Winkelbaendern/Notenkopfzier","Doppelt perforiert","Fingerkniffe als Winkelband","Miniaturgefaess","Unverziert"))

# Daten filtern
data<-filter(data, Kultur == "La Hoguette")
data2<-data[,c(23,24,34,61),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(ZierDetail,Datierung,Kultur,Knochen)

# Daten filtern
data3<-filter(data3, ZierDetail != "Unverziert")

# Diagramm erstellen
ggplot(data3, aes(x=Datierung,y=ZierDetail, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) +scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Datierung") + ylab("Zier") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +theme(legend.position="bottom")+theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-31.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=8,width=8,unit=c("cm"),dpi=1200)

17 Abb. 6-32

# Daten einlesen
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")

# Definieren der Befundnummern als Zahlenwerte
data$HausuGruben <- ifelse(data$HausuGruben %in% c("2","12", "17", "29","45", "48", "79"), # Auswahl der zu formatierenden Werte
                      sprintf("%03d", as.numeric(data$HausuGruben)),data$HausuGruben) # Formatieren der Befundnummern auf drei Stellen mit vorangestellten Nullen

# Darstellungsreihenfolge definieren
data$ZierDetail<-factor(data$ZierDetail,levels=c("21.1","21.4","21.5","21.4/5","21.5/Leiste","22.1","22.1/58.1","22.1/58.6/Leiste","58.1","58.2","58.5","58.6","58.1/2","58.1/2/Leiste","58.1/7","Leiste","19.1","21.2","21.6","21.7","21.8","21.9","21.2/29.1","21.2/29.22","21.6/29.2","21.7/29.2","21.9/29.1","21.9/29.3/29.22.1","22.1/29.20","22.1/29.20/30.3","22.1/29.20/30.31/58.1","22.1/29.23","22.1/29.27","22.2","29.1","29.2","29.22","29.23","29.27","29.31","29.38","29.55","29.1/2","29.1/3","29.2/22","Eckiges Band gefuellt mit 29.22","29.20/22","29.20/30.1/58.1","29.3/58.2","29.20/Notenkopfzier","30.1/51.1/Linien in Winkelbaendern/Notenkopfzier","Doppelt perforiert","Fingerkniffe als Winkelband","Miniaturgefaess","Unverziert"))

# Daten filtern
data<-filter(data, Kultur == "La Hoguette")
data2<-data[,c(24,29,34,61),]

# Berechnen der Häufigkeit des Auftretens der Kobminationen der folgenden Variablen
data3<-data2 %>% count(ZierDetail,HausuGruben,Kultur,Knochen)

# Daten filtern
data3<-filter(data3, ZierDetail != "Unverziert")

# Diagramm erstellen
ggplot(data3, aes(x=HausuGruben,y=ZierDetail, color=Knochen, shape=Kultur)) + 
  geom_point(aes(shape=Kultur),size=2) +scale_shape_manual(values=c(17,1))+ # Manuelle Definition von Größe und Form der Symbole
  scale_color_manual(name="Knochen",values=c("black","wheat4"))+ # Manuelle Definition der Farbe der Symbole
  xlab("Kontexte")+ ylab("Zier") + # Manuelle Achsenbeschriftung
  theme_light() + # Schlichtes Design
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black"))+theme(legend.position="bottom")+theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelle Formatierung von Achsen- und Legendendarstellung
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
  scale_y_discrete(limits=rev) # Kategorien der Y-Achse invers darstellen

# Export des Diagramms
ggsave("Abb.6-32.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=9,width=10,unit=c("cm"),dpi=1200)

18 Abb. 6-33

# Daten einlesen und filtern
data<-read.csv("../Daten//Kap_6//Kap_6.2//Grundlagen//Datengrundlage//Daten_BB_Ker_vollständigMW_chemGruppen_bearb.csv")
data<-filter(data, LeFranc == "Stil A" | LeFranc == "Stil B")

# Ersetzen von leeren Zellen in Spalte Knochen mit "X"
data$Knochen[data$Knochen==""]<-"X"

# Diagramme erstellen
Balken_LeFranc_Knochen<-ggplot(data) + geom_bar(aes(fill=Knochen, x=LeFranc),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+ # Manuelle Definition der Anordnung der Balken
  scale_fill_manual(values = c("Knochen" = "wheat4", "X" = "black"))+ # Manuelle Definition der Farbe der Balken 
  xlab("Zierstil nach LeFranc")+ylab("Probenanzahl")+# Manuelle Achsenbeschriftung
  theme_classic()+ # Klassisches Design
  scale_y_continuous(breaks=seq(0,300,1),expand=c(0,0), limits=c(0,8.5))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom") + theme(axis.ticks=element_line(size=0.25,colour="black"))+ # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken
  geom_text(aes(mapping=Knochen, x=LeFranc,label=..count..),stat='count',position=position_dodge(1),vjust=-0.5,size=2.75) # Manuelles Hinzufügen der Zahlenwerte als Text oberhalb der Balken

Balken_LeFranc_Datierung<-ggplot(data) + geom_bar(aes(fill=LeFranc, x=Datierung),position = position_dodge2(preserve = 'single',padding = 0.0),color="black")+
  scale_fill_manual(values = c("Stil A" = "grey32", "Stil B" = "white"))+
  xlab("Datierung")+ylab("Probenanzahl")+
  theme_classic()+
  scale_y_continuous(breaks=seq(0,300,1),expand=c(0,0), limits=c(0,8.5))+
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black"))+theme(legend.position="bottom")+theme(axis.ticks=element_line(size=0.25,colour="black"))+
  geom_text(aes(mapping=LeFranc, x=Datierung,label=..count..),stat='count',position=position_dodge(1),vjust=-0.5,size=2.75)

# Darstellungsreihenfolge definieren
data$Typ<-factor(data$Typ,levels=c("Eifoermiger Topf","Becherartiges Gefaess","Unbestimmt"))

# Diagramm erstellen
Balken_LeFranc_Typ<-ggplot(data) + geom_bar(aes(fill=LeFranc, x=Typ),position = position_dodge2(preserve = 'single',padding =0.0),color="black")+
  scale_fill_manual(values = c("Stil A" = "grey32", "Stil B" = "white"))+
  xlab("Gefäßtyp")+ylab("Probenanzahl")+
  theme_classic()+
  scale_y_continuous(breaks=seq(0,300,1),expand=c(0,0),limits=c(0,8.5))+
  theme(axis.line=element_line(colour="black",size=0.25))+theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black"))+theme(legend.position="bottom")+theme(axis.ticks=element_line(size=0.25,colour="black"))+
  geom_text(aes(mapping=LeFranc, x=Typ,label=..count..),stat='count',position=position_dodge(1),vjust=-0.5,size=2.75)

# Kombination der Diagramme
plot_grid(Balken_LeFranc_Knochen,Balken_LeFranc_Datierung,Balken_LeFranc_Typ,ncol=2,nrow=2,align = "v",axis = "lrhv",rel_heights=c(1,1))

# Export des kombinierten Diagramms 
ggsave("Abb.6-33.eps",path=("../Daten//Kap_6//Kap_6.2//Abbildungen//Grundlagen//"),plot=last_plot(),device="eps",height=10,width=10,unit=c("cm"),dpi=1200)

19 Literatur

Allaire u. a. 2024: J. J. Allaire/C. Teague/C. Scheidegger/Y. Xie/C. Dervieux, Quarto v.1.5.55. https://quarto.org.
Barrett u. a. 2024: T. Barrett/M. Dowle/A. Srinivasan/J. Gorecki/M. Chirico/T. Hocking, data.table: Extension of ‘data.frame‘: R package version 1.15.4. https://cran.r-project.org/package=data.table.
Field, A. u. a. 2013: A. Field/J. Miles/Z. Field, Discovering Statistics using R (Los Angeles 2013).
Kassambara 2023: A. Kassambara, ggpubr: ’ggplot2’ Based Publication Ready Plots: R package version 0.6.0. https://cran.r-project.org/package=ggpubr.
R Core Team 2024: R Core Team, R v.4.4.1: A Language and Environment for Statistical Computing: Race for Your Life. https://www.r-project.org/.
RStudio Team 2024: RStudio Team, RStudio v. 2024.04.2: Integrated Development Environment for R. https://www.rstudio.com/.
Schauer 2025: M. Schauer, La Hoguette – Kultur, Phänomen, Subkultur? Archäologische Studien und portable, energiedispersive Röntgenfluoreszenzanalysen (p-ED-RFA) an Keramik zu einer altbekannten Frage 183. Philippika 183 (Wiesbaden 2025).
Siegmund 2020: F. Siegmund, Statistik in der Archäologie: eine anwendungsorientierte Einführung auf Basis freier Software (Norderstedt 2020). https://frank-siegmund.de/images/opendata/2020-archaeostatistik/siegmund_2020_daten.zip.
Siegmund 2023: F. Siegmund, Einführung Quarto. https://www.frank-siegmund.de/images/opendata/einfuehrungquarto.zip.
Wickham 2016: H. Wickham, ggplot2: Elegant graphics for data analysis. Use R! 2(Cham 2016). https://ebookcentral.proquest.com/lib/kxp/detail.action?docid=4546676.
Wickham 2023: H. Wickham, stringr: Simple, Consistent Wrappers for Common String Operations: R package version 1.5.1. https://cran.r-project.org/package=stringr.
Wilke 2024: C. Wilke, cowplot: Streamlined Plot Theme and Plot Annotations for ’ggplot2’: R package version 1.1.3. https://cran.r-project.org/package=cowplot.

Wiederverwendung