# Install packages
if (!requireNamespace("ggrepel", quietly = TRUE)) {
install.packages("ggrepel")
}if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}if (!requireNamespace("RColorBrewer", quietly = TRUE)) {
install.packages("RColorBrewer")
}
# Load packages
library(ggrepel)
library(ggplot2)
library(RColorBrewer)
Gene Ranking Dotplot
Gene expression ranking visualization.
Setup
System Requirements: Cross-platform (Linux/MacOS/Windows)
Programming language: R
Dependent packages:
ggrepel
;ggplot2
;RColorBrewer
Data Preparation
# Load data
<- read.delim("files/Hiplot/061-gene-rank-data.txt", header = T)
data
# Convert data structure
## ordered by log2FoldChange and pvalue
<- data[order(-data$log2FC, data$pvalue), ]
data ## add the rank column
$rank <- 1:nrow(data)
data## get the top n up and down gene for labeling
<- 5
top_n <- rownames(head(data, top_n))
top_n_up <- rownames(tail(data, top_n))
top_n_down <- c(top_n_up, top_n_down)
genes_to_label <- data[genes_to_label, ]
data2
# View data
head(data)
gene log2FC pvalue rank
514 LOC91370 3.889820 8.478310e-03 1
293 LRRC25 3.492413 5.000000e-05 2
470 BEGAIN 3.312996 3.347634e-03 3
159 RDM1P5 3.125070 1.538852e-02 4
194 CLDN1 3.096516 2.622163e-02 5
626 KCNS1 2.949729 2.770000e-09 6
Visualization
# Gene Ranking Dotplot
<-
p ggplot(data, aes(rank, log2FC, color = pvalue, size = abs(log2FC))) +
geom_point() +
scale_color_gradientn(colours = colorRampPalette(brewer.pal(11,'RdYlBu'))(100)) +
geom_hline(yintercept = c(-1, 1), linetype = 2, size = 0.3) +
geom_hline(yintercept = 0, linetype = 1, size = 0.5) +
geom_vline(xintercept = median(data$rank), linetype = 2, size = 0.3) +
geom_text_repel(data = data2, aes(rank, log2FC, label = gene),
size = 3, color = "red") +
xlab("") + ylab("") +
ylim(c(-max(abs(data$log2FC)), max(abs(data$log2FC)))) +
labs(color = "Pvalue", size = "Log2FoldChange") +
theme_bw(base_size = 12) +
theme(text = element_text(family = "Arial"),
plot.title = element_text(size = 12,hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
axis.text.x = element_text(angle = 0, hjust = 0.5,vjust = 1),
legend.position = "right",
legend.direction = "vertical",
legend.title = element_text(size = 10),
legend.text = element_text(size = 10))
p
