除了更改边距之外,有没有办法在轴标签和轴刻度标签之间设置间距?
示例图:
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000'))
Run Code Online (Sandbox Code Playgroud)
如上面的示例图中,y轴的标题是该轴的重叠刻度标签.有没有办法在它们之间设置间距?
增加左边距,因为@Codutie在他的回答中建议只在某种程度上有所帮助(至少在Plotly v4.7.1 +中).左侧150像素边距的大部分是浪费的空间,如下面的屏幕截图所示:

用于生成上述图的R代码(来自@Codutie):
library(plotly)
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000')) %>%
layout(margin = list(l = 150, r = 20, b = 10, t = 10))
Run Code Online (Sandbox Code Playgroud)
由于Plotly的目标是响应,它会自动进行大量的布局缩放 - 这通常是一件好事恕我直言,因为你不必为了得到一个可呈现的图表而过分捣乱.当然,Plotly自动缩放的结果并不总是完美的或者你想要实现的结果,这就是为什么有很多专用(布局)属性让你操纵你的情节的某些方面.遗憾的是,没有属性来设置轴标签与轴本身(或轴刻度标签)之间的距离.
相反,您可以依靠以下解决方法通过设置适当的y轴标题字符串来操纵轴与其标签之间的距离:
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000')) %>%
layout(margin = list(l = 150, r = 20, b = 10, t = 10),
yaxis = list(title = paste0(c(rep(" ", 20),
"Gross horsepower",
rep(" ", 20),
rep("\n ", 3)),
collapse = "")))
Run Code Online (Sandbox Code Playgroud)
y轴标题组件的说明:
rep("\n ", 3):这是增加距离的技巧的主要部分 - 只是将实际标题("Gross horsepower")添加到换行符和不间断空格的后缀.rep(" ", 20):这是一个额外的措施,以确保Plotly的自动缩放不会再次干扰 - 将实际标题包装在40个非破坏空间中(当然可以更多/更少).否则,一旦地块高度变得足够大以"物理上"允许它,文本总马力将被放置在两个轴刻度之间 - 这将有助于我们尝试手动设置距离,因为我们将不得不使用更大的换行符-non-breaking-space-combo再次实现相同的距离 - 更重要的是 - 距离取决于绘图高度.在上面的图中,这并不是必需的,因为有多少y轴刻度,你需要显示高度超过1000px的图以达到该临界点.小智 5
使用standoff选项
library(plotly)
y <- list(
title = list(text="Y Axis",standoff=20)
)
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000'))%>%layout(yaxis=y)
Run Code Online (Sandbox Code Playgroud)
您可以尝试通过将边距添加到图表中来修改边距,如下所示:
m <- list(l=150, r=20, b=10, t=10) # l = left; r = right; t = top; b = bottom
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000')) %>% layout(margin=m)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助?