Hei,

Velkommen til den andre øvelsen i BIO104 - Komparativ fysiologi. Som en del av kurset har dere her mulighet for å utvide kunnskapene i R ved å:

  • bruke matematiske symboler i teksten
  • lage tabell,
  • legge til bilder og figurer
  • sette alt sammen til en fullstending rapport.

Øvelsen skal utføres i R/RStudio. Vi på bioST@TS har utviklet denne siden for å hjelpe deg med å komme i gang med R/RStudio og å løse oppgavene i denne øvelsen.


Du kan også gå tilbake til forrige lab-øvelse i mikrobiologi hvis du har behov for å friske opp i R.

1 Mal til rapporten

Gå til fanen Files og klikk på filen Bio104_Template_rapport.Rmd. Filen åpnes øverst til venstre og viser malen til rapporten.

Denne filen er skrevet i Rmarkdown-format som gjør redigeringsprosessen pålitelig. Ved bruk av den forhåndsinstallerte R-pakken knitr og knappen Knit, produserer RStudio et ferdigformatert dokument med figurer, titler og tekst.

2 Introduksjon

I denne seksjonen skal du skrive en introduksjon til forsøket Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

2.1 Matematiske symboler

Når man skriver vitenskaplige tekster, så har man ofte behov for å bruke matematiske symboler. I Rmarkdown kan man enkelt sette inn alle mulige symboler i teksten.

Dette gjør man med å skrive inn symbol-navnet mellom to dollar-tegn ($) og setter en omvendt skråstrek foran symbolet (\).

Hvis vi for eksempel ønsker å sette inn symbolet \(\Psi\) (psi), så skriver vi $\Psi$. Merk her at vi skriver Psi med stor forbokstav. Dette gjør vi for å få “stor-bokstav” av symbolet. Man kan også skrive psi som lite symbol med å skrive $\psi$ og da ser symbolet slikt ut \(\psi\).

Hvis du ønsker å legge til hevet eller senket skrift i symbolene så bruker man _{} for senket skrift og ^{} for hevet skrift. Vi kan f. eks. skrive \(mc^{2}\) ved å sette inn $mc^{2}$ eller \(CO_{2}\) ved å sette inn $CO_{2}$.

Merk at bokstavene mc og CO blir i kursiv og vises som et matematisk symbol. For å lage hevet og senket skrift utenom matematiske formler kan man bruke tilde (~) for senket og hatt (^) for hevet. For eksempel H~2~SO~4~ gir H2SO4 og Fe^2+^ gir Fe2+.


For å lage de to ligningene som kan være relevant for dette forsøket så kan man skrive:

$\Psi = \Psi_{o} + \Psi_{p} + \Psi_{m}$

for å få:

\(\Psi = \Psi_{o} + \Psi_{p} + \Psi_{m}\)

og skrive:

$\Psi_{s} = -miRT$

for å få:

\(\Psi_{s} = -miRT\)

Hvis du klikker her, så finner du en oversikt over nyttige symboler og hvordan man bruker dem.

3 Metode

I denne seksjonen skal du beskrive hvordan eksperimentet ble utført og hvordan målingene ble registrert. Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

4 Resultat

I denne seksjonen skal du presentere resultatene. Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

I dette lab-forsøket står dere veldig fritt i forhold til hvordan dere ønsker å sette opp øvelsen. Derfor er det også mange alternativer for hvordan man ønsker å vise resultatene sine.

I de neste seksjonene forklarer vi:

  • hvordan man lager tabell
  • hvordan man setter inn bilder med annotering
  • hvordan man lager plot.

Dette er bare eksempler og dere står fritt til å presentere resultatene slik dere ønsker.

Har du problemer med R så er det mange steder hvor du kan få hjelp.

"Help will always be given at UiB for those who ask for it" :)


4.1 Lage en tabell

Ofte kan det være nytte å presentere resultatene i form av en tabell (Tabell 1). Vi har vist et eksempel fra et tidligere plantelab-forsøk, men oppbyggen for andre tabeller vil være den samme.

Table 1: Tabell for å vise resultatene
Tube Manntitol (mL) Destilled water (mL) Final mannitol concentration (mol/L)
P1 0 10 0
P2 3 7 0.15
P3 4 6 0.2
P4 5 5 0.25
P5 6 4 0.3
P6 7 3 0.35
P7 8 2 0.4
P8 9 1 0.45
P9 10 0 0.5


4.1.1 Matrix

Vi kan bygge opp en slik tabell i R ved å lage en matrix av dataene.

I koden nedenfor henter vi opp funksjonen matrix. Her legger vi inn tre parametre c(), ncol og byrow.

table_methods <- matrix( c(
                "P1", 0, 10, 0.00,
                "P2", 3, 7 , 0.15,
                "P3", 4, 6 , 0.20,
                "P4", 5, 5 , 0.25,
                "P5", 6, 4 , 0.30,
                "P6", 7, 3 , 0.35,
                "P7", 8, 2 , 0.40,
                "P8", 9, 1 , 0.45,
                "P9", 10,0 , 0.50), ncol=4, byrow=TRUE)

# Kode over og under vil gi samme resultat

table_methods <- matrix(c("P1", 0, 10, 0.00,"P2", 3, 7 , 0.15,"P3", 4, 6 , 0.20,"P4", 5, 5 , 0.25,"P5", 6, 4 , 0.30,"P6", 7, 3 , 0.35,"P7", 8, 2 , 0.40,"P8", 9, 1 , 0.45,"P9", 10,0 , 0.50), ncol=4, byrow=TRUE)

Inni parantesen til c() legger man inn dataene man ønsker å sette inn i tabellen. Hvert element separeres med bruke komma (,) og desimal-tall defineres med å bruke punktom (.). Dataene her vil leses kronologisk og fylles inn i hver kolonne i tabellen (fra venstre mot høyre).

For at R skal forstå hvor mange elementer som skal leses før den skal fylle kolonnene i neste rad, så definerer vi antall kolonner med å bruke ncol. I eksempelet ovenfor, så har vi brukt ncol=4 som vil si at R henter ut fire elementer fra listen c() og legger hvert element i en kolonne bortover første rad. Deretter vil den hente ut de fire neste elementene fra c() og legge til disse i de samme kolonnene, men i raden under.

Parameteren byrow=TRUE forteller at elemene som leses skal fylles opp i rader (horisontalt) og ikke nedover i kolonner (vertikalt).

4.1.2 Kolonner og rader

Neste steg er å sette navn på kolonnene. Dette gjør man ved å bruke colnames(). Her må vi hente opp matrixen vi lagde over som vi kalte table_methods og navngi kolonnene kronologisk bortover slik som vist nedenfor:

# Defining column names
colnames(table_methods) <- c("Tube", "Manntitol (mL)","Destilled water (mL)", "Final mannitol concentration (mol/L)")

# Defining row names
rownames(table_methods) <- NULL

Merk, siden vi ikke har navn på radene i dette eksempelet, så kan vi sette denne til å være NULL. Hvis du ønsker å navngi radene, så fylles denne inn på tilsvarende vis som for colnames()

4.1.3 Tabell print

Før vi kan printe tabellen, så må matrixen omgjøres til å være i et tabell-format. Vi bruker funksjonen as_tibble() for å gjøre om matrixen til en lesbar tabell. En tibble-tabell er både modulerbar og mye brukt i R.

I neste steg henter vi opp en pakke fra knitr som heter kabel. Denne kan printe ut en fin tabell i Rmarkdown. Her definerer vi tabellteksten vår under caption. Vi har også definert at vi ikke har rad navn (row.names=FALSE) og at all tekst skal stå sentrert (align = “c”).

# Combine the above input as a table
table_methods <- as_tibble(table_methods)

# Creating the visual output
knitr::kable(table_methods, caption = "Tabel 1: Her kan du beskrive hva denne tabellen inneholder.", row.names = FALSE, align = "c")


Slik vil hele tabell-oppsettet se ut:

# Filling in the table
table_methods <- matrix( c(
                "P1", 0, 10, 0.00,
                "P2", 3, 7 , 0.15,
                "P3", 4, 6 , 0.20,
                "P4", 5, 5 , 0.25,
                "P5", 6, 4 , 0.30,
                "P6", 7, 3 , 0.35,
                "P7", 8, 2 , 0.40,
                "P8", 9, 1 , 0.45,
                "P9", 10,0 , 0.50), ncol=4, byrow=TRUE)

# Defining column names
colnames(table_methods) <- c("Tube", "Manntitol (mL)","Destilled water (mL)", "Final mannitol concentration (mol/L)")

# Defining row names
rownames(table_methods) <- NULL

# Combine the above input as a table
table_methods <- as_tibble(table_methods)

# Creating the visual output
knitr::kable(table_methods, caption = "Tabel 1: Her kan du beskrive hva denne tabellen inneholder.", row.names = FALSE, align = "c")

4.2 Legge til bilde

Hvis du ønsker å legge til et bilde i rapporten så kan du enkelt gjøre dette med å bruke kommandoen under:

![Figur X: Dette er en potet](Bilder/potet.png){width=100%}


Figur X: Dette er en potet

  • Inni klammeformen [] skriver man figurtektsen.
  • Inni parantesen () spesifiseres filstien til bildet.
    • I eksempelet over har vi lagt et potetbilde (potato.png) som ligger i mappen Bilder. Denne mappen og bilde må være plasser på samme sted på datamaskinen som prosjektfilen du arbeider i.
  • Størrelsen på bildet kan justeres opp eller ned med {width=100%}.

Merk, bilde-kommandoen legges direkte i teksten og ikke i en code-chunk.


4.2.1 Flere bilder

Det er også mulig å legge til flere bilder etterhverandre, men vær OBS på at vi her mangler figur-annotering per bilde! Dette må eventuelt legges inn i bildet på forhånd eller så kan du legge til disse gjennom R ved å følge stegene i neste seksjon (4.2.2).


![](Bilder/Spire.jpg){width=20%} ![](Bilder/Spire2.jpg){width=22%} ![](Bilder/Blomst.jpg){width=29%}

Figur X: Dette er en spire som blomstrer


Figur X: Dette er en spire som blomstrer

4.2.2 Flere bilder inkludert annotering

For å legge til figur-annotering i R må man installere og bruke to pakker som heter cowplot og patchwork:


install.packages("cowplot")
ELLER
remotes::install_github("wilkelab/cowplot")


OG


install.packages("patchwork")


Med disse pakkene kan hvert bilde få en annotering med for eksempel A, B, C (…). Dette gjør det veldig enkelt å kunne referere til riktig bilde i figurteksten. Nedenfor har hvert bilde fått en annotering oppe i venstre hjørne med A, B og C:
Blomster vekst kort tidsinterval

Figure 1: Blomster vekst kort tidsinterval


Vi kan også legge til enda flere bilder, nummerere dem, endre farge på annoteringen og gjøre annoteringen større:
Blomster vekst langt tidsinterval

Figure 2: Blomster vekst langt tidsinterval


Laste inn pakkene

Vi må starte med å laste inn nødvendige pakker for å kunne sette inn bilder på denne måten i R.

library(tidyverse)
library(cowplot)
library(patchwork)

Merk, legg gjerne til message=FALSE, warning=FALSE i chunck setup for å unngå at det kommer opp synlige meldinger i dokumentet etter at det knittes:
{r, message=FALSE, warning=FALSE}


Laste inn bildene

Neste steg er å laste inn de bildene en ønsker å bruke og lagre dem i hver sitt objekt som vi her kaller “img1”, “img2” “img3”. Fil-lokasjonen til bildene må ligge i samme mappe som prosjektfilen du arbeider i. Her har vi hentet opp bildene blomst 1,2 og 3 i en mappe som heter Bilder. Har du flere bilder repeterer du bare linjene nedenfor og gir nye objekt-navn (img4, img5, img6…).

img1 <- file.path("Bilder/blomst1.png")
img2 <- file.path("Bilder/blomst2.jpg")
img3 <- file.path("Bilder/blomst3.jpeg")


Tomt område

Neste steg er å lage et tomt “område” hvor vi skal sette inn bildene og vi bruker plottefunksjonen til dette:

p <- ggplot() + 
  theme(panel.background = element_blank())


Lese inn bildene

Deretter må vi bruke ggdraw for at R skal lese inn bildet riktig. Har du flere bilder legger du til flere tilsvarende linjer og gir nye objektnavn (p4, p5, p6…). Det er også mulig å skalere hvert enkelt bilde med å sette inn scale=1, hvor 1 er orginal størrelse på bildet. Hvis vi for eksempel ønsker å øke størrelsen til et av bildene kan vi øke scale=1.4 eller vi kan minke størrelsen ved å skrive scale=0.8.

p1 <- ggdraw(p) + draw_image(img1, scale=1)

p2 <- ggdraw(p) + draw_image(img2)

p3 <- ggdraw(p) + draw_image(img3)


Sette inn bildene

Nå kan vi legge inn bildene i den rekkefølgen man ønsker og plotte dem. Her bruker vi to symboler + (pluss) og / (skråstrek). Pluss-tegnet vil sette bildene ved siden av hverandre og skråstreken vil plassere bildet under det forrige.


Så for å plassere tre bilder ved siden av hverandre skriver vi p1+p2+p3 og slår dette sammen med funksjonen plot_annotation():

bildene <- p1+p2+p3 

bildene + plot_annotation(tag_levels = "A")

Merk, plot annotation er i eksempelet over satt til å være tag_levels = "A" som betyr at vi ønsker alfabetisk annotering (A,B,C,D…). Vi kan bytte om og skrive tag_levels = "1" hvis man heller ønsker at det skal være numerisk annotering (1,2,3,4…) på bildene.


Endre på annoteringen

Hvis man ønsker å endre på farge eller størrelse på annoteringene så må vi legge til funksjonen theme og kan her legge til color="red" og endre skriftstørrelse med size=24. Det er mange farger å velge mellom, og du finner en oversikt over disser her

bildene <- p1+p2+p3

bildene + plot_annotation(tag_levels = "1") &
  theme(plot.tag = element_text(color = "red", size=24))


Mange bilder (3x3)

Hvis du ønsker å legge til flere bilder under hverandre, så er det viktig å bruke paranteser for å fortelle R hvor man ønsker å plassere bildene og med hvilke bilder man vil plassere dem sammen med, Hvis vi f. eks. ønsker å lage det samme bilde-plottet som vist i Figur 2, så må vi si at (p1+p2+p3) skal være sammen og under disse (/) skal (p4+p5+p6) være og under disse (/) skal (p7+p8+p9) være.

bildene <- (p1+p2+p3) / (p4+p5+p6) / (p7+p8+p9)
bildene + plot_annotation(tag_levels = "1") &
  theme(plot.tag = element_text(color = "red", size=24))

4.3 Lage grafer

Hvis man ønsker å representere dataene sine i form av et plot (linjediagram, søylediagram, boksplott etc.), så finnes det mange måter å gjøre dette gjennom å bruke ggplot. Husk at ggplot ligger under pakken tidyverse, så du trenger bare å laste inn library(tidyverse) om du ønsker å bruke denne pakken.



  • For å lage et søylediagram, så følger du samme stegene som i lenken ovenfor, men bytter ut geom_point og geom_line med geom_bar().


  • For å lage et boksplot, så følger du samme stegene som i lenken ovenfor, men bytter ut geom_point og geom_line med geom_boxplot().

5 Diskusjon

I denne seksjonen skal du tolke resultatene. Er det noe overraskende, uforventet eller rart med dataene? Har du en forklaring for det? Her kan du gi din mening. Husk å linke informasjonen fra introduksjonen til diskusjonen og linke argumenter til forskningslitteratur.

Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

6 Referanser

I denne delen skal du oppgi referanser og kilder som du har brukt i teksten til rapporten. Det er mulig å bruke en funksjon i R som heter citr som vil hjelpe deg å enkelt sette inn referanser og som vil automatisk generere en referanseliste når man knitter dokumentet.

Du finner en detaljert beskrivelse av hvordan man bruker denne funksjonen i mikrobiologi-delen ved å klikke her.


Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

7 Tilleggsmateriale

Hvis man har resultater som man ikke viser i resultat-delen, så kan man gjerne supplementere disse i denne seksjonen (Appendix/Supplementary). Dette kan være f. eks. en tabell eller figur.

8 Skriv ut rapporten

Når rapporten din er ferdig, så er det bare å trykke på knappen Knit (Figur 3). Hvis alt er korrekt, så åpnes rapporten i et nytt vindu. Les gjennom dokumentet. Finner du noe feil, så kan du gå tilbake til malen og rette det.

_Trykke på knit._

Figure 3: Trykke på knit.


Hvis det ligger noen feil i koden din, skal fanen R Markdown (ved siden av Console) vise feilmelding istedenfor å skrive ut rapporten. Les feilmeldingen, rett feilen(e), og trykk på Knit igjen.


Liker du rapporten din akkurat som den er, så trykker du på Open in Browser øverst i vinduet. Rapporten åpnes da i nettleseren din. Trykk på CTRL + P (⌘ + P) for å skrive ut rapporten. Du kan f. eks. skrive den ut i pdf-format. Den er klar til innlevering.

_Lagre som PDF._

Figure 4: Lagre som PDF.