1

Lattice で Trellis グラフを作成しようとしていますが、思うように作成できません。今のところ見た目は気に入っていますが、希望どおりに見えるように調整するのに少し助けが必要です. プロットしようとしているデータ、使用している 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
) 最後に、私が望むグラフは次のようになります :私の手作りの写真でわかるように、グラフで次のことを取得したいと思います: a) 各時点で異なるシンボルが表示されますが、疾患は空で、コントロールは塗りつぶされています (同じ色で問題ありません)。もう 1 つのオプションは、ポイントごとに異なる種類のアイテムを用意し、病気とコントロールの色を変えることです (たとえば、赤と緑)。


b) x 軸のスケールを変更します。時系列データなので、それを表すといいですね。ただし、正確ではありません。たとえば、12 時間と 4 日間の間のスペースだけで、4 日後にスペースが小さくなります。各時点で病気とコントロールのサンプルが近くにあるとよいでしょう。
c) 最後に、スケールを変更できれば素晴らしいと思います。発現が低い遺伝子がいくつかあり、それを新しいグラフにプロットしています。発現を4日ごとにソートしてから、遺伝子を発現レベルでグループ化することを考えました。
PS: 2 つ以上のリンクまたは画像を投稿するという評判はありません。御時間ありがとうございます。

4

1 に答える 1

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

ご不明な点がございましたら、お知らせください。

于 2014-09-18T14:59:13.607 に答える