mirror of
https://github.com/gladstone-institutes/Bioinformatics-Workshops.git
synced 2025-11-30 09:45:43 -08:00
Updated intermediate R data visualization materials
This commit is contained in:
parent
08be3b61c3
commit
0eb7b8b40d
16 changed files with 584 additions and 0 deletions
198
intermediate-r-data-visualization/1. iris.R
Normal file
198
intermediate-r-data-visualization/1. iris.R
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
#Read data in.
|
||||
dat <- read.table("iris.csv", header= TRUE, sep = ",")
|
||||
|
||||
#Plot using 'base' graphics.
|
||||
plot(x = dat$Sepal.Length, y = dat$Petal.Length,
|
||||
xlab = "Sepal Length", ylab = "Petal Length")
|
||||
|
||||
#Install ggplot2.
|
||||
library(ggplot2)
|
||||
|
||||
#Get details of ggplot2 package.
|
||||
library(help = "ggplot2")
|
||||
|
||||
#Plot using qplot.
|
||||
qplot(x = Sepal.Length, y = Petal.Length, data = dat,
|
||||
xlab = "Sepal Length", ylab = "Petal Length")
|
||||
|
||||
qplot(x = Sepal.Length, y = Petal.Length, data = dat,
|
||||
xlab = "Sepal Length", ylab = "Petal Length",
|
||||
color = Species)
|
||||
|
||||
#But the journals charge extra for color figures.
|
||||
#Can we use shapes to distinguish species?
|
||||
qplot(x = Sepal.Length, y = Petal.Length, data = dat,
|
||||
xlab = "Sepal Length", ylab = "Petal Length",
|
||||
shape = Species)
|
||||
|
||||
#Check the boxplots for all species simultaneously.
|
||||
qplot(x = Species, y = Sepal.Length, data = dat, geom = "boxplot",
|
||||
ylab = "Sepal Length")
|
||||
|
||||
|
||||
#----------------------------------------
|
||||
#----------------------------------------
|
||||
#Underlying grammar is not clear. We'll use ggplot2.
|
||||
#Specify what goes on which axis. Specify the data.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length))
|
||||
|
||||
#Add geometrical representation of data.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_point()
|
||||
|
||||
ggplot(data = dat, aes(x = log10(Sepal.Length), y = Petal.Length)) +
|
||||
geom_point()
|
||||
|
||||
#Add axis labels.
|
||||
ggplot(data = dat, aes(x = log10(Sepal.Length), y = Petal.Length)) +
|
||||
geom_point() +
|
||||
xlab("Sepal Length (log10)") +
|
||||
ylab("Petal Length")
|
||||
|
||||
#Explore options with geom_point.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_point(shape =1)
|
||||
|
||||
#Explore options with geom_point.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_point(aes(shape = Species))
|
||||
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, shape = Species)) +
|
||||
geom_point()
|
||||
|
||||
#Explore other geometrical mapping options.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_line()
|
||||
|
||||
#Explore other geometrical mapping options.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_line()
|
||||
|
||||
#Add a trendline to data.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm)
|
||||
|
||||
#Limit the axis.
|
||||
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))
|
||||
|
||||
#Sepcify where the breaks should be.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))+
|
||||
scale_x_continuous(breaks = c(0, 2, 4, 6, 8, 10))
|
||||
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))+
|
||||
scale_x_continuous(breaks = 0:5*2)
|
||||
|
||||
|
||||
#Move legend to top.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))+
|
||||
scale_x_continuous(breaks = 0:5*2)+
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank())+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
|
||||
#Add border to plot.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))+
|
||||
scale_x_continuous(breaks = 0:5*2)+
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
|
||||
#Specifying limits with xlim instead of coord_cartesian.
|
||||
#Note the different behavior.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
xlim(5, 10) + ylim(0, 10)+
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(5, 10), ylim = c(0, 10)) +
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
#----------------------------------------
|
||||
#----------------------------------------
|
||||
#Adjust more theme elements.
|
||||
#Change axis text, axis label, label direction.
|
||||
|
||||
#Make figures for publication.
|
||||
p1 <- ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
|
||||
geom_point(size = 0.5) + geom_smooth(method = lm) +
|
||||
coord_cartesian(xlim = c(4, 8.5), ylim = c(0, 8))+
|
||||
scale_x_continuous(breaks = 0:5*2)+
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
p2 <- ggplot(data= dat, aes(x = Species, y = Sepal.Length)) +
|
||||
geom_boxplot() + ylab("Sepal Length") +
|
||||
theme(panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))
|
||||
|
||||
#Package to arrange figures.
|
||||
library(cowplot)
|
||||
theme_set(theme_grey())
|
||||
|
||||
#Arrange plots.
|
||||
p <- plot_grid(p1, p2, labels = c("a", "b"))
|
||||
|
||||
#Save plot to file.
|
||||
ggsave("Iris.pdf",
|
||||
plot = p,
|
||||
width = 17, height = 8, units = "cm")
|
||||
|
||||
#----------------------
|
||||
#Plots with multiple facet panels.
|
||||
#Facets row wise.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
facet_grid(Species~.)+
|
||||
coord_cartesian(xlim = c(1, 8), ylim = c(1, 8)) +
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
|
||||
|
||||
#Facets column wise.
|
||||
ggplot(data = dat, aes(x = Sepal.Length, y = Petal.Length)) +
|
||||
geom_point() + geom_smooth(method = lm) +
|
||||
facet_grid(.~Species)+
|
||||
coord_cartesian(xlim = c(1, 8), ylim = c(1, 8)) +
|
||||
theme(legend.direction = "horizontal", legend.position = "top",
|
||||
legend.title = element_blank(),
|
||||
panel.border = element_rect(size = c(1,1,1,1), color = "black",
|
||||
fill = NA))+
|
||||
xlab("Sepal Length") +
|
||||
ylab("Petal Length")
|
||||
Loading…
Add table
Add a link
Reference in a new issue