6

使用しているスカラーベクトルグラフィックプログラム(inkscape)で編集するのがそれほど難しくない単純化されたヒートマップをプロットしたいと思います。以下で作成された元のヒートマップには多くの長方形が含まれています。出力pdfファイルを簡略化するために、それらをさまざまなセクターでマージできるかどうか疑問に思います。

nentries=100000
ci=rainbow(nentries)
set.seed=1
mean=10
## Generate some data (4 factors)
i = data.frame(
  a=round(abs(rnorm(nentries,mean-2))),
  b=round(abs(rnorm(nentries,mean-1))),
  c=round(abs(rnorm(nentries,mean+1))),
  d=round(abs(rnorm(nentries,mean+2)))
  )
minvalue = 10
# Discretise values to 1 or 0
m0 = matrix(as.numeric(i>minvalue),nrow=nrow(i))
# Remove rows with all zeros
m = m0[rowSums(m0)>0,]
# Reorder with 1,1,1,1 on top
ms =m[order(as.vector(m %*% matrix(2^((ncol(m)-1):0),ncol=1)), decreasing=TRUE),]
rowci = rainbow(nrow(ms))
colci = rainbow(ncol(ms))

colnames(ms)=LETTERS[1:4]
limits=c(which(!duplicated(ms)),nrow(ms))
l=length(limits)
toname=round((limits[-l]+ limits[-1])/2)
freq=(limits[-1]-limits[-l])/nrow(ms)

rn=rep("", nrow(ms))
for(i in toname) rn[i]=paste(colnames(ms)[which(ms[i,]==1)],collapse="")
rn[toname]=paste(rn[toname], ": ", sprintf( "%.5f", freq ), "%")

heatmap(ms,
        Rowv=NA,
        labRow=rn,
        keep.dendro = FALSE,
        col=c("black","red"),
        RowSideColors=rowci,
        ColSideColors=colci,
        )

dev.copy2pdf(file="/tmp/file.pdf")
4

3 に答える 3

1

RSvgDeviceを試してみませんか?これを使用すると、画像をsvgファイルとして保存できます。これは、PDFよりもInkscapeに非常に便利です。

于 2013-02-18T11:44:01.907 に答える
1

私はCairosvgを生成するためにパッケージを使用します。信じられないほど簡単です。これは、例にあるものよりもはるかに単純なプロットです。

require(Cairo)
CairoSVG(file = "tmp.svg", width = 6, height = 6)
plot(1:10)
dev.off()

Inkscapeで開くと、要素のグループ化を解除して、好きなように編集できます。

例(ポイントを移動、スワールを追加):

ここに画像の説明を入力してください

于 2013-02-25T16:52:56.030 に答える
0

私たち(インターネット)はこれについて十分に明確になっていないと思います。

成功したエクスポートの例から始めましょう

png("heatmap.png") #Ruby dev's think of this as kind of like opening a `File.open("asdfsd") do |f|` block
heatmap(sample_matrix, Rowv=NA, Colv=NA, col=terrain.colors(256), scale="column", margins=c(5,10))
dev.off()

私の考えでは、このdev.off()ビットは、rubyブロックまたはメソッドの呼び出しを思い出させます。endつまり、「ネストされた」または囲まれた(との間の)コードの出力の最後の行がpng()pngdev.off()ファイルにダンプされます。

たとえば、次のコードを実行した場合:

png("heatmap4.png")
heatmap(sample_matrix, Rowv=NA, Colv=NA, col=terrain.colors(32), scale="column", margins=c(5,15))
heatmap(sample_matrix, Rowv=NA, Colv=NA, col=greenred(32), scale="column", margins=c(5,15))
dev.off()

これは、rubyメソッドがデフォルトで最後の行を返すのと同じように、2番目の(緑がかった配色、テストしたばかりの)ヒートマップをheatmap4.pngファイルに出力します。

于 2013-03-24T05:00:19.000 に答える