除了更改边距之外,有没有办法在轴标签和轴刻度标签之间设置间距?
示例图:
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000'))
如上面的示例图中,y轴的标题是该轴的重叠刻度标签。有没有办法在它们之间设置间距?
答案 0 :(得分:8)
增加左边距as @Codutie suggests in his answer确实只在某种程度上有所帮助(至少在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))
由于Plotly的目标是响应,它会自动进行大量的布局缩放 - 这通常是一件好事恕我直言,因为你不必为了得到一个可呈现的图表而过分捣乱。当然,Plotly自动缩放的结果并不总是完美的或者你想要实现的结果,这就是为什么there are plenty of dedicated (layout) attributes让你操纵你的情节的某些方面的原因。 不幸的是,没有属性可以设置轴标签与轴本身之间的距离(或轴刻度标签)。
相反,您可以依靠以下解决方法通过设置适当的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 = "")))
y轴标题组件的说明:
rep("\n ", 3)
:这是增加距离的诀窍的主要部分 - 只是用实际标题("Gross horsepower"
)作为换行符和不间断空格的后缀。rep(" ", 20)
:这是确保Plotly的自动缩放不会再次干扰的额外措施 - 将实际标题包含在40个非破坏空间中(当然可以更多/更少)。否则,一旦情节高度变得足够大以“物理上”允许它,文本总马力将被放置在两个轴刻度之间 - 这将有助于我们尝试手动设置距离,因为我们会必须使用更大的换行符 - 非破坏空间组合来再次达到相同的距离 - 更重要的是 - 距离将取决于绘图高度。在上面的图中,这并不是必需的,因为你需要多少y轴刻度才能显示高度超过1000px的图,以达到临界点。答案 1 :(得分:4)
我通常要做的是利用ticksuffix选项,该选项可以在标签后面创建额外的空间。
layout(
xaxis = list(title = "", automargin=T, ticksuffix = "%")
,yaxis = list(title = "", automargin=T, ticksuffix = " ")
)
答案 2 :(得分:4)
使用 standoff
选项
library(plotly)
y <- list(
title = list(text="Y Axis",standoff=20)
)
plot_ly(mtcars, x = ~ wt, y = ~ paste0(hp, '0000'))%>%layout(yaxis=y)
答案 3 :(得分:2)
您可以尝试通过将边距添加到图表来修改边距,如下所示:
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)
希望这有帮助吗?
答案 4 :(得分:0)
我在Python中处理此问题的方法是简单地添加一个换行符,然后添加空格,您实际上可以使用一个空行来创建分隔符。哈克,但它可以工作。您可以在第二行中看到它。
yaxis=go.layout.YAxis(
title_text="<b>Number of Articles<br> </b>",
titlefont=dict(size=12)),
paper_bgcolor="white",
title=go.layout.Title(
xref="paper",
x=0.5
)
之前:
之后: