Rで以下(MATLABで生成)のような画像を作ろうとしています。
「グリッド」に長方形を1つずつ追加し、0から1の強度を持つマトリックスに従って各長方形の背景を設定する必要があるため、ggplotを使用する必要があります。現在、すべてのデータフレームがあります長方形 (密度属性) と長方形の境界 (上、左、右、下、上.左など) の強度。以下のデータフレーム定義で参照されるすべての変数を定義する完全な R スクリプトへのリンクは、ここにあります (編集版): http://pastebin.com/JUUmnTSq。
g <- ggplot()
df <- data.frame(
x = c(1:somPEs),
y = c(1:somPEs),
density = hm2/max(hm2),
tops = fence_edges[,1],
bottoms = fence_edges[,2],
lefts = fence_edges[,3],
rights = fence_edges[,4],
top.lefts = fence_diagonals[,1],
top.rights = fence_diagonals[,2],
bottom.lefts = fence_diagonals[,3],
bottom.rights = fence_diagonals[,4]
)
ggplot() +
geom_rect() + <- the redscaled rectangles
geom_segment() + <-- the grayscaled borders on the rectangles
geom_line() <-- the green scatter plots connected by lines
「top.lefts、top.rights」などは対角の「ピクセル」値であることに注意してください。基本的に、これはニューラル ネットワークの教師なし学習の自己組織化マップのビジュアルです。基本的に、データフレーム情報を使用して、ggplot の geom_*() メソッドに入力する方法がまったくわかりません。
誰でも私がこれを行うのを手伝ってもらえますか? Ggplot をマスターするのは非常に難しく、通常の rect()、plot()、segments() 関数などを使用して同じプロットに四角形を追加する方法がわかりません。
ご協力いただきありがとうございます。
更新: これまでの私の進捗状況は、以下の「テーマ」と「ファセット」の役立つ名前の削除に基づいています。基本的に今欲しいのは、指定した強度に基づいて境界線を陰影付けする機能だけです。何か案は?
# Plot
require(ggplot2)
mxW = max(max(max(w)));
deltax = 1/inputPEs;
hm2 <- as.vector(matrix(hm, byrow=TRUE))
it=1;
# Reshape w to a 3D matrix of dimension: c(sqrt(somPEs), sqrt(somPEs), inputPEs)
dim(w) <- c(sqrt(somPEs), sqrt(somPEs), inputPEs)
w <- aperm(w, c(2, 1, 3))
df <- data.frame(
somPEs = c(1:somPEs),
xp = do.call(rbind, replicate(6, cbind(matrix(0, nrow=sqrt(somPEs)),
t(sapply(rep(1,sqrt(somPEs)), function(i) seq(-1+i+deltax,i-
deltax,deltax)))), simplify=FALSE)),
yp = sapply(c(1:sqrt(somPEs)), function(i) 0.2+0.8*w[i,1:sqrt(somPEs),]/mxW),
density = hm2/max(hm2),
tops = fence_edges[,1],
bottoms = fence_edges[,2],
lefts = fence_edges[,3],
rights = fence_edges[,4],
top.lefts = fence_diagonals[,1],
top.rights = fence_diagonals[,2],
bottom.lefts = fence_diagonals[,3],
bottom.rights = fence_diagonals[,4]
)
ggplot() + geom_rect(data=df,aes(xmin=0,xmax=1,ymin=0,ymax=1,fill=density)) +
geom_line(data=df, aes(x=c(xp.1, xp.2, xp.3, xp.4, xp.5, xp.6),
y=c(yp.1, yp.2, yp.3, yp.4, yp.5, yp.6)), colour="green") +
facet_wrap( ~ somPEs, ncol=sqrt(somPEs)) +
scale_x_continuous(limits = c(0, 1)) + scale_y_continuous(limits = c(0,1))