График нескольких осей в r - строит только последний топор - PullRequest
0 голосов
/ 02 ноября 2018

Когда я пытаюсь нанести несколько трасс на разные оси, отображается только последняя.

Во-первых, давайте предположим, что я строю все на одном топоре:

temp <- data.frame(x = c('a','b','c','d','e'),
 a = c(1,2,3,4,5),
 b = c(10,20,30,40,50),
 c = c(.1,.2,.3,.4,.5))
 p = plot_ly()
 for(l in c('a','b','c')){
     x = temp[,'x']
     y = temp[, l]
     p <- p %>%
         add_trace(x = x, y = y)
    }

Что у меня есть

Проблема в том, что большие числа подавляют маленькие, и вы не можете сравнивать зеленые столбцы. Поэтому я решил использовать разные оси, как показано ниже

p = plot_ly()
i=0
for(l in c('a','b','c')){
    i=i+1
    x = temp[,'x']
    y = temp[, l]
    p <- p %>%
        add_trace(x = x, y = y, yaxis = paste('y',i,sep=''))
    }

Что у меня есть

Как вы можете видеть, есть только след для последнего нанесенного топора. Наложение не является проблемой. На изображении ниже я отключил trace2, и на этот раз ничего не строилось.

Ничего не заговорено

Я знаю, что макет может быть проблемой, и я пробовал много разных способов с настройкой, но безрезультатно. Я собираюсь использовать его с приложением, где пользователь выбирает поля (также динамически генерируемые), которые будут нанесены на график. Для меня так важно, что решение не может предполагать жесткое кодирование имен полей.

...