R Плотно-сюжетная разметка (маржа и ось x сверху) - PullRequest
0 голосов
/ 17 мая 2018

Я столкнулся с проблемой при использовании plotly и R глянца для визуализации данных. Мои примеры кодов:

y <- c("q1", "q2", "q3", "q4", "q5", "q6", "q7")
x1 <- c(20, 10, 15, 15, 20, 10, 15)
x2 <- c(10, 20, 20, 10, 10, 30, 10)
x3 <- c(10, 10, 5, 10, 10, 5, 5)
x4 <- c(20, 25, 25, 35, 55, 40, 35)
x5 <- c(40, 35, 35, 30, 5, 15, 35)
num <-  c(1,3,5,6,7,2,4)
df <- data.frame(y, x1, x2, x3, x4, x5, num)



plot_ly(df[order(-xtfrm(df$num)),]) %>%
  add_trace(x = ~x1, y = ~y, marker = list(color = 'rgb(202,0,32)'), type = 'bar', orientation = 'h') %>%
  add_trace(x = ~x2, y = ~y,  marker = list(color = 'rgb(244,165,130)'), type = 'bar', orientation = 'h') %>%
  add_trace(x = ~x3, y = ~y, marker = list(color = 'rgb(223,223,223)'), type = 'bar', orientation = 'h') %>%
  add_trace(x = ~x4, y = ~y, marker = list(color = 'rgb(146,197,222)'), type = 'bar', orientation = 'h') %>%
  add_trace(x = ~x5, y = ~y,  marker = list(color = 'rgb(5,113,176)'), type = 'bar', orientation = 'h') %>%  
  layout(title="mytitle",
         xaxis = list(title = "",
                      showticklabels = TRUE,
                      zeroline = FALSE,
                      domain = c(0.15, 1)),
         yaxis = list(title = "",
                      showticklabels = FALSE,
                      zeroline = FALSE,
                      categoryorder = 'array', 
                      categoryarray = ~qt),
         barmode = 'relative',
         paper_bgcolor = 'rgb(248, 248, 255)', plot_bgcolor = 'rgb(248, 248, 255)',
         autosize=T,
         margin = list(l = 150, r = 10, t = 100, b = 50, pad=4),
         showlegend=F) %>%
  # labeling the y-axis
  add_annotations(xref = 'paper', yref = 'y', x = 0.14, y = df$y,
                  xanchor = 'right',
                  text = df$y,
                  font = list(family = 'Arial', size = 5,
                              color = 'rgb(67, 67, 67)'),
                  showarrow = FALSE, align = 'right')

Проблема в том, что поля не очень хорошо работают с большим количеством вопросов. По моим данным, одна из категорий включает более 40 вопросов. Сюжет с 5 вопросами выглядит нормально. (длина = 500) plot with 5 questions Но сюжет с более чем 40 вопросами имеет большие верхние и нижние поля. (Длина = 4000) plot with 40+ questions Пожалуйста, помогите мне избавиться от этих странных полей. bottom margin and x-axis Кроме того, я хотел бы знать, как поместить ось X как вверху, так и внизу графика. Спасибо!

...