2017-04-21 93 views
0

我想创建一个条形图,显示条形图y轴中某个日期的日期条目数和图形x轴上的日期。同时,我想将该栏分为“是”和“否”部分。R:在ggplot2中使用条形图中的日期

Date,Hungry 
Friday, March 24, 2017 2:33:46 PM,Yes 
Friday, March 24, 2017 3:39:46 PM,No 
Friday, March 24, 2017 4:39:46 PM,Yes 
Friday, March 24, 2017 5:39:46 PM,No 
Friday, March 24, 2017 6:39:46 PM,Yes 
Friday, March 24, 2017 7:39:46 PM,Yes 
Saturday, March 25, 2017 9:41:00 AM,Yes 
Saturday, March 25, 2017 10:41:00 AM,Yes 
Saturday, March 25, 2017 11:41:00 AM,No 
Saturday, March 25, 2017 13:41:00 AM,No 
Saturday, March 25, 2017 14:41:00 AM,No 
Saturday, March 25, 2017 15:41:00 AM,Yes 
Saturday, March 25, 2017 16:41:00 AM,Yes 

在总共有三月(3Yes/3NO)的25 6个日期条目,并在3月26(4Yes/3NO)7个日期条目。导致像这样的图表:

Hungry 
^ 
| 
| 
| 
| 
9| 
|    _ 
| _   |n| 
| |n|  |o| 
5| |o|  |_| 
| |_|  |y| 
| |y|  |e| 
| |e|  |s| 
1|__|s|________|_|__________> 
          Date 

    2   2    
    4   5    
    M   M    
    A   A 
    R   R 
    C   C 
    H   H 

对不起,问这个看似简单的问题。

编辑。 Adam Quek让我提供一些数据dput。以下是几行:

dat <- structure(list(Date = structure(1:4, .Label = c("Friday, March 24, 2017 4:39:46 PM", 
"Friday, March 24, 2017 7:21:33 PM", "Friday, March 24, 2017 7:21:51 PM", 
"Friday, March 24, 2017 7:22:00 PM", "Friday, March 24, 2017 7:22:14 PM", 
"Saturday, March 25, 2017 8:00:10 AM", "Saturday, March 25, 2017 8:00:25 AM", 
"Saturday, March 25, 2017 8:00:46 AM", "Saturday, March 25, 2017 8:01:02 AM", 
"Saturday, March 25, 2017 8:01:20 AM", "Saturday, March 25, 2017 8:01:37 AM", 
"Saturday, March 25, 2017 8:01:50 AM"), class = "factor"), Hungry = structure(c(2L, 
1L, 2L, 1L), .Label = c("No", "Yes"), class = "factor")), .Names = c("Date", 
"Hungry"), row.names = c(NA, 4L), class = "data.frame") 

回答

1

下面是绘制您需要的快捷方式。

library(ggplot2) 
ggplot(dat, aes(date, fill=as.factor(hungry))) + 
     geom_bar() 

enter image description here

我重拍的数据为:

dat <- structure(list(date = structure(c(17249, 17249, 17249, 17249, 
17249, 17249, 17250, 17250, 17250, 17250, 17250, 17250, 17250 
), class = "Date"), hungry = structure(c(2L, 1L, 2L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L), .Label = c("No", "Yes"), class = "factor")), class = "data.frame", .Names = c("date", 
"hungry"), row.names = c(NA, -13L)) 

编辑:

与新的示例数据附加输入:

(ⅰ)变更日期到一个可读的日期格式R.检查R帮助文件为strptime日期/时间格式

dat$date <- as.Date(dat$Date, "%A, %B %d, %Y %X") 

(ii)绘制与上述相似的ggplot。

ggplot(dat, aes(date, fill=Hungry)) + 
     geom_bar() 

enter image description here

+0

谢谢您的回复:-)你提供的图形正是我要寻找和你建议的代码获得期望的结果上面的“最小工作示例”。不幸的是,我无法使用它,因为我有大量的数据,我不能用这种方式手动更改它。 – Phhilip

+0

您是否能够首先在R中读取您的数据?我无法读取您提供的数据,因为它不是一种典型的以逗号分隔的或制表符分隔的格式(这就是为什么我必须手动输入它们的原因)。也许如果你可以为你的数据框输入数据,那么我可以帮助它运行。 –

+0

再次感谢您的快速回复。我提取了几行数据集,并在问题中添加了一个“输入”。希望这是你要求的。 – Phhilip