• Show All Code
  • Hide All Code
  • Download Rmd

Diagramme für die jeweiligen Tests

data <- data.frame(
    value1=c(rnorm(50, 8, 5)),
    value2=c(rnorm(50, 10, 2))
)

Scatterplot

Scatterplot - einfach

plot(data$value1 ~ data$value2 ,  # value1: y, value2: x 
     main = "Streudiagramm",      #Überschrift 
     xlab = "Value2",             # x-Achse
     ylab= "Value1",              # y-Achse
     pch=17,                      # Dreiecke 
     col= "darkgray"              # Farbe
     
     )              

abline(lm(data$value1 ~ data$value2, data = data), col="orange", lwd=3) 

### Scatterplot mit Boxplot

library(car)
## Loading required package: carData
scatterplot(data$value1 ~ data$value2, 
            data = data,
             main = "Streudiagramm",      #Überschrift 
             xlab = "Value2",             # x-Achse
             ylab= "Value1",              # y-Achse
             pch=17,                      # Dreiecke 
             col= "darkgray"              # Farbe
             
           )

Scatterplot - Kombis

library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:car':
## 
##     logit
scatterHist(data$value1, data$value2,
             main = "Streudiagramm",      #Überschrift 
             xlab = "Value1",             # x-Achse
             ylab= "Value2",              # y-Achse
             pch=17,                      # Dreiecke 
             col= "darkgray" ,            # Farbe
           #ellipse = FALSE,              # Keine Kreise
          method = "pearson"              #-0.11  ->r
            
            
            )

data1 <- data.frame(
    value1=c(rnorm(50, 8, 5)),
    value2=c(rnorm(50, 10, 2)),
    value3=c(rnorm(50, 18, 5)),
    value4=c(rnorm(50, 19, 2)),
    sex =c( rep("A",25), rep("B",25))
)

Scatterplot-Matrix

library(car)

scatterplotMatrix(~value1+value2+value3+value4, 
                       regLine=TRUE, smooth=FALSE, 
  diagonal=list(method="density"), by.groups=TRUE, 
  data=data1)

Kreisdiagramm

Kreisdiagramm - einfach

data <- data.frame(
  name=c( rep("braunhaarig",15),  
          rep("blond",5),
          rep("rothaarig",10),
          rep("schwarzhaarig",12),
          rep("bunthaarig",4))
  )
#head(data)
mytable <- table(data$name)
mytable
## 
##         blond   braunhaarig    bunthaarig     rothaarig schwarzhaarig 
##             5            15             4            10            12
myClr <- c("gold", "brown","green","red", "black") #Farbe

lbls <- paste(names(mytable),#Beschriftung
              "\n", #Zeilenumbruch
              mytable, sep="") #Anzahl der Ausprägungen

pie( # Erstelle ein Kreisdiagramm
  
  mytable, #Daten
    labels = lbls,#Bezeichnung
    col = myClr, #Farbe
   main="Kreidiagramm\n Haarfarben") 

Kreisdiagramm - mit Prozentangaben

data <- data.frame(
 name <- c("blond","braunhaarig","bunthaarig","rothaarig","schwarzhaarig"),
 zahl <- c(mytable[1],mytable[2],mytable[3],mytable[4],mytable[5])
    )

colnames(data)[1] <- "name" #Spaltenname ändern
colnames(data)[2] <- "zahl"#Spaltenname ändern


library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
## 
##     %+%, alpha
ggplot(data, aes (x="", y = zahl, fill = factor(name))) + #Daten  einlesen
  geom_bar(width = 1, stat = "identity") + #immer so 
    coord_polar("y")+ # Kreisdiagramm
  geom_text(aes(label = paste(round(zahl / sum(zahl) * 100, 1), "%")), #Berechnung der Prozente
            position = position_stack(vjust = 0.5)) + #Position mittig
  
  theme_classic() + #Farbe
  
  theme(plot.title = element_text(hjust=0.5), #Titel Höhe
        axis.line = element_blank(), # keine Linie
        axis.text = element_blank())+ # keine Linietext

  
  
  labs(fill = "Haarfarbe", #Legend 
       x = NULL, # keine Achsenwerte 
       y = NULL, # keine Achsenwerte 
       title = "Kreisdiagramm") # Titel des Kreisdiagramms

Donut Diagramm

data <- data.frame(
  name=c( rep("braunhaarig",15),  
          rep("blond",5),
          rep("rothaarig",10),
          rep("schwarzhaarig",12),
          rep("bunthaarig",4))
  )

mytable <-(table(data)/sum(table(data)))*100
mytable<-as.data.frame(mytable)
head(mytable)
##            data      Freq
## 1         blond 10.869565
## 2   braunhaarig 32.608696
## 3    bunthaarig  8.695652
## 4     rothaarig 21.739130
## 5 schwarzhaarig 26.086957
library("dplyr")
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
mytable <- mytable %>%
  arrange(desc(data)) %>%
  mutate(lab.ypos = cumsum(Freq) - 0.5*Freq)
mytable$lab.ypos <-round(mytable$lab.ypos,2)
mytable$Freq <-round(mytable$Freq,2)
mytable
##            data  Freq lab.ypos
## 1 schwarzhaarig 26.09    13.04
## 2     rothaarig 21.74    36.96
## 3    bunthaarig  8.70    52.17
## 4   braunhaarig 32.61    72.83
## 5         blond 10.87    94.57
ggplot(mytable, aes(x = 2, y = Freq, fill = data)) +
  geom_bar(stat = "identity", color = "white") +
  coord_polar(theta = "y", start = 0)+
  geom_text(aes(y = lab.ypos, label = Freq), color = "white")+
  scale_fill_brewer(palette="Dark2") +
  theme_void()+
  xlim(0.5, 2.5) # to create donut pie

Balkendiagramm

Balkendiagramm - einfach

data23 <- data.frame(
  name=c( rep("braunhaarig",15),  
          rep("blond",5),
          rep("rothaarig",10),
          rep("schwarzhaarig",12),
          rep("bunthaarig",4))
  )
#View(data)
counts <- table(data23$name)
barplot(counts , density=c(5,10,20,30,7) , angle=c(0,45,90,11,36) , col="brown"   )

library(readxl)
uebung9 <- read_excel("C:/Users/Alfa/Desktop/Alfa/Musterloesungen/uebung9.xlsx")
#View(uebung9)
#View(uebung9)

Balkendiagramm - 2 x2

counts<- table(uebung9$Geschlecht, by = uebung9$Brille)

barplot(counts, main="Balkendiagramm",
col=c("deepskyblue","tomato"),
ylab="Anzahl Personen",xlab = "Geschlecht und Brille",
beside=T,
names.arg =c("M-Brille","F-Brille","M-ohne-Brille", "F-ohneBrille"))

Balkendiagramm - gestapelt()

counts<- table(uebung9$Geschlecht, by = uebung9$Brille)

barplot(counts, main="Brille und Geschlecht",
col=c("blue","red"),
ylab="Anzahl Personen",xlab = "Bereitschaft eine Brille",
ylim=c(0,130),
beside=FALSE,
names.arg =c("Mit Brille","Ohne Brille"),
legend=TRUE)

counts<- table( uebung9$Brille, by = uebung9$Geschlecht)
#counts
barplot(counts, main="Brille und Geschlecht",
col=c("orange","lightgreen"),
ylab="Anzahl Personen",xlab = "Geschlecht",
ylim=c(0,130),
beside=FALSE,
names.arg =c("Männer","Frauen"),
legend=TRUE)

### Balkendiagramm - auf 1 geeicht

counts<- table(  Brille = uebung9$Brille, Geschlecht = uebung9$Geschlecht)
your_matrix<-(counts)

 barplot(prop.table(your_matrix, 2) )

Balkendiagramm - 2x2 getrennt

kurz<- c("M-Brille","F-Brille","M-ohne-Brille", "F-ohneBrille")
Anzahl <- c(70,40,30,60)
brillegender <- data.frame(kurz,Anzahl)
barplot(brillegender$Anzahl, names.arg = brillegender$kurz)

Boxplot

Boxplot - einfach

data <- data.frame(
  name=c( rep("A",50), rep("B",50)),
  value=c( rnorm(50, 12, 6), rnorm(50, 19, 10))
)
#View(data)
boxplot(data$value ~ data$name,        # Daten aufteilen zwischen A und B
       main = "Ich bin ein Boxplot",   # Überschrift
        xlab = "Zufallswerte",         # x-Achse
        ylab = "Ausprägung",           # y-Achse
        col = c("lightblue", "blue")   # Farbe
        )

Boxplot mit Mittelwert

means <- aggregate(value ~  name, data, mean)
 means$value<- round(means$value, 2)
library(ggplot2)

ggplot(data = data, aes(x=name, #Teilen der Daten
                 y=value, #Metrische Var.
                 fill=name)) + #Teilen für die Legende
                geom_boxplot()+ #Erstelle ein Boxplot
                stat_summary(fun=mean,  # Setze Mittelwert
                             colour="darkred", #Farbe
                             geom="point",  #Punkt
                             shape=18, # Form des Punktes
                             size=3) + #Größe
                geom_text(data = means, #Setze Text aus der "means"
                          aes(label = value, #Label
                              y = value+ 2.00)) #Ort + 2.0 Punkte

Boxplot - gedreht

ggplot(data, aes(x=name, #Teilen der Daten
                 y=value, #Metrische Var.
                 fill=name)) + #Teilen für die Legende
                geom_boxplot(
                             outlier.color="blue",#Ausreißer in Blau
                             outlier.shape=23, # Form
                             outlier.size=4)+ # Größe 
                coord_flip() #Drehen

Histogramm

Histogramm - einfach

data <- data.frame(
  name=c( rep("A",50), rep("B",50)),
  value=c( rnorm(50, 12, 5), rnorm(50, 19, 3))
)
hist(data$value, #Daten
     col ="gray", #Farbe
     xlab ="Zufallswerte",#x-Achse
     ylab ="Anzahl",#y-Achse
     main ="Ich bin ein Histogramm",#Überschrift
     breaks = 10, #
     sub ="Abbildung"
       )

Histogramm mit Verteilungslinie

x <- data$value

h<-hist(x, breaks=10, col="lightblue", xlab="XX",
   main="Histogram ",
   ylab= "Anzahl")
xfit<-seq(min(x),max(x),length=40)
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="blue", lwd=2) 

x <- scale(data$value)
hist(x,
    main="Beispiel Histogramm",        # Überschrift
    xlab="Zufallszahlen",             #x-Achse
    ylab="Wahrscheinlichkeitsdichte", #y-Achse
    col="gray",                       # Farbe
    
    breaks= seq(-5,5,length=14), 
    freq=FALSE)  #Bereich zur Einteilung 
    m <- mean(x) # Mittelwert von x
    s <-  sd(x)  #Standardabweichung von x
    curve(dnorm(x,m,s),add=TRUE,lwd=3, col="red") # Dichefunktion, Add setzen, Breite: drei, Farbe: Rot

Histogramm - nebeneinander

library(dplyr) #Anpassung der Daten. Hier in diesem Beispiel: die Gruppierung
library(ggplot2)

data %>% # Datengrundlage
group_by(name)%>% #Gruppierung
  
ggplot(aes(value))+ #plot + Daten
    geom_histogram( binwidth=3, aes(fill=name), color="#e9ecef", alpha=0.7) + # Erstelle ein Histogramm, Unterteilung, Farbe + Transparenz
    facet_wrap(~name)+ # Zwei Graphen
    theme_classic()+ #Farbschema
    labs(x="Gruppierungen", y="Anzahl") # Beschriftung

library(ggplot2)

ggplot(data, aes(x=value, color=name, fill=name)) + 
    geom_histogram( binwidth=3, aes(fill=name), color="#e9ecef", alpha=0.7) + # Erstelle ein Histogramm, Unterteilung, Farbe + Transparenz
    facet_wrap(~name)+ # Zwei Graphen
    theme_classic()+ #Farbschema
    labs(x="Gruppierungen", y="Anzahl") + # Beschriftung
   scale_color_manual(values=c("#999999", "#E69F00"))+
  scale_fill_manual(values=c("#999999", "#E69F00"))

library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
mu <- ddply(data, "name", summarise, grp.mean=mean(value))

ggplot(data, aes(x=value, color=name, fill=name)) + 
 geom_histogram(binwidth = 4, aes(y=..density..), alpha=0.5, 
                position="identity")+
 geom_density(alpha=.2) + 
   facet_wrap(~name) # Zwei Graphen

library(ggridges)
library(ggplot2)

ggplot(data, aes(x=value, y =name,  fill=name)) + 
  geom_density_ridges(alpha = 0.6, rel_min_height = 0.01, bandwidth =0.7,
                      color = "white", from = -5, to = 30) +
  theme_ridges(grid = TRUE) +      #theme_dark()+
 # scale_fill_cyclical() +
  labs(x = "XXX", y = "XXX") +theme(legend.position = "right") 

data %>%
  group_by(name) %>%
  ggplot(aes(value, color = name))+ 
      geom_histogram(aes(y = stat(density), color = name), 
                   fill = "white",position = "identity", binwidth = 5)+
      geom_density(aes(color = name), size = 1) +
      scale_color_manual(values = c("#868686FF", "#EFC000FF","#000099", "#CC0000"))  

Histogramm - trennen

A <-subset(data, data$name =="A")
B <-subset(data, data$name =="B")

hist(A$value)

Plot der Mittelwert

Plot der Mittelwert - einfach

ggplot(data, aes(x=name, y=value, group=1))+
  stat_summary(fun.y = mean, geom="point", size=3)+
  stat_summary(fun.y = mean, geom="line")+
  stat_summary(fun.data = mean_cl_normal, geom="errorbar",width=.2, size=.25)+
  labs(x="XX", y="XXX")+
  theme_classic()
## Warning: `fun.y` is deprecated. Use `fun` instead.

## Warning: `fun.y` is deprecated. Use `fun` instead.

Plot der Mittelwert - mit Mittelwert

library(htmltools)

ggplot(data, 
       aes(x=name, 
           y=value,
           group = name,
           color = name,
           aesthetics = "fill" 
           )
       )+
  stat_summary(fun = mean, 
               geom="point", 
               size=3
               )+
  stat_summary(fun = mean, 
               geom="line",
               size= 1.5
               )+
  stat_summary(fun.data = mean_cl_normal, 
               geom="errorbar",
               width=0.2, 
               size=1
               )+
  stat_summary(aes(label=round(..y..,2)), 
               fun ='mean', 
               geom="text", 
               size=4,
               position = position_nudge(x = -0.25, y = 0.75)
               )+
  labs(title = "XXX",
       x="XX", 
       y="XX")+
  theme(panel.background = element_rect(size = 0.5, fill = "gray91", colour = "black", linetype='solid'),
        panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "darkgray"),
        panel.grid.minor = element_line(size = 0.5, linetype = 'solid', colour = "gray"),
        )
## geom_path: Each group consists of only one observation. Do you need to adjust
## the group aesthetic?

### Plot der Mittelwert - mit Punktwolke

library(ggpubr)
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:plyr':
## 
##     mutate
library(cowplot)
## 
## Attaching package: 'cowplot'
## The following object is masked from 'package:ggpubr':
## 
##     get_legend
library(dplyr)

ggline(data, x = "name", y = "value", 
       add = c("mean_se", "jitter"), 
       color = "goldenrod",
add.params = list(color = "name", size = 0.9),
       palette = "Darjeeling") 

### Plot der Mittelwert - mit Extra

library(ggpubr)
library(cowplot)

p1 = ggerrorplot(data, x = "name", y = "value", 
            desc_stat = "mean_sd", 
            color = "name", palette = "Set1",
            position = position_dodge(0.3))     # Adjust the space between bars


p2 = ggline(data, x = "name", y = "value",
       add = c("mean_se", "jitter"),
       color = "name", palette = "jco")


plot_grid(p1, p2, labels = "AUTO")
## geom_path: Each group consists of only one observation. Do you need to adjust
## the group aesthetic?