基于 R 中的多个分类表示时间序列数据
Representing time series data based on multiple classifications in R
所以这是我第一次 post 在 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
这是@KppatelPatel 建议的 ggplot2 和 plotly 的快速可视化
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)
所提供数据的 data.frame 输入:
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")
使用 x=Time
绘制上面相同的 ggplot 将得到以下结果:
所以这是我第一次 post 在 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
这是@KppatelPatel 建议的 ggplot2 和 plotly 的快速可视化
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)
所提供数据的 data.frame 输入:
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")
使用 x=Time
绘制上面相同的 ggplot 将得到以下结果: