使用 R 绘制分类数据图

发布于 2024-11-03 12:00:50 字数 255 浏览 4 评论 0原文

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

我希望绘制如图底部所示的图,其中包含蛋白质的名称左边的实验名称和高、中、低类别分别用红色、蓝色和绿色表示。

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

提前致谢

I've a list of protein names(P1,P2,...,Pn) and they are categorized to three different expression levels High(H), medium(M) and Low(L) as measured in three experimental conditions (Exp1,Exp2, and Exp3).
enter image description here

I wish to make a plot as shown in the bottom part of the figure, with the name of the proteins at the left and name of experiments along the top and high, medium and low categories are indicated by Red,blue and green respectively.

I'm new to R, I would much appreciate any help.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神仙妹妹 2024-11-10 12:00:50

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

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) 转换为 (蓝色,红色,绿色)...但还有其他文档。

You can create a file with data formatted like this (tab delimited):

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

And used the following commands to grab and plot them:

mat <- read.table(file.choose(),header=T) # read the file into memory

attach(mat) # map the header names to variable names

plot(pv~exp,col=val) # plot the categories against each other and use val (H,M,L) as the color array. R will assign those values to colors on its own. You can also create a color array using the val array to translate (H,M,L) to (Blue,Red,Green)... but there is other documentation out there for that.

极致的悲 2024-11-10 12:00:50

这是一种使用 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 参数Factor() 通知 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("")

Here is an approach that uses some of the magic of the ggplot2 and reshape2 packages.

First, recreate the data in the format you described:

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"))

Next, load the add-on packages:

library(reshape2)
library(ggplot2)

Then, use melt() to convert your data from wide format to tall format. The id variable is "P", and we tell the function to rename the "variable" to "Exp":

mdf <- melt(df, id.vars="P", variable="Exp")

Because L - M - H has semantic order, we use the ordered parameter of factor() to inform R of this order:

mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)

Finally, we are ready to plot your data:

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

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文