2016-09-29 3 views
1

Я пытаюсь построить интерактивную диаграмму с использованием сюжетной линии, но она не показывает geom_line(), и я не уверен, почему. Это не мой пример, но даже пример, представленный на веб-странице plotly, терпит неудачу. Вот оно:ggplotly не отображается geom_line

library(plotly) 
datn <- read.table(header=TRUE, text=' 
supp dose length 
        OJ 0.5 13.23 
        OJ 1.0 22.70 
        OJ 2.0 26.06 
        VC 0.5 7.98 
        VC 1.0 16.77 
        VC 2.0 26.14 
        ') 

## This one works fine (original example): 
ggplot(data=datn, aes(x=dose, y=length, group=supp, colour=supp)) + geom_line() + geom_point() 
ggplotly() 

## This one doesn't (modified the group): 
ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp)) + geom_line() + geom_point() 
ggplotly() 

который выглядит после ggplot:

enter image description here

Но ggplotly выглядит следующим образом:

enter image description here

Что это дает? Пробовал: The appliance of geom_line() in ggplot() и ggplotly not displaying geom_line correctly безрезультатно.

UPDATE: Если я опускаю цвет, линии построения правильно:

ggplot(data=datn, aes(x=dose, y=length, group=dose)) +   
geom_line(aes(group=dose)) + geom_point() 
ggplotly() 

Так что я всегда мог просто присвоить geom_point() свойства при geom_point() сам по себе, но почему?

ответ

0

Он делает то, что вы его кодируете. Возьмем, например, первый и вынимают параметр group целиком в функции aes():

ggplot(data=datn, aes(x=dose, y=length, colour=supp)) + geom_line() 

Вы получаете точно такой же сюжет, как и раньше.

В вашем втором примере вы окрашиваете supp, но группируете по dose. Например, когда dose равно 0,5, длина составляет 13,23 и 7,98. На участке, который соединяет точки (0,5, 7,98) и (0,5, 13,23), есть линия. Так как вы группируетесь по dose, линии будут построены на основе групп dose, которые составляют 0,5, 1 и 2.

+0

Да, это то, что я хочу, но ggplotly() будет опуская эти строки. Это мой вопрос. Я загружаю картинку. –

0

Это может быть функция, а не ошибка: в одной строке может быть только один цвет. При группировке для дозы две сгруппированные точки имеют разные значения sup, например. точечная доза 0,5 связана с величинами supp OJ и VC. Таким образом, функция построения графика имеет дело с ситуацией, когда два цвета присваиваются одной строке.

ggplot решает эту проблему, используя первый цвет, который он находит в datatable. Если перезаказ таблицы, ggplot будет использовать другой цвет для линий:

datn = datn[order(datn$supp, decreasing = T),] 

ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp)) + geom_line() + geom_point() 

В отличии от этого, ggplotly предпочитает решать неоднозначность, не черчения ни одной строчки. Если никакой двусмысленности не существует, построение также будет сделано ggplotly:

datn$supp2 = c("a", "b", "b", "a", "b", "b") 
ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp2)) + geom_line() + geom_point() 
ggplotly() 
Смежные вопросы