簡體   English   中英

使用R的分類數據圖

[英]Plot of categorical data using R

我有一個蛋白質名稱列表(P1,P2,...,Pn),它們分為三個不同的表達水平高(H),中(M)和低(L),在三個實驗條件下測量(Exp1 ,Exp2和Exp3)。 在此輸入圖像描述

我想制作一個如圖的底部所示的圖,左邊是蛋白質的名稱,頂部和高,中,低類別的實驗名稱分別用紅色,藍色和綠色表示。

我是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)轉換為(藍色,紅色,綠色)......但是還有其他文檔。

這是一種使用ggplot2reshape2包的一些魔力的方法。

首先,以您描述的格式重新創建數據:

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

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM