使用R的分类数据图

WoA*_*WoA 5 plot r bioinformatics ggplot2

我有一个蛋白质名称列表(P1,P2,...,Pn),它们分为三个不同的表达水平高(H),中(M)和低(L),在三个实验条件下测量(Exp1 ,Exp2和Exp3). 在此输入图像描述

我想制作一个如图的底部所示的图,左边是蛋白质的名称,顶部和高,中,低类别的实验名称分别用红色,蓝色和绿色表示.

我是R的新手,我非常感谢任何帮助.

提前致谢

小智 7

您可以创建一个文件格式为这样的文件(制表符分隔):

pv   exp  val
1    1    H
2    1    L
3    1    L
4    1    M
1    2    H
2    2    H
3    2    M
4    2    H
1    3    L
2    3    L
3    3    L
4    3    M
Run Code Online (Sandbox Code Playgroud)

并使用以下命令来获取和绘制它们:

mat <- read.table(file.choose(),header=T) #将文件读入内存

attach(mat) #将标题名称映射到变量名称

plot(pv~exp,col=val)#将类别相互绘制并val (H,M,L)用作颜色数组.R将自己将这些值分配给颜色.您还可以使用val数组创建一个颜色数组,将(H,M,L)转换为(蓝色,红色,绿色)......但是还有其他文档.


And*_*rie 5

这是一种使用ggplot2reshape2包的一些魔力的方法.

首先,以您描述的格式重新创建数据:

df <- data.frame(
    P    = paste("P", 1:4, sep=""),
    Exp1 = c("L", "H", "L", "M"),
    Exp2 = c("M", "M", "L", "H"),
    Exp3 = c("H", "L", "L", "M"))
Run Code Online (Sandbox Code Playgroud)

接下来,加载附加软件包:

library(reshape2)
library(ggplot2)
Run Code Online (Sandbox Code Playgroud)

然后,用于melt()将数据从宽格式转换为高格式.id变量是"P",我们告诉函数将"变量"重命名为"Exp":

mdf <- melt(df, id.vars="P", variable="Exp")
Run Code Online (Sandbox Code Playgroud)

因为L - M - H具有语义顺序,我们使用ordered参数factor()来通知该顺序的R:

mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)
Run Code Online (Sandbox Code Playgroud)

最后,我们准备绘制您的数据:

ggplot(mdf, aes(x=Exp, y=P, colour=value)) + 
    geom_point(size=3) + 
    scale_colour_manual(value=c("red", "green", "blue")) +
    xlab("") + 
    ylab("")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述