2301_79183655 2024-04-23 21:34 采纳率: 25%
浏览 9
已结题

r语言蛋白组学相关问题

img


蛋白组学分析,请问使用r语言如何做出这张图,想了很久实在想不出来,谢谢

  • 写回答

12条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-23 21:45
    关注

    引自免费微信小程序:皆我百晓生

    在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个蛋白。请注意,这里的坐标轴标签、颜色、透明度以及矩形框的位置大小可能需要根据实际数据调整。如果您的数据集中有缺失值或异常值,还需要适当处理。

    同时,如果你的数据不是有序的或者格式不同,请先确保数据整理正确后再进行上述操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 赞助了问题酬金15元 4月23日
  • 创建了问题 4月23日