# START of SCRIPT
library(ggplot2)
# Protein Concentrations
prot <- c(0.000, 0.016, 0.031, 0.063, 0.125, 0.250, 0.500, 1.000,
0.000, 0.016, 0.031, 0.063, 0.125, 0.250, 0.500, 1.000)
# Absorbance from my protein assay
abs <- c(0.329, 0.352, 0.349, 0.379, 0.417, 0.491, 0.668, 0.956,
0.327, 0.341, 0.355, 0.383, 0.417, 0.446, 0.655, 0.905)
# Convert into data.frame to plot with ggplot
data <- as.data.frame(prot)
data$abs <- abs
#Calculate the line using the linear model function
line <- lm(abs~prot)
#Equation of a line y = mx + c
#In our case abs = slope * prot + intercept
# ukn.prot = (abs - intercept)/slope
int <- summary(line)$coefficients[1]
slope <- summary(line)$coefficients[2]
#now calculate some unknown protein concs from absorbances
#put the unknowns into a vector
abs.ukns <- c(0.554, 0.568, 0.705)
#rearrange the equation of the line to ukn.prot = (abs - intercept)/slope
prot.ukns <- (abs.ukns - int)/slope
# create the object with the graph in it.
p <- ggplot(data=data, # specify the data frame with data
aes(x=prot, y=abs)) + # specify the x and y for the graph
geom_point() + # make a scatter plot
stat_smooth(method = "lm") + # add a linear model line
xlab("[Protein] (microg/ml)") + # label x-axis
ylab("Absorbance (570nm)") + # label y-axis
ggtitle("Protein Assay 20th April 2015") + # add a title
theme_bw() + # a simple theme
expand_limits(y=c(0.25,1)) + # customise the y-axis
annotate(geom="text", x=0.85, y= 0.6, label="Abs Prot", color="red")
#put the answers on the graph
for (i in 1:length(abs.ukns)){
p <- p + annotate(geom="text", x = 0.8, y = (0.6 - i/20), label=abs.ukns[i])
p <- p + annotate(geom="text", x = 0.92, y = (0.6 - i/20), label=round(prot.ukns[i], 3))
}
p # show us the graph...
# END OF SCRIPT
I’m really amazed with your posting skills as well as with the layout on your blog site. Very informative and well written post! Quite interesting and nice topic chosen for the post Nice Post keep it up.Excellent post.
ReplyDeleteexample of assay