-1

我有下表

Date   Visits  User
Feb1   10     1
Feb1   20     1
Feb1   100    2
Feb2   10     2
Feb3   34     6

我正在尝试生成一个堆叠柱形图,其中 x 轴是日期,y 轴是访问次数,列按当天用户的访问次数堆叠。也就是说,对于 2 月 1 日,它应该显示一个 height=130 的列,其中它有两个部分,用户 2 为 100,用户 1 为 30。

我知道我应该生成一个这种形式的表格:

         1   2   6
Feb 1   30  100
Feb 2        10
Feb 3            34

然后使用 barplot 函数。R 是否提供任何简单的函数来将第一个表格转换为第二个表格格式?任何帮助将不胜感激

4

2 回答 2

1

ggplot2一种解决方案是为此任务使用包。

library(ggplot2)
#assuming that data frame is named df
ggplot(df,aes(Date,Visits,fill=factor(User)))+geom_bar(stat="identity")

在此处输入图像描述

于 2013-03-05T19:58:23.697 回答
0

要以您期望的形式获取数据,您可以使用xtabs

> (temp <- xtabs(Visits ~ Date + User, SODF))
      User
Date     1   2   6
  Feb1  30 100   0
  Feb2   0  10   0
  Feb3   0   0  34

您需要先转置此数据,然后才能将其用于barplot

barplot(t(temp), legend = TRUE, 
        col = c("skyblue", "grey", "palegreen"), 
        xlab = "Date", ylab = "Visits")

在此处输入图像描述

于 2013-03-09T06:55:59.320 回答