在R中使用ggvis将两个变量绘制在Y轴上。

3

我有一个类似这样的数据集

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

...还有很多行。

“YEAR”列的范围从2001年到2013年。我已经将数据集加载到data.table“DT”中。

我想绘制一个图表,X轴上是YEAR,Y轴上是A和B的线图。

换句话说,我需要将这两个图表合并为一个。

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

我知道如何使用ggplot2实现此功能,但是找不到在ggvis中实现的方法。即使我能在shiny中完成也会很好。非常感谢您的帮助。

2个回答

3
您可以这样做:
library(ggvis)

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

我假设您需要为每行使用不同的颜色来区分组,因此我添加了stroke参数。

输出:

enter image description here

如果您首先将数据框融合,然后使用stroke参数绘图,可能会更好,这样还会返回一个图例。像这样:

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

enter image description here


正是我一直在寻找的。非常感谢。第二个选项甚至更好。 - Pritesh Ranjan

2

试试这个:

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

这会产生一个错误(你的年份前面有一个减号),而且根本没有提到B组。 - LyzandeR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接