2017-09-12 65 views
2

我正在用一些Plotly水平条形图构建一个Shiny应用程序。一些数据标签很长,我想在多行上打破它们。它适用于我想要打破这条线的地方<br>,但轴标签的对齐方式不太合适。看到下面的输出(左)和所需的情节(右)图片。在多条线上绘制轴标签对齐

Plotly output (left) and desired output (right)

低于最小工作示例。它遗漏了Shiny部分,因为我期望这不会影响可能的解决方案。

df <- data.frame(
    name = paste0('This is a pretty long sentence',1:10), 
    dimA = 1:10 
) 

df$name <- gsub('This is a pretty long sentence','This is a<br>pretty long<br>sentence',df$name) 


## Hide axes 
ax <- list(
    title = "", 
    showline = FALSE, 
    showticklabels = FALSE, 
    showgrid = FALSE, 
    domain = list(0.2, 1) 
) 
ay <- list(
    title = "", 
    zeroline = FALSE, 
    showline = FALSE, 
    showticklabels = TRUE, 
    showgrid = FALSE 
) 

p <- df %>% 
    plot_ly(x = ~dimA, 
      y = ~name, 
      type = 'bar', 
      orientation = 'h' 
) %>% 
    layout(xaxis = ax, yaxis = ay) 
p 

帮助非常感谢!与此挣扎几个小时,但无法找到解决方案!

回答

1

这不是很一般,但你可以使用tickvals,例如调整刻度位置:

ay <- list(
title = "", 
zeroline = FALSE, 
showline = FALSE, 
showticklabels = TRUE, 
showgrid = FALSE, 
tickvals = 0:9 + 0.25 
) 
+0

工作正常,上面的问题!你当然可以动态地在它周围构建一个包装,计算中断的数量并动态构造tickvalues。 Thx KGee指向正确的方向。 – Dendrobates