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 å:
Ø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.
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.
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.
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.
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.
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:
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" :)
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.
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 |
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
.
<- matrix( c(
table_methods "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
<- 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) table_methods
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).
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()
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
<- as_tibble(table_methods)
table_methods
# Creating the visual output
::kable(table_methods, caption = "Tabel 1: Her kan du beskrive hva denne tabellen inneholder.", row.names = FALSE, align = "c") knitr
Slik vil hele tabell-oppsettet se ut:
# Filling in the table
<- matrix( c(
table_methods "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
<- as_tibble(table_methods)
table_methods
# Creating the visual output
::kable(table_methods, caption = "Tabel 1: Her kan du beskrive hva denne tabellen inneholder.", row.names = FALSE, align = "c") knitr
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%}
[]
skriver man figurtektsen.()
spesifiseres filstien til bildet.
Bilder
. Denne mappen og bilde må være plasser på samme sted på datamaskinen som prosjektfilen du arbeider i.{width=100%}
.Merk, bilde-kommandoen legges direkte i teksten og ikke i en code-chunk.
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
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")
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}
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…).
<- file.path("Bilder/blomst1.png")
img1 <- file.path("Bilder/blomst2.jpg")
img2 <- file.path("Bilder/blomst3.jpeg") img3
Neste steg er å lage et tomt “område” hvor vi skal sette inn bildene og vi bruker plottefunksjonen til dette:
<- ggplot() +
p theme(panel.background = element_blank())
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
.
<- ggdraw(p) + draw_image(img1, scale=1)
p1
<- ggdraw(p) + draw_image(img2)
p2
<- ggdraw(p) + draw_image(img3) p3
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()
:
<- p1+p2+p3
bildene
+ plot_annotation(tag_levels = "A") bildene
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.
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
<- p1+p2+p3
bildene
+ plot_annotation(tag_levels = "1") &
bildene theme(plot.tag = element_text(color = "red", size=24))
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.
<- (p1+p2+p3) / (p4+p5+p6) / (p7+p8+p9)
bildene + plot_annotation(tag_levels = "1") &
bildene theme(plot.tag = element_text(color = "red", size=24))
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.
geom_bar()
.
geom_boxplot()
.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.
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.
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.
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.
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.