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()
函数并将其应用于特定跟踪就可以了。不过,我完全不知道如何确定哪些痕迹被编号。
这是一种按顺序打印轨迹的方法,描述它们映射到哪种几何图形(需要 listviewer
和 jsonlite
)。
使用泰坦尼克号数据设置 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 - 仅在某些几何对象上返回工具提示悬停文本的主要内容,如果未能解决你的问题,请参考以下文章