我有一份蛋白质名称列表(P1,P2... Pn),它们按照在三种实验条件(Exp1、Exp2 和 Exp3)下的不同表达水平分为三类:高(H)、中(M)和低(L)。
我希望创建一个绘图,类似于页面底部的图片,左侧显示蛋白质名称,顶部显示实验名称,并用红色、蓝色和绿色表示高、中和低级别。
我是R新手,非常感谢任何帮助。
提前致谢!
我希望创建一个绘图,类似于页面底部的图片,左侧显示蛋白质名称,顶部显示实验名称,并用红色、蓝色和绿色表示高、中和低级别。
我是R新手,非常感谢任何帮助。
提前致谢!
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)翻译为(蓝色,红色,绿色)...但是有其他文档可以参考。
这里提供一种使用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”,我们告诉函数将“variable”重命名为“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("")