
蛋白组学分析,请问使用r语言如何做出这张图,想了很久实在想不出来,谢谢
关注引自免费微信小程序:皆我百晓生
在R语言中,要完成这样的蛋白组学数据分析并绘制散点图,您可以按照以下步骤进行操作:
首先,假设您的蛋白表达数据存储在一个名为protein_expression的数据框中,其中包含两列:一列是蛋白的唯一标识符(比如UniProt ID),另一列是对应的平均表达水平。我们先构造一个示例数据:
# 假设有一个类似这样的数据框:
protein_expression <- data.frame(
Protein = c("P05213", "Q9CRD4", "Q5SX19", "Q6KAQ7", "Zzz3035492",
"Clk3", "O8BLD6", "Ankrd55", "Tuba1b", "PODP26",
"Calm1", "P16858", "Gapdh", "P56480", "Dpysl2"),
Mean_Expression = c(15, 15, 5, 5, 0, 0, 2000, 4000, 30, 5,
5, 5, 5, 5, 5)
)
# 按照平均表达量排序
protein_expression <- protein_expression[order(protein_expression$Mean_Expression), ]
# 绘制散点图,并标记出平均表达量最高和最低的5个蛋白
library(ggplot2)
ggplot(protein_expression, aes(x = reorder(Protein, Mean_Expression), y = Mean_Expression)) +
geom_point(size = 3, color = "steelblue") +
scale_x_discrete() +
labs(x = "Protein", y = "Average Expression Value",
title = "Average Protein Expression Across the Entire Cohort") +
# 添加灰色和黄色方框以突出显示范围
geom_rect(aes xmin = min(which(head(sort(protein_expression$Mean_Expression), 5)), na.rm = TRUE) - 0.5,
xmax = max(which(head(sort(protein_expression$Mean_Expression), 5)), na.rm = TRUE) + 0.5,
ymin = min(protein_expression$Mean_Expression[head(order(protein_expression$Mean_Expression), 5)]),
ymax = max(protein_expression$Mean_Expression[head(order(protein_expression$Mean_Expression), 5)]) + 100,
fill = "grey80", alpha = 0.5) +
geom_rect(aes(xmin = min(which(tail(sort(protein_expression$Mean_Expression), 5)), na.rm = TRUE) - 0.5,
xmax = max(which(tail(sort(protein_expression$Mean_Expression), 5)), na.rm = TRUE) + 0.5,
ymin = min(protein_expression$Mean_Expression[tail(order(protein_expression$Mean_Expression), 5)]),
ymax = max(protein_expression$Mean_Expression[tail(order(protein_expression$Mean_Expression), 5)]) + 100,
fill = "yellow", alpha = 0.5)) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# 注意:由于R绘图时索引是从1开始的,所以需要减去0.5来确保框正确覆盖在相应蛋白上
上述代码首先对数据进行了排序,然后使用ggplot2包创建散点图,并利用geom_rect函数添加了两个矩形框来分别标注平均表达量最低和最高的前5个蛋白。请注意,这里的坐标轴标签、颜色、透明度以及矩形框的位置大小可能需要根据实际数据调整。如果您的数据集中有缺失值或异常值,还需要适当处理。
同时,如果你的数据不是有序的或者格式不同,请先确保数据整理正确后再进行上述操作。