我有一个蛋白质名称列表(P1,P2,...,Pn),它们分为三个不同的表达水平高(H),中(M)和低(L)三个实验测量条件(Exp1,Exp2和Exp3)。
我希望制作如图底部所示的图,左边是蛋白质的名称,顶部和高,中,低类别的实验名称用红色,蓝色和绿色表示分别
我是R的新手,我非常感谢任何帮助。
提前致谢
答案 0 :(得分: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
使用以下命令抓取并绘制它们:
mat <- read.table(file.choose(),header=T)
#将文件读入内存
attach(mat)
#将标题名称映射到变量名称
plot(pv~exp,col=val)
#将类别相互绘制,并使用val (H,M,L)
作为颜色数组。 R将自己将这些值分配给颜色。您还可以使用val数组创建一个颜色数组,以将(H,M,L)转换为(蓝色,红色,绿色)......但是还有其他文档可用于此。
答案 1 :(得分:5)
这是一种使用ggplot2
和reshape2
软件包的神奇功能的方法。
首先,以您描述的格式重新创建数据:
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"))
接下来,加载附加软件包:
library(reshape2)
library(ggplot2)
然后,使用melt()
将您的数据从宽格式转换为高格式。 id变量是“P”,我们告诉函数将“变量”重命名为“Exp”:
mdf <- melt(df, id.vars="P", variable="Exp")
因为L - M - H具有语义顺序,我们使用ordered
的{{1}}参数来告知R这个顺序:
factor()
最后,我们准备绘制您的数据:
mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)