2016-12-11 7 views
0

私はCRANパッケージの改訂に取り組んでいます。私はMac上でエラーを引き起こすような1つの関数呼び出しを持っています。 CRAN上のr-release-osx-x86_64-mavericksでエラーが発生しました。私はEl CapitanとMavericksでそれを走らせました。また、これらのMac版の両方で同じエラーが発生しました。 CRAN(solaris、linux、windows)でチェックされた他のすべてのシステムはエラーを起こさなかった。ggplotly geom_textとgeom_segmentのツールチップ。 Macで動作しません

私は以下のように関数呼び出しのMWEを作成しました(データを作成するのは残念です)。基本的には、3つのデータフレーム使用ggplot2図の作成を開始する(edgeDFを - すべての非経路は、nodeDFエッジ - すべての非経路ノード、pathDF - 関心のあるパスのエッジとノード):

set.seed(1) 
label=c() 
for (i in 1:10){ 
    label[i] = paste(sample(letters,sample(3:10, 1),replace=TRUE),collapse='') 
} 
nodeDF = data.frame(label = label, x = runif(10,0,10), y = runif(10,0,10)) 

edgeDF = data.frame() 
edgeDF = rbind(edgeDF, c(x=nodeDF[1,]$x, xend=nodeDF[1,]$y, y=nodeDF[2,]$x, yend=nodeDF[2,]$y)) 
edgeDF = rbind(edgeDF, c(x=nodeDF[5,]$x, xend=nodeDF[5,]$y, y=nodeDF[6,]$x, yend=nodeDF[6,]$y)) 
colnames(edgeDF) = c("x","y","xend","yend") 

r1=runif(1,0,10) 
r2=runif(1,0,10) 
r3=runif(1,0,10) 
r4=runif(1,0,10) 

label=c() 
for (i in 1:3){ 
    label[i] = paste(sample(letters,sample(3:10, 1),replace=TRUE),collapse='') 
} 
xend = c(r1, r2, runif(1,0,10)) 
xstart = c(runif(1,0,10), r1, r2) 
yend = c(r3, r4, runif(1,0,10)) 
ystart = c(runif(1,0,10), r3, r4) 

pathDF = data.frame(label=label,xstart=xstart,ystart=ystart,xend=xend,yend=yend,x=xstart,y=ystart) 

edgeCol="gray84" 
pathEdgeCol="seagreen" 
nodeCol="black" 

plotTotalImage = ggplot2::ggplot(data = nodeDF, ggplot2::aes(x = x, y = y)) + 
    ggplot2::geom_segment(data = edgeDF, ggplot2::aes(x=x, y=y, xend=xend, yend=yend), colour = edgeCol) + 
    ggplot2::geom_segment(data = pathDF, ggplot2::aes(x=xstart, y=ystart, xend=xend, yend=yend), colour = pathEdgeCol) + 
    ggplot2::geom_text(data = nodeDF, ggplot2::aes(x = x, y = y, label = label), colour = nodeCol) 

plotTotalImage = plotTotalImage + ggplot2::geom_text(data = pathDF,ggplot2::aes(x = x, y = y, label = label), fontface= "bold") 

I呼び出しますgeom_segmentを使用してエッジを作成します(灰色の線はパスから外れ、緑色の線はパス上にあります)。私はノードラベルを作成するためにgeom_textを呼び出します(太字でないものはオフパス、太字はパス上にあります)。これにより、静止画が正常に作成されます。

この時点で、プロットしてプロットに対話性を追加したいと思います。私は情報がセグメントのために動かないようにしたい。私は、情報がノードラベルのために欲しいだけです。マウスがノードラベル上を移動すると、x値とラベル名が表示されます。

Windows上で意図したとおりに、次のコードは動作します:

animatePlotTotalImage <- plotly::plotly_build(plotly::ggplotly(plotTotalImage, tooltip = c("x", "label"))) 
animatePlotTotalImage$data[[1]]$hoverinfo <- "none" 
animatePlotTotalImage$data[[2]]$hoverinfo <- "none" 
animatePlotTotalImage$data[[3]]$hoverinfo <- c("x+text") 
animatePlotTotalImage$data[[4]]$hoverinfo <- c("x+text") 
animatePlotTotalImage 

しかし、Mac上で、それは次のようなエラーになり:

Error in `*tmp*`[[2]] : subscript out of bounds 

私はこの問題を解決について移動する方法がわからないと思います。どんなアイデアや提案も大歓迎です!

答えて

2

私が間違っているかもしれないが、私はあなたが$xがあなたの文から欠落していると思う:

これは私の作品(MACシエラ):

animatePlotTotalImage <- plotly::plotly_build(plotly::ggplotly(plotTotalImage, tooltip = c("x", "label"))) 
animatePlotTotalImage$x$data[[1]]$hoverinfo <- "none" 
animatePlotTotalImage$x$data[[2]]$hoverinfo <- "none" 
animatePlotTotalImage$x$data[[3]]$hoverinfo <- c("x+text") 
animatePlotTotalImage$x$data[[4]]$hoverinfo <- c("x+text") 
+0

おかげ@Mlavoie!それは動作するようです!私はまた、バージョン1.2のtibbleを必要とするかもしれないことに気がつきました。 – luckButtered

関連する問題