2017-03-31 1 views
2

차트/브라우저 창의 크기에 따라 툴팁이 표시되지 않는 문제가 있습니다. 이것은 원래 나에게 패싯 차트 문제가있는 것처럼 보였지만 규칙적/단일 차트에서도 그 행동이 분명합니다. 나는 이것을 찾기 위해 많은 일을했으며 지금까지 아무 것도 발견하지 못했습니다. 아직 답변이없는 플롯 포럼과 비슷한 게시물이 있습니다. 여기 낮은 높이 차트의 높은 점에 대한 툴팁이 표시되지 않습니다.

는 작은 충분한 높이로 브라우저 창 크기를 조정하면 유혹 할 때

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") 

당신은 툴팁이 표시되지 않습니다 것을 알 것입니다 ... 하나의 차트 (HT)에 대한 MRE입니다 차트 상단 근처의 타일 문제는 표시되는 툴팁이 너무 커서 표시 위로 가져 가기 위치가 툴팁 상자의 위쪽을 차트의 맨 위에 배치한다는 것입니다. 이런 종류의 문제는 문제가 되더라도 말이됩니다. 그러나이 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)에서 테스트 된 기본 툴팁과 맞춤 툴팁 모두 존재합니다.

나는이 문제와 관련하여 SO에 earlier question posted을 가지고 있지만 분석 결과는 MRE가 아니며 나의 예는 MRE가 아니며 닫고 답변을 드렸습니다.

필자는 문제를 해결하기 위해 툴팁의 줄 수를 줄일 수 있었지만 그렇게하지 않아도됩니다. 이것은 알려진 기능입니까 아니면이 동작에 대한 해결책이 있습니까? 첫 번째 예 enter image description here

파트에 대한 RStudio에서

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

감소 창 크기 :

+0

두 번째 예 : 툴팁은 첫 번째 플롯에서만 작동합니까 아니면 내 특정 환경입니까? –

+0

@ MaximilianPeters 차트의 지오메트리 (사용 가능한 부동산)가 툴팁을 배치 할 수있는 지점에 대해서만 툴팁이 표시됩니다. 툴팁은 차트 가장자리 위로 "떠오르지"않습니다. 환경에서 실행 한 두 번째 (패싯) 예제에서는 플롯의 두 번째 줄에있는면 차트가 첫 번째 줄에 비해 매우 얕고 도구 설명을 표시 할 공간이 부족하다는 것을 알 수 있습니다. – liam

답변

0

하나의 가능성/해결 방법은 hovermode'y'에, 즉 귀하의 예제의 마지막 줄을 변경 설정하는 것입니다 두 번째 예제의 전체 화면 enter image description here

+0

같은 문제가 hovermode를 사용하여 남아 있습니다. 실제로이 예제에서 명백한 것처럼 동작을 더욱 강조합니다. ! [hovermode low y point] (https://github.com/liamcaffrey/svg_tooltip/blob/master/Hovermode_low_point.png) 및![hovermode high y point] (https://github.com/liamcaffrey/svg_tooltip/blob/master/Hovermode_high_point.png). – liam

+0

적어도 뭔가 보여줍니다 :/Plotly 제작자가 요청해야하는 것과 같습니다. –

0

이 동작을 해결하기 위해 볼 수있는 유일한 방법은 톱 팁이 더 이상 1 또는 2 줄 깊이인지 확인하는 것입니다. 처음에는 툴팁의 의도가 무엇인지 생각해보십시오. ! 그것이 내가 함께 갈 것입니다.

"tooltip"에서 td/table이 포함 된 멋지게 형식화 된 툴팁을 만들려고합니다. 어쩌면이 효과를 얻는 다른 방법이 있을까요?

관련 문제