首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R绘制分类数据图

使用R绘制分类数据图
EN

Stack Overflow用户
提问于 2011-04-23 06:44:16
回答 2查看 12.2K关注 0票数 5

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

我想在图的下部画一张图,左边是蛋白质的名称,上边是实验的名称,高、中、低三类分别以红、蓝、绿表示。

我是R的新手,如果能帮上忙我会很感激。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-23 07:27:41

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

代码语言:javascript
运行
复制
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)...但是,还有其他文档可以说明这一点。

票数 7
EN

Stack Overflow用户

发布于 2011-04-24 23:39:53

这里有一种方法,它使用了ggplot2reshape2包的一些魔力。

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

代码语言:javascript
运行
复制
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"))

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

代码语言:javascript
运行
复制
library(reshape2)
library(ggplot2)

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

代码语言:javascript
运行
复制
mdf <- melt(df, id.vars="P", variable="Exp")

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

代码语言:javascript
运行
复制
mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)

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

代码语言:javascript
运行
复制
ggplot(mdf, aes(x=Exp, y=P, colour=value)) + 
    geom_point(size=3) + 
    scale_colour_manual(value=c("red", "green", "blue")) +
    xlab("") + 
    ylab("")

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5760765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档