低高度图表上高点的工具提示未显示

时间:2017-03-31 15:18:26

标签: r ggplot2 tooltip plotly

根据图表/浏览器窗口的大小,我没有显示工具提示的问题。这最初看起来像是一个facet图表的问题,但在常规/单个图表上的行为也很明显。我已经做了很多搜索,到目前为止还找不到任何东西。在情节论坛上有一个类似的帖子,目前还没有答案。

以下是单个图表(HT)...

的MRE
require(ggplot2)
require(plotly)

randomName <- function(n) {
    random.string <- rep(NA, n)
    randomizeString <- function(x) {
        a <-sample(letters, 1, replace = TRUE)
        return(a)
    }
    return(paste(c(sapply(random.string, randomizeString, simplify = TRUE)), collapse = ""))
}

xvar = replicate(10, randomName(15))

df1 <- data.frame(x = xvar, y = xvar, z = runif(10) )

df1$tooltip <- sprintf("x: %s<br>y: %s<br>z: %s<br>2x: %s<br>2y: %s<br>2z: %s<br>3x: %s<br>3y: %s<br>3z: %s"
                                        ,df1$x, df1$y, df1$z, df1$x, df1$y, df1$z, df1$x, df1$y, df1$z)

g = ggplot(df1, aes(x,y,fill=z, text = tooltip)) +
        geom_tile()

ggplotly(g, tooltip = "tooltip")

如果您将浏览器窗口的大小调整到足够小的高度,您会注意到将鼠标悬停在图表顶部附近的图块上时不会显示工具提示。问题似乎是工具提示太高而无法显示,因此悬停位置会将工具提示框的顶部放在图表顶部之外。即使有问题,这种情况也很有意义。然而,这个MRE的例子有点做作和不切实际。

此行为在具有大量需要工具提示的构面的构面图上成为真正的问题。这是一个方面图的MRE。即使使用最大化的浏览器窗口,也会出现相同的工具提示问题。

require(ggplot2)
require(plotly)

randomName <- function(n) {
    random.string <- rep(NA, n)
    randomizeString <- function(x) {
        a <-sample(letters, 1, replace = TRUE)
        return(a)
    }
    return(paste(c(sapply(random.string, randomizeString, simplify = TRUE)), collapse = ""))
}

xvar = replicate(10, randomName(15))
facet_var = replicate(12, randomName(2))

df1 <- data.frame(x = xvar, y = xvar, z = runif(10) )
df1 <- merge(x = facet_var, y = df1, by = NULL)

#df1$tooltip <- sprintf("x: %s<br>y: %s<br>z: %s<br>x+x: %s<br>y+y: %s<br>z+z: %s"
df1$tooltip <- sprintf("facet: %s<br>x: %s<br>y: %s<br>z: %s<br>2x: %s<br>2y: %s<br>2z: %s<br>3x: %s<br>3y: %s<br>3z: %s"
                                        ,df1$x.x, df1$x.y, df1$y, df1$z, df1$x.y, df1$y, df1$z, df1$x.y, df1$y, df1$z)

g = ggplot(df1, aes(x.y,y,fill=z, text = tooltip)) +
        geom_tile() +
        facet_wrap(~x.x, ncol=2)

ggplotly(g, tooltip = "tooltip")

此问题同时适用于默认和定制工具提示 - 在Chrome(v56)和Edge(v38)中测试。

关于这个问题我有一个earlier question posted,但是我的分析不合适,我的例子不是MRE,我已经关闭/回答了这个问题。

我可以减少工具提示中的行数以避免问题,但我不想这样做。这是一个已知功能还是有针对此行为的解决方法?

3 个答案:

答案 0 :(得分:1)

我有同样的问题。在布局中添加悬停模式“最近”即可解决该问题。

js:

layout:{...,hovermode:"closest"}

R(基于马克西米利·彼得斯的回答,但未经测试):

gp <- ggplotly(g, tooltip = "tooltip")
gp[['x']][['layout']][['hovermode']]='closest'

答案 1 :(得分:0)

一种可能性/解决方法是将hovermode设置为'y',即将示例的最后一行更改为:

gp <- ggplotly(g, tooltip = "tooltip")
gp[['x']][['layout']][['hovermode']]='y'

第一个示例中缩小了RStudio中的窗口大小 enter image description here

第二个示例的全屏部分。 enter image description here

答案 2 :(得分:0)

我能看到解决这种行为的唯一方法是确保tootip不再是1或2行深,我想,首先是工具提示的意图是什么!这就是我要去的地方。

我希望详细说明&#34;工具提示&#34;有一个包含td / table的格式良好的工具提示。也许有另一种方法来实现这种效果?