私もしばらくの間、これについて困惑してきました。ggvis() データ内にあるTOOLTIP情報しか取得できないようです。したがって、ggvis(~wt, ~mp) があれば、ツールチップに wt と mp を表示できます。ggvis(~wt, ~mpg, fill= ~long) がある場合、ツールチップに wt, mp , long を表示できます。または、layer_.....(fill = ~long ,stroke = ~name, strokeWidth := 0) のデータ。(行名から ~name を作成しました) 視覚的な影響を避けるために、ストロークと凡例を抑制する必要があります: hide_legend("stroke") %>%
私が見つけることができる限り、ggvisはツールチップに表示される情報の量を内容に制限しています(非常に理解できます)
ドキュメントを見ると:
***Usage***
ggvis(data = NULL, ..., env = parent.frame())
***Arguments***
data A data object.
... Property mappings. If not named, the first two mappings are taken to be x and y.
Common properties are x, y, stroke, fill, opacity, shape
env Environment in which to evaluate properties.
したがって、x、y、ストローク、塗りつぶし、不透明度、形状、キー (一意の値である必要があります)、テキスト、フォント、フォントサイズなど、または layer_..... プロパティのいずれかにあるものを追加できます。
プロットでは使用されていないが、 TOOLTIPでのみ使用可能なデータフレーム データを ggplot に追加できればいいと思います。方法が見つかったら、ここにも投稿します
この方法で(前の例に基づいて)ツールチップにのみ表示される非表示の名前情報を追加しました。
mtc <- reactive({
if(length(input$n)>0){
data = mtcars[1:input$n, ]
data$long = as.character(paste0("A car with ",data$cyl," cylinders and ",data$gear," gears and ",data$carb, " carburators"))
data$name <- rownames(data)
data %>%
ggvis(~wt, ~mpg) %>%
layer_points(fill = ~long ,stroke = ~name, strokeWidth := 0) %>%
hide_legend("stroke") %>%
add_tooltip(function(dataT){
paste0("Car: ",dataT$name, "<br>", "Wt: ", dataT$wt, "<br>",
"Mpg: ",as.character(dataT$mpg), "<br>", "String: ", as.character(dataT$long))
}, "hover") %>%
bind_shiny("plot", "plot_ui")
data
}
})
より優れた、より安定したソリューションの提案は大歓迎です! ;^)
OK、私はggvisプロットにないツールチップにすべてのデータを表示する方法を見つけました:
キーはユニークです!!! TOOLTIPに表示するデータと情報を返す別のデータセットとggvis()外の関数へのリンク。
コードを次のように変更しました。
mtc <- reactive({
if(length(input$n)>0){
data = mtcars[1:input$n, ]
data$long = as.character(paste0("A car with ",data$cyl," cylinders and ",data$gear," gears and ",data$carb, " carburators"))
data$name <- rownames(data)
all_values <- function(x) {
if(is.null(x)) return(NULL)
row <- data[data$name == x$name, ]
paste0(names(row), ": ", format(row), collapse = "<br />")
}
data %>%
ggvis(~wt, ~mpg, key := ~name) %>%
layer_points(fill = ~long) %>%
add_tooltip(all_values, "hover") %>%
# add_tooltip(function(dataT){
# paste0("Car: ",dataT$name, "<br>", "Wt: ", dataT$wt, "<br>", "Mpg: ",as.character(dataT$mpg), "<br>", "String: ", as.character(dataT$long))
# }, "hover") %>%
bind_shiny("plot", "plot_ui")
data
}
})
このようにして、ツールチップ情報をあらゆる方法で変更できます。

そして、次のように 2 つを組み合わせることができる場合 (ホバー -> 概要情報 && クリック -> すべての情報) を TOP にします。
mtc <- reactive({
if(length(input$n)>0){
data = mtcars[1:input$n, ]
data$long = as.character(paste0("A car with ",data$cyl," cylinders and ",data$gear," gears and ",data$carb, " carburators"))
data$name <- rownames(data)
all_values <- function(x) {
if(is.null(x)) return(NULL)
row <- data[data$name == x$name, ]
paste0(names(row), ": ", format(row), collapse = "<br />")
}
data %>%
ggvis(~wt, ~mpg, key := ~name) %>%
layer_points(fill = ~long) %>%
add_tooltip(all_values, "click") %>%
add_tooltip(function(dataT){
paste0("Car: ",dataT$name, "<br>", "Wt: ", dataT$wt, "<br>", "Mpg: ",as.character(dataT$mpg), "<br>", "String: ", as.character(dataT$long))
}, "hover") %>%
bind_shiny("plot", "plot_ui")
data
}
})
完成するだけです!
さらに完全にするために->ツールチップは文字列としてのHTMLコードです->したがって、表示したいHTMLページを作成できます。ポイントを離れるとすぐに消えてしまうので、ポイントすることはできません。(ただし、ホバー アクションを補足する (たとえば、ページをリダイレクトする) ために、同じポイントでクリック アクションを実行できます。)
ツールチップ内の画像の最後の短い例:
add_tooltip(function(img){'<img src="pic_mountain.jpg" alt="Mountain View" style="width:100px;height:100px;">'}, "hover") %>%
(長い回答で申し訳ありません)