我有一个蛋白质名称(P1,P2,...,Pn)的列表,它们被分为三个不同的表达水平高(H),中(M)和低(L),在三个实验条件(Exp1,Exp2和Exp3)中测量。
我想在图的下部画一张图,左边是蛋白质的名称,上边是实验的名称,高、中、低三类分别以红、蓝、绿表示。
我是R的新手,如果能帮上忙我会很感激。
提前感谢
发布于 2011-04-23 07:27:41
您可以创建一个数据格式为(制表符分隔)的文件:
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)转换为(Blue,Red,Green)...但是,还有其他文档可以说明这一点。
发布于 2011-04-24 23:39:53
这里有一种方法,它使用了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具有语义顺序,所以我们使用factor()
的ordered
参数来通知R此顺序:
mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)
最后,我们准备绘制您的数据:
ggplot(mdf, aes(x=Exp, y=P, colour=value)) +
geom_point(size=3) +
scale_colour_manual(value=c("red", "green", "blue")) +
xlab("") +
ylab("")
https://stackoverflow.com/questions/5760765
复制相似问题