我正在绘制条形图几何图形,在其上方分层放置一个点几何图形,如下所示:
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上时,都会弹出工具提示。如何使工具提示仅在条形图上重叠时才弹出?
答案 0 :(得分: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的文档在结构和全面性方面始终令人讨厌。找出哪些痕迹是经过反复试验的,但其中蕴含着乐趣。
答案 1 :(得分:1)
要扩展@MokeEire的答案,请使用style()
函数并将其应用于特定的迹线即可。我绝对不知道如何确定哪些迹线编号了。
这是一种按顺序打印出轨迹的方法,描述了它们映射到的几何类型(需要listviewer
和jsonlite
)。
使用Titanic数据设置一个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"
您知道条形图是第一和第二迹线,标签(“散布”)是3d。
因此要删除标签的工具提示(不要浪费一个小时像我一样忘记R是1索引的):
ggplotly(p, tooltip = c("text")) %>%
style(hoverinfo = "none", traces = 3)