R:以小倍数/子图绘制的纵横比

时间:2018-06-25 20:05:38

标签: r plot plotly r-plotly

我两周前发布了此as an issue on Github。由于显然可以重新发布问题“ if the project maintainers don't respond in a reasonable amount of time”,所以我将在此处发布问题。

我想创建一个宽高比固定的小倍数。但是,只有一些图保留正确的宽高比。从我收集到的信息来看,通过如下方式设置固定的纵横比:layout(yaxis = list(scaleanchor = "x"))。考虑以下示例:

library(purrr)
library(plotly)

df <- data.frame(
  x = rep(1:5,25),
  y = rep(1:5,25),
  g = sort(rep(1:25,5))
)

plots <- df %>%
  split(.$g) %>%
  map(function(x){
    plot_ly(data = x, x = ~x, y = ~y, type = "scatter",mode = "lines") %>% add_lines()
  })

small_multiples <- subplot(plots,nrows = 5) %>%
  layout(yaxis = list(scaleanchor  = "x")) %>%
  hide_legend()

如果我绘制small_multiples,则只有第一个图(第1行,第1列,列)的纵横比为1。另一个图具有任意的纵横比。 enter image description here 这是此图的交互式版本的链接:https://plot.ly/~rata_zhaw/1/

有趣的是,如果我在shareX = T中选择选项subplot(),则整个第一列的纵横比都正确。如果我选择shareY = T,没有任何改变 enter image description here

这是第二个情节的交互式版本的链接:https://plot.ly/~rata_zhaw/3/

如果我分别绘制任何图,则长宽比是正确的:

plots[[10]] %>%
  layout(yaxis = list(scaleanchor  = "x")) %>%
  hide_legend()

1 个答案:

答案 0 :(得分:3)

small_multiples <- subplot(plots,nrows = 5) %>%
  layout(scene = list(aspectration=list(x=1,y=1))) %>%
  hide_legend()

enter image description here