ユーザーがデータポイントをロールオーバーすると、ラベルが表示されるように、私は対話型散布図を作成しています。ただし、特定のデータポイント間にエッジを追加することもできます。Rのラティスパッケージ:インタラクティブな "散布図/ネットワーク"を開発することは可能ですか?
私は、grid、gridSVG、lattice、adegraphicsを含むいくつかのライブラリを使用してインタラクティブな散布図を作成するのに成功しています。以下はMWEです:
library(grid)
library(gridSVG)
library(lattice)
library(adegraphics)
x = rnorm(10)
y = rnorm(10)
dat = data.frame(label = letters[1:10], x, y)
customPanel2 <- function(x, y, ...) {
for (j in 1:nrow(dat)) {
grid.circle(x[j], y[j], r = unit(.5, "mm"),
default.unit = "native",
name = paste("point", j, sep = "."))
}
}
xyplot(y ~ x, panel = customPanel2, xlab = "x variable", ylab=NULL, scales=list(tck = c(1,0), y=list(at=NULL)))
for (i in 1:nrow(dat)) {
grid.text(as.character(dat$label)[i], x = 0.1, y = 0.01, just = c("left", "bottom"), name = paste("label", i, sep = "."), gp = gpar(fontface = "bold.italic"))
}
for (i in 1:nrow(dat)) {
grid.garnish(paste("point", i, sep = "."), onmouseover = paste('highlight("', i, '.1.1")', sep = ""), onmouseout = paste('dim("', i, '.1.1")', sep = ""))
grid.garnish(paste("label", i, sep = "."), visibility = "hidden")
}
grid.script(filename = "aqm.js", inline = TRUE)
grid.export("interactiveScat.svg")
結果の.svgファイルは私が目指していますすべてのものを達成 - 私はまた、特定の非対話型のエッジを追加したいことを除いて。私は、エッジとマッピングする座標を定義した後、adegraphicsライブラリからadeg.panel.edgesメソッドを組み込み、これを実行しようとしました。だから、基本的には前から私たxplot(...)関数が置き換えられ:
edges = matrix(c(1, 2, 3, 2, 4, 1, 3, 4), byrow = TRUE, ncol = 2)
coords <- matrix(c(x[1], y[1], x[2], y[2], x[3], y[3], x[4], y[4]), byrow = TRUE, ncol = 2)
xyplot(y ~ x, panel = function(customPanel2){adeg.panel.edges(edges, coords, lty = 1:4, cex = 5)}, xlab = "x variable", ylab=NULL, scales=list(tck = c(1,0), y=list(at=NULL)))
単に元xyplotから作られたインタラクティブな散布を消去し、単に静的なエッジを出力し、画像を座標と思われます。
私は、(http://finzi.psych.upenn.edu/library/adegraphics/html/adeg.panel.nb.html)に見られるような例に従いました。具体的には、この例:
edges <- matrix(c(1, 2, 3, 2, 4, 1, 3, 4), byrow = TRUE, ncol = 2)
coords <- matrix(c(0, 1, 1, 0, 0, -1, -1, 0), byrow = TRUE, ncol = 2)
xyplot(coords[,2] ~ coords[,1],
panel = function(...){adeg.panel.edges(edges, coords, lty = 1:4, cex = 5)})
私は、サンプルコードを模倣しています特にとして、この問題を解決する方法のように損失のビットをしています。どんな提案も大歓迎です!
でグリッド/格子グラフィックスを使用していないチュートリアルhttp://statnet.csde.washington.edu/workshops/SUNBELT/current/ndtv/ndtv-d3_vignette.html
である私は、今のチュートリアルを介して探しています、ありがとうございます。私は確認することができます:ユーザーがデータポイントをx軸とy軸の特定の位置に制限できますか?私がしようとしているのは、ある意味でエッジを持つ散布図を持つことです(各データポイントには固定のxとyの値があり、グラフには固定されたエッジがあります)。私が望むのは、ユーザーがデータポイントをロールオーバーすると、そのデータポイントに関する情報が印刷されるということだけです。 – luckButtered
頂点/点のx座標とy座標のセット( 'coord'引数で2列の行列)を渡すことは間違いありません。他のインタラクション(ズーム、エッジハイライト)を無効にすることが可能かどうか分かりません – skyebend
ありがとう、私はそれを調べます!私は当分の間持ち続けようとしているので、私は質問を開いたままにしています。特に私の構文がうまくいかなかった理由について、私は特に興味があります。私はちょうどリンクを提供するのではなく、正確なサンプルコードを表示するように編集しました。将来のレスポンダーは私が何をしようとしているのかを見ることができます。再度、感謝します。 – luckButtered