Граф решеток в решетке: изменение точек и шкалы х
Я пытаюсь построить график Треллиса с помощью решетки, но я не могу сделать это, как я хочу. Мне нравится, как это выглядит до сих пор, и мне просто нужна помощь в настройке, чтобы она выглядела именно так, как я хочу. Я дам вам данные, которые я пытаюсь построить, код R, который я использую, график, который я получаю, и, наконец, график, который я хотел бы сделать.
1. Вот данные: CSV-файл
2. Вот мой код R:
Infection<-read.table("stack.csv", header=TRUE, sep=",")
attach(Infection)
head(Infection)
Infection.st<-stack(Infection[,2:13])
head(Infection.st)
Infection.st[,"gene"]<-Infection[,1]
head(Infection.st)
summary(Infection.st$ind)
Infection.st$ind<-factor(Infection.st$ind, levels=c("Disease.12h", "Control.12h", "Disease.4d", "Control.4d",
"Disease.3h", "Control.3h", "Disease.24h", "Control.24h",
"Disease.48h", "Control.48h", "Disease.72h", "Control.72h"))
summary(Infection.st$ind)
xyplot(values~ind|gene, xlab = NULL,layout=c(7,16), main="Gene Expression after infection", auto.key=list(columns = 6, cex = .8),
pch = 21, cex = .7, scales = list(x = list(draw = FALSE)), data=Infection.st, group=ind)
3) Вот график, который я получаю: https: //dl.dropboxusercontent.com/u/62277598/Stack.pdf (убрать пробел после двоеточия)
4) Наконец, график, который я хочу, будет выглядеть так: Желаемый график
Теперь я хотел бы получить следующие вещи на моем графике, как вы можете видеть на моей ручной картине:
а) каждый момент времени с разными символами, но болезнь пуста и контроль заполнен (тот же цвет в порядке). Другой вариант состоит в том, чтобы иметь разные типы предметов для каждой точки и варьировать цвет для болезни и контроля (например, красный и зеленый).
б) изменить масштаб оси х. Поскольку это данные временных рядов, было бы неплохо представить их. Однако это не совсем точно. Например, просто промежуток между 12 часами и 4 днями, затем меньше места через 4 дня. Было бы хорошо, чтобы болезнь и контрольный образец были закрыты в каждый момент времени.
в) наконец, было бы здорово, если бы я мог изменить масштаб. Есть некоторые гены с низкой экспрессией, и я просто рисую это на новом графике. Я думал, чтобы отсортировать выражение по 4 дням, а затем положить гены сгруппированы по уровню экспрессии.
PS: у меня нет 10 репутации, чтобы публиковать более двух ссылок или изображений. Спасибо за ваше время.
1 ответ
Я задал этот вопрос некоторое время назад. Вот решение. Единственное, что я не сделал, это изменил расстояние между точками времени. Это на самом деле не нужно.
library("latticeExtra")
library("scales")
#Command sets the working directory
setwd("/your-directory")
OR<-read.table("stack.csv", header=TRUE, sep=",")
attach(OR)
head(OR)
OR.st<-stack(OR[,2:13])
head(OR.st)
OR.st[,"gene"]<-OR[,1]
head(OR.st)
summary(OR.st$ind)
OR.st$ind<-factor(OR.st$ind, levels=c("Disease-12h", "Disease-4d", "Control-4d", "Disease-3h", "Control-3h", "Disease-24h","Control-24h", "Disease-48h", "Control-48h", "Disease-72h","Control-72h")
summary(OR.st$ind)
#comand to make symbols for each time point
supsym <- trellis.par.get("superpose.symbol")
supsym$col <- c("gold","gold","coral","coral","green","green","red","red","blueviolet","blueviolet","cornflowerblue","cornflowerblue","azure4", "azure4") #this is the line around the symbol
supsym$fill <- c("gold","gold","coral","coral","green","green","red","red","blueviolet","blueviolet","cornflowerblue","cornflowerblue","azure4", "azure4") #this is the color to fill the symbols
supsym$pch <- c(15,19,23, 24, 15,19,15,19,15,19,15,19,15,19,15,19) #here is where you can change the type of symbol you are using
supsym$cex <- c(.8,.8,.8,.7,.8,.8,.8,.8,.8,.8,.8,.8,.8,.8,.8,.8,.8) #here you can change the size of each symbol
trellis.par.set("superpose.symbol",supsym)
colors()
options(scipen=10)
options(digits=10)
#below is just setting the color of each panel headings
bgColors <- c("gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44",
"gray44", "gray80", "gray44", "gray80", "gray44")
txtColors <- c("white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white",
"white", "black", "white", "black", "white")
# Create a function to be passes to "strip=" argument of xyplot
myStripStyle <- function(which.panel, factor.levels, ...) {
panel.rect(0, 0, 1, 1,
col = bgColors[which.panel],
border = 1)
panel.text(x = 0.5, y = 0.5,
font=2,
lab = factor.levels[which.panel],
col = txtColors[which.panel])
}
print(xyplot(values~ind|Gene,groups=ind,data=OR.st,
layout=c(5,7),as.table=TRUE,
type="p",
par.strip.text=list(custBgCol=bgColors,
custTxtCol=txtColors),
strip=myStripStyle,
auto.key=list(text=c("Disease-12h", "Disease-4d", "Control-4d", "Disease-3h",
"Control-3h", "Disease-24h","Control-24h", "Disease-48h", "Control-48h", "Disease-72h","Control-72h"),
space="bottom", columns=7, pch=8, cex=.8),
relation="same",
#use relation="sliced", to have same scales across panels
#scales = list(x = list(draw = FALSE),y=list(log=TRUE)),
scales = list(x = list(draw = FALSE, abbreviate = FALSE), y = list(log = 10)),
yscale.components = yscale.components.log10ticks,
#aspect = "y",
#scales=list(alternating=FALSE),
#between=.5,#space between
main="Gene Expression after Infection",
#ylim=c(0,1000),#this changes the y limits
xlab="",
ylab=expression('RPKMs')))
Дайте знать, если у вас появятся вопросы.