Plotly多行坐标轴标签对齐

4
我正在构建一个Shiny应用程序,其中包含一些Plotly水平条形图。一些数据标签相当长,我想将它们分成多行。当我在想要换行的地方放置<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个回答

1
这并不是很常规,但您可以使用tickvals来调整刻度位置,例如:
ay <- list(
title = "",
zeroline = FALSE,
showline = FALSE,
showticklabels = TRUE,
showgrid = FALSE, 
tickvals = 0:9 + 0.25
)

以上问题的解决方案运行良好!当然,您可以动态构建一个包装器来计算断点数量并动态构建刻度值。感谢KGee指出正确的方向。 - Dendrobates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接