0

大きなデータフレーム (以下の同様の小さな例) があり、image() を使用してマトリックスに値を表示したいと考えています。まず、右側の列1から始まり、右から左に列をプロットしていますが、左側の列1から左から右にプロットしたいと思います。

次に、行 1 と 2 の $taxid が同じで、行 3 と 4 の $taxid が同じであることを示す「カラー ストリップ」をプロットに追加したいと思います。ヒートマップの「ColSideColors」に似ています。

助言がありますか?

ありがとうございました

df<-data.frame(taxid=c("A","A","B","B"),c2=c(1,2,3,4),c3=c(3,4,5,6))
nr<-dim(df)[1]
nc<-dim(df)[2]
z<-as.matrix(log(df[,2:3]))
image(x=1:nc, y=1:nr, z=t(z), axes=FALSE, frame.plot=TRUE)

さて、私は今、カラーチップ用の「スキニー」バープロットを作成しようと決めました. ただし、棒グラフを「積み重ねる」わけではありません (ただし、高さはベクトルで、beside=FALSE です。したがって、レイアウトを使用してそれらを組み合わせると、十分な大きさのマージンがないと文句を言います。

バープロットの積み重ねに関するヘルプ、またはその他のより洗練されたソリューション。ありがとう

layout(matrix(c(1,2),1,2,byrow=FALSE),heights=c(1,1),widths=c(1,9))
barplot(as.vector(table(df$taxid)),width=0.1,beside=FALSE,col=rainbow(length(table(df$taxid))))
image(x=1:nc, y=1:nr, z=t(z), axes=FALSE, frame.plot=TRUE)
4

1 に答える 1

0

関数を使用しrasterImageて、既存のプロットにカラー バンドを追加できます。

tmp <- as.raster(  rev(c('#00ff00','#0000ff')[df$taxid]) ) 
par(xpd=NA)
rasterImage( tmp, 3, 0.5, 3.1, 4.5, interpolate=FALSE)

rasterImage オプションがない場合は、2 つの画像プロットを重ねることができます。以下では、元の行列に 2 列の NA をx=追加し、右側に小さな空白が追加されるように引数を展開し、4 番目の列 (その他はすべて NA) のみにタクシー情報を含む新しい行列を作成して使用します。同じx=ですがadd=TRUE、古い画像の上に新しい画像プロットを作成します(ただし、以前の空白の領域に色を追加するだけで、それらの値はNAであるため、目的の画像を重ね書きしません)。

z2 <- cbind(z, NA, NA)
image(x=c(1:3,3.05, 3.1), y=1:nr, z=t(z2), axes=FALSE)

z3 <- cbind(NA,NA,NA, as.numeric(df$taxid))
image(x=c(1:3,3.05, 3.1), y=1:nr, z=t(z3), add=TRUE, col=c('#00ff00','#0000ff'))
于 2012-04-19T16:58:38.637 に答える