ggplot和绘图轴边距不会改变

ggplot和绘图轴边距不会改变

我在使用ggplotly周围的ggplot阻止y轴文本与刻度线重叠时遇到问题。我怎样才能解决这个问题?我尝试了以下代码:

r - R:ggplot和绘图轴边距不会改变-LMLPHP

set.seed(395)
df1<- data.frame(CO2= c(cumsum(rnorm(1*36)), cumsum(rnorm(1*36))),
                  Group= rep(c("A","B"), each=36),
                  Segment=rep(seq(1,12),each=36))

plot<-ggplot(df1, aes(CO2, fill = Group)) +
           geom_density(alpha = 0.8)+
           facet_wrap(~ Segment)+
           theme_bw()+
           labs(x="CO2", y="density")
#Shouldn't the following work?
    pb <- plotly_build(plot)
    pb$layout$margin$l <- 200
    pb$layout$margin$b <- 100
    pb

最佳答案

让我们使用来自here的简单可重现示例。

library(gapminder)
library(plotly)
p <- ggplot(gapminder, aes(x=gdpPercap, y=lifeExp)) + geom_point() + scale_x_log10()
p <- p + aes(color=continent) + facet_wrap(~year)
gp <- ggplotly(p)


r - R:ggplot和绘图轴边距不会改变-LMLPHP

我们可以按照MLavoie的建议移动margins调节器,但是轴图例也会移动。

gp %>% layout(margin = list(l = 75))


r - R:ggplot和绘图轴边距不会改变-LMLPHP

轴标签实际上不是标签,而是注释,因此让我们先将其移动。您可以在图gp中查询注释的结构:

# find the annotation you want to move
str(gp[['x']][['layout']][['annotations']])

List of 15
 $ :List of 13
  ..$ text          : chr "gdpPercap"
  ..$ x             : num 0.5
  ..$ y             : num -0.0294
  ..$ showarrow     : logi FALSE
  ..$ ax            : num 0
  ..$ ay            : num 0
  ..$ font          :List of 3
  .. ..$ color : chr "rgba(0,0,0,1)"
  .. ..$ family: chr ""
  .. ..$ size  : num 14.6
  ..$ xref          : chr "paper"
  ..$ yref          : chr "paper"
  ..$ textangle     : num 0
  ..$ xanchor       : chr "center"
  ..$ yanchor       : chr "top"
  ..$ annotationType: chr "axis"
 $ :List of 13
  ..$ text          : chr "lifeExp"
  ..$ x             : num -0.0346
  ..$ y             : num 0.5
.... <truncated>


好的,因此注释存储在15个列表中。 “ lifeExp”是此列表的第二个([[2]])元素。在这种情况下,“ x”([['x']])和“ y”值分别控制左,右/上和下的移动。

# Check current x-location of x-axis label
gp[['x']][['layout']][['annotations']][[2]][['x']]
[1] -0.03459532

# Move the label further to the left
gp[['x']][['layout']][['annotations']][[2]][['x']] <- -0.1
gp %>% layout(margin = list(l = 75))


r - R:ggplot和绘图轴边距不会改变-LMLPHP

关于r - R:ggplot和绘图轴边距不会改变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42763280/

10-12 23:25