Участок категориальных данных с использованием R - PullRequest
5 голосов
/ 23 апреля 2011

У меня есть список названий белков (P1, P2, ..., Pn), и они подразделяются на три разных уровня экспрессии: высокий (H), средний (M) и низкий (L), измеренные в трех экспериментальныхусловия (Exp1, Exp2 и Exp3).enter image description here

Я хочу построить график, как показано в нижней части рисунка, с названием белков слева и названием экспериментов по верхним и верхним, средним и низким категориям.красным, синим и зеленым соответственно.

Я новичок в R, я был бы очень признателен за любую помощь.

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 23 апреля 2011

Вы можете создать файл с данными, отформатированными следующим образом (с разделителями табуляции):

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) в (синий, красный, зеленый) ... но для этого есть другая документация.

5 голосов
/ 24 апреля 2011

Вот подход, использующий магию пакетов 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 имеет семантический порядок, мы используем параметр 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("")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...