Я тоже некоторое время ломал голову над этим. Похоже, вы можете получить информацию TOOLTIP только из данных ggvis(). Итак, если у вас есть ggvis(~wt, ~mp), вы можете показать wt и mp во всплывающей подсказке. Если у вас есть ggvis(~wt, ~mpg, fill= ~long), вы можете показать wt, mp, long во всплывающей подсказке. Или данные, находящиеся в слое_.....(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_......
Было бы неплохо, если бы можно было добавить в ggplot данные фрейма данных, которые не используются на графике, но доступны только в TOOLTIP. Если я найду способ, я тоже опубликую это здесь
Я добавил невидимую информацию NAME, видимую только во всплывающей подсказке, таким образом (на основе предыдущего примера):
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
}
})
Предложения по лучшему и более стабильному решению более чем приветствуются! ;^)
ОК, я нашел способ показать все данные во всплывающей подсказке, которых нет на графике ggvis: (см. также: Добавить данные во всплывающую подсказку ggvis, которые содержатся во входном наборе данных, но не непосредственно в vis )
Ключ уникальный!!! ссылку на другой набор данных и функцию вне ggvis(), которая возвращает данные и информацию для отображения в TOOLTIP.
Я изменил свой код на:
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
}
})
Таким образом, вы можете изменить информацию всплывающей подсказки любым удобным для вас способом!
![введите здесь описание изображения](https://i.stack.imgur.com/BN6ig.jpg)
И к ТОП-вещам, если вы можете объединить два (Hover -> сводная информация && Click -> ALL info) следующим образом:
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") %>%
(Извините за длинный ответ)
person
irJvV
schedule
05.08.2015