将包含在输入数据集中但不直接在VIS中的数据添加到ggVIS工具提示 [英] Add data to ggvis tooltip that's contained in the input dataset but not directly in the vis
本文介绍了将包含在输入数据集中但不直接在VIS中的数据添加到ggVIS工具提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的输入数据集:
> names(breakingbad.episodes)
[1] "season" "episode" "epnum" "epid" "title"
[6] "url.trakt" "firstaired.utc" "id.tvdb" "rating" "votes"
[11] "loved" "hated" "overview" "firstaired.posix" "year"
[16] "zrating.season" "src"
对于我的ggvis
,我使用以下变量firstaired.posix
和rating
:
> str(breakingbad.episodes[c("firstaired.posix", "rating")])
'data.frame': 62 obs. of 2 variables:
$ firstaired.posix: POSIXct, format: "2008-01-21 02:00:00" "2008-01-28 02:00:00" "2008-02- 11 02:00:00" ...
$ rating : num 87 85 84 84 83 90 87 85 88 83 ...
我使用包含如下rating
信息的工具提示成功创建了我的ggvis
:
> breakingbad.episodes %>%
ggvis(x = ~firstaired.posix,
y = ~rating,
fill = ~season) %>%
layer_points() %>%
add_axis("x", title = "Airdate") %>%
add_axis("y", title = "Rating") %>%
add_legend("fill", title = "Season") %>%
add_tooltip(function(data){paste0("Rating: ", data$rating)}, "hover")
但我实际上希望工具提示包含更多数据,比如epid
变量,所以我尝试了:
…
add_tooltip(function(data){paste0("Rating: ", data$rating, "
", "Epid: ", as.character(data$epid))}, "hover")
…使用as.character()
是因为epid
是有序因子-但工具提示部分为空。(我还注意到我打算
插入的换行符丢失了,但这是另一个问题)。
ggvis
而创建的vis
对象不包含我想要显示的信息,至少这就是我通过查看第一个示例中的str()
的输出来收集信息的原因。
编辑:我解决了换行符问题,因此不需要向我指出?add_tooltip
-完全忘记了这一点。
编辑:公认的答案是工作得很好,尽管它不允许我在工具提示中放置任意变量,但这几乎就是我的用例所需要的,谢谢! 下面是我最后做的事情:
breakingbad.episodes <- transform(breakingbad.episodes, id = paste0(epid, " - ", title))
breakingbad.episodes %>%
ggvis(x = ~firstaired.posix,
y = ~rating,
fill = ~season,
key := ~id) %>%
layer_points() %>%
add_axis("x", title = "Airdate") %>%
add_axis("y", title = "Rating") %>%
add_legend("fill", title = "Season") %>%
add_tooltip(all_values, "click")
推荐答案
是的,这是可能的。通常,客户端只发回绘图中实际存在的数据列。要获得其他列,您应该使用一个键来索引原始数据:这是一个简单的可重现示例
library(ggvis)
mtc <- mtcars
mtc$id <- 1:nrow(mtc)
all_values <- function(x) {
if(is.null(x)) return(NULL)
row <- mtc[mtc$id == x$id, ]
paste0(names(row), ": ", format(row), collapse = "<br />")
}
mtc %>% ggvis(x = ~wt, y = ~mpg, key := ~id) %>%
layer_points() %>%
add_tooltip(all_values, "hover")
这篇关于将包含在输入数据集中但不直接在VIS中的数据添加到ggVIS工具提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文