ggplotly - 仅在某些几何对象上返回工具提示悬停文本

Posted

技术标签:

【中文标题】ggplotly - 仅在某些几何对象上返回工具提示悬停文本【英文标题】:ggplotly - only return tooltip hover text on certain geom objects 【发布时间】:2018-12-02 22:26:21 【问题描述】:

我正在绘制一个条形图 geom,上面有一个点 geom,如下所示:

plot_1 <- ggplot(results, aes(x=date, y = data, question_text=question_text,
                    val1 = val1)) + 
  geom_bar(stat = "identity", position = "dodge", aes(fill = Party)) +
  geom_point(data=results, aes(x=date, y=math*.01), colour="blue", group = 1) 

然后我调用 ggplotly 命令并像这样覆盖工具提示

ggplotly(plot_1, tooltip=c("question_text", "val1"))

但是,这使得每当我将鼠标放在 geom_point 或 geom_bar 上时,都会弹出工具提示。如何使工具提示仅在条形图重叠时弹出?

【问题讨论】:

能否包含结果数据? 【参考方案1】:

我希望你在此期间能解决这个问题,但我遇到了同样的问题,并认为我会帮助到这里的其他人。

对我来说关键是style() 函数。对于上下文,这是我试图制作的情节的简化版本:

p = ggplot(df, aes(x = category, y = total, group = group_level))+
    geom_bar(stat = "identity", position = position_dodge(width = .75))+ # Should probably just be using geom_col here
    geom_text(label = state)

如果不包括下面的样式功能,我会获得看起来有点傻的条形和文本标签的悬停信息。以下允许您选择哪些跟踪具有悬停信息(或根据文档的任何“视觉属性”)

ggplotly(p, tooltip = c("text")) %>%
    style(hoverinfo = "none", traces = c(3, 4))

现在 Plotly 的文档在结构和全面性方面一直都很糟糕。找出哪些痕迹是一些反复试验,但其中的乐趣就在于此。

【讨论】:

谢谢!我一直没弄明白,所以我很感激。【参考方案2】:

要扩展@MokeEire 的答案,使用style() 函数并将其应用于特定跟踪就可以了。不过,我完全不知道如何确定哪些痕迹被编号。

这是一种按顺序打印轨迹的方法,描述它们映射到哪种几何图形(需要 listviewerjsonlite)。

使用泰坦尼克号数据设置 ggplotly 对象:

data(Titanic)
t <- data.frame(Titanic) %>%
  group_by(Class, Sex) %>%
  summarize(Freq = sum(Freq))

plot1 <- ggplot(t, aes(x=Class, y = Freq)) + 
  geom_bar(stat = "identity", position = "dodge", aes(fill = Sex)) +
  geom_text(aes(label=Freq, group=Sex), 
            position = position_dodge(width = 1))

p <- ggplotly(plot1)

打印痕迹:

p_json <- plotly_json(p)

print(paste0(fromJSON(p_json$x$data)$data$type, ": ", 
             fromJSON(p_json$x$data)$data$name))

这会返回类似:

"bar: Male"   "bar: Female" "scatter: NA"

而且您知道您的条形图是第 1 条和第 2 条轨迹,而标签(“散点图”)是 3d。

所以要删除标签的工具提示(不要像我一样浪费一个小时忘记 R 是 1-indexed):

ggplotly(p, tooltip = c("text")) %>%
    style(hoverinfo = "none", traces = 3)

【讨论】:

以上是关于ggplotly - 仅在某些几何对象上返回工具提示悬停文本的主要内容,如果未能解决你的问题,请参考以下文章

R语言与医学统计图形-16ggplot2几何对象之标签与文本

R语言与医学统计图形-15ggplot2几何对象之线图

R语言与医学统计图形-11ggplot2几何对象之散点图

R语言与医学统计图形-12ggplot2几何对象之条图

R语言与医学统计图形-13ggplot2几何对象之盒形图

ggplot2使用初探