包装长轴标签

4
我希望为类别添加包装标签。Plotly在我想要换行的地方显示空格。当字符串变得太长时,它只会以45度角显示它们。
 plot_ly(x =c("this\nand\nthat\nand\nall\nof\nthe\nthings",
 "the\nother\nstring\nthat\nmakes\nthis\nway\ntoo\nlong"), 
 y = c(1,2), name = "testing",type = "bar")

我正在使用Shiny/R。
1个回答

6

我建议先将数据框中的字符串进行包装。因此,如果您的数据框是

df <- data.frame(x = c("this\nand\nthat\nand\nall\nof\nthe\nthings",
                       "the\nother\nstring\nthat\nmakes\nthis\nway\ntoo\nlong"), 
                 y = c(1, 2))

然后在一些合理的间隔处使用HTML换行符将字符串包裹起来。
df$wrappedx <- sapply(df$x, 
                      FUN = function(x) {paste(strwrap(x, width = 16), collapse = "<br>")})

然后使用该列。您可能需要增加底部的边距(以像素为单位)。

plot_ly(data = df, 
        x = wrappedx,
        y = y,
        name = "testing",
        type = "bar") %>%
    layout(margin = list(b = 70))

总结一下,HTML中字符串中的\n会被忽略,所以换行要用<br>

总之,在HTML中,字符串中的\n会被忽略,因此换行符是<br>。太好了!我已经制作了一个字符串切割器,所以只需将<br>替换即可。 - hedgedandlevered
1
边距的增加也是有帮助的!虽然我建议将其设置为图表中最长标签的函数,而不是一个常数。 通过一些实验,至少对于 Courier New、等宽字体来说,公式是 (5/4 * 字号 * 最大文本行数) 像素。 - hedgedandlevered
制作边距大小函数的想法不错。我相信我会发现它很有用。 - mal

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