2016-05-26 3 views
2

私はRのインタラクティブプロットを探していました。私はインタラクティブプロット、特に散布図を作成するパッケージがいくつかありますが、探していますある機能性。Rのオーバーレイ/ホバーサマリー/ツールチップの対話型散布図

たとえば、this plotです。ボタンの上にマウスを置くと、ポイントの背後にあるデータの小さな数値の要約、つまりツールチップが得られます。

より多くの変数を持つデータセットがある場合、PCAからスコアを探索/視覚化するか、多次元スケーリング(MDS)を行うのが良いことがよくあります。しかし、上記の例のようにインタラクティブな方法でデータをプロットすると、そのポイントを上回るときの要約は、あまりにも多くの情報、すなわち長い数字のリストを与えているわけではない。数値を表示するのではなく、表示するカスタムプロットを生成できる方が良いでしょう。

だから私の質問は次のとおりです。

は、それは1つが散布図にポイントの上に置いたときに視覚的な要約を生成するために、(Rで利用可能なパッケージの一部以内)、可能です。これは、引数としてdata.frameから1行を取るbarplot、またはユーザー指定のプロット関数である可能性があります。

これが可能であれば、MDSの結果をすばやく理解するのに非常に役立ちます。

EDIT:

ここでは、虹彩データセットにMDSを行うためのいくつかのコードである:

library(ggplot2) 
library(plotly) 
d <- dist(iris[,-5]) # euclidean distances between the rows 
fit <- cmdscale(d,eig=TRUE, k=2) # k is the number of dim 

# Put coordinates and original data in one data.frame 
x <- fit$points[,1] 
y <- fit$points[,2] 
pDat <- data.frame(x=x,y=y) 
pDat <- cbind(pDat,iris) 
p <- ggplot(pDat) + geom_point(aes(x,y)) 
ggplotly(p) 

まず、今ツールチップのみのx、y座標を含みます。ツールチップに元の4つの変数の値を格納したいと思います。次に、データポイントの背後にある元の4つの変数の代わりに、ツールチップをバープロットとして表示したいと思います。 MDSはデータポイント間の距離を保存するので、距離が維持されているため、マウスで徐々にマウスを動かすと、バープロットがほとんど変化しません。私の使用例では、各点の後ろに30個の変数があるので、バープロットの要約は30個の数値よりも多くの視覚情報を提供します。

+2

私が考えることができる唯一の解決策は光沢を使用することです。ここに例があります:https://plot.ly/r/shiny-coupled-events/ – royr2

+0

@ royr2ありがとう!これは最初の最初のスタートに似ています。つまり、もう1つの横に表示されるプロット内の各点からの情報を要約できます。誰かがツールチップのソリューションを持っていれば、より流動的なユーザーエクスペリエンスを提供することができます。 – Gumeo

答えて

2

:1点にホバーがどのように見えるとき

library(ggplot2) 
library(plotly) 
p <- ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) + geom_point() 
ggplotly(p) 

情報を表示次

devtools::install_github("bokeh/[email protected]") 

library(rbokeh) 

iris$sw <- paste0(iris$Sepal.Width * 20, "px") 
iris$pw <- paste0(iris$Petal.Width * 20, "px") 
iris$sl <- paste0(iris$Sepal.Length * 20, "px") 
iris$pl <- paste0(iris$Petal.Width * 20, "px") 

style_str <- "white-space: nowrap; border: 1px solid white; background: steelblue; height: 15px;" 

figure() %>% 
    ly_points(x = Sepal.Width, y = Sepal.Length, color = Species, 
    data = iris, hover = glue::glue(" 
<div> 
    <div style='{style_str} width: @sw'>Sepal width</div> 
    <div style='{style_str} width: @pw'>Petal Width</div> 
    <div style='{style_str} width: @sl'>Sepal width</div> 
    <div style='{style_str} width: @pl'>Petal Length</div> 
</div> 
")) 

rbokeh bar chart tooltips

ここで何が起きているのですか?rbokehはツールチップとして任意のhtmlを指定できるようにするため、データ値(@swなどで参照)に従って指定された幅のdivを作成して棒グラフを作成します。

上記の例は、単純な棒グラフではうまくいきますが、任意のイメージをツールチップに表示できるようにするには、各データポイントのラスタイメージを事前に生成し、html tooltip(base64でエンコードされた画像をsrcとして持つimgタグ)。

+0

ありがとう、これは私が探していたものです! – Gumeo

7

RStudioを使用している場合、プロットパッケージは十分に使いやすいはずです。たとえば :あなたはrbokehの最新開発版を使用している場合、あなたはあなたが持つの後にあるものを達成することができます

enter image description here

+0

答えをありがとう。私は少しばかり遊んでいましたが、数字付きのツールチップよりも少し機能が欲しいです。私はユーザー指定のプロット関数として表示される緑色のツールチップボックスを置き換えたいと思います。 – Gumeo

+0

@Gumeoは、ホバリング情報を表示したいものは何ですか?とにかく、https://plot.ly/r/text-and-annotations/を参照し、カスタムホバーテキストの例を参照してください。たぶんそれはあなたが望んだことでしょう。 –

+0

ええ、私はhoverinfoをテキストではなくプロットにします。その点を明確にするために質問を編集しようとします。 – Gumeo