基于R中的多个分类表示时间序列数据

时间:2017-04-18 18:49:19

标签: r time-series dygraphs rcharts htmlwidgets

所以这是我在SO的第一篇文章。 我有一个数据集,看起来如下所示。但它适用于更多的存储桶和更长的持续时间。我希望得到某种互动的情节,这对于表示这些数据是理想的。表示需要考虑所有提到的列,并且需要是交互式的。我试过通过dygraphs,ggplot2,rcharts和其他一些软件包,但没有找到任何简单方便的方法。我刚刚开始使用R,所以一些见解会很棒。

Month    Age    Gender  Percentage
Mar-16  0-20    F         1.01
Mar-16  0-20    M         0.46
Mar-16  21-30   F         5.08
Mar-16  21-30   M         4.03
Apr-16  0-20    F         2.34
Apr-16  0-20    M         3.55
Apr-16  21-30   F         6.78
Apr-16  21-30   M         9.08
May-16  0-20    F         3.56
May-16  0-20    M         3
May-16  21-30   F         2.08
May-16  21-30   M         10

1 个答案:

答案 0 :(得分:1)

这里有一个使用ggplot2的快速可视化,并按照@KppatelPatel的建议进行绘制 ggplotly的输出将是您的图形用户界面上的交互式绘图,具有悬停信息,例如Month: Apr-16; Percentage: 2.34; Gender: F

library(ggplot2)
library(plotly)

p <- ggplot(dat, aes(x=Month, y=Percentage, fill=Gender)) + 
  geom_bar(stat="identity", position = position_dodge()) + 
  facet_wrap(~Age, ncol=2)

ggplotly(p)

enter image description here

提供数据的data.frame dput:

dat <- structure(list(Month = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 
1L, 3L, 3L, 3L, 3L), .Label = c("Apr-16", "Mar-16", "May-16"), class = "factor"), 
Age = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 
2L, 2L), .Label = c("0-20", "21-30"), class = "factor"), 
Gender = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L), .Label = c("F", "M"), class = "factor"), Percentage = c(1.01, 
0.46, 5.08, 4.03, 2.34, 3.55, 6.78, 9.08, 3.56, 3, 2.08, 
10)), .Names = c("Month", "Age", "Gender", "Percentage"), class = "data.frame", row.names = c(NA, 
-12L))

编辑:

要按逻辑顺序绘制时间,请将月份转换为日期格式:

library(dplyr)
dat$Time <- dat$Month %>% 
            as.character %>%
            paste("01-", .) %>%
            as.Date(., format= "%d-%b-%y")

使用上面相同ggplot的x=Time绘图将为您提供以下内容:

enter image description here