所以这是我在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
答案 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)
提供数据的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
绘图将为您提供以下内容: