2015-07-11 1 views
3

У меня есть набор данных, который выглядит, как этотучасток 2 переменные по оси Y, используя ggvis в R

"YEAR","A","B" 
2001,100,177 
2002,154,419 
2003,334,190 
2012,301,90 

.. и много больше строк.

столбцы «год» в диапазоне от 2001 до 2013 г. я набор данных, загруженных в data.table «DT»

Хочу построить график с указанием года по оси X, а также линейные графики для А и В на оси Y.

Другими словами, мне нужно объединить эти два графика в одном.

DT %>% ggvis(~YEAR, ~A) %>% layer_lines() 
DT %>% ggvis(~YEAR, ~B) %>% layer_lines() 

Я знаю способ сделать это с помощью ggplot2, но не смог найти способ для ggvis. Это будет здорово, даже если я смогу сделать это блестящим. Ваша помощь очень ценится.

ответ

3

Вы можете сделать это следующим образом:

library(ggvis) 

DT %>% ggvis(x= ~YEAR) %>% 
    layer_lines(y= ~A, stroke:='blue') %>% 
    layer_lines(y= ~B, stroke:='orange') 

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

Выход:

enter image description here

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

library(reshape2) 
DT2 <- melt(DT, 'YEAR', c('A','B')) 
DT2 %>% ggvis(~YEAR, ~value, stroke=~variable) %>% layer_lines() 

enter image description here

+0

Именно то, что я искал. Большое спасибо. Второй вариант еще лучше. –

+0

Добро пожаловать :). Рад, что я могу помочь! – LyzandeR

2

Попробуйте это:

DT %>% ggvis(~YEAR, ~A) %>% layer_lines()%>%layer_lines(x=~YEAR, y=~B) 
+0

Это приводит к ошибке (есть знак минус перед вашим ГОДОМ) и нет никакого упоминания о группе В любом случае .. – LyzandeR

+0

Вы правы, я редактировал его. –

+0

@ShenglinChen спасибо, ваше решение работает тоже. –