首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中不同轴的绘制时间和日期

R中不同轴的绘制时间和日期
EN

Stack Overflow用户
提问于 2014-12-06 08:07:58
回答 2查看 200关注 0票数 0

我的数据看上去像是

总目(数据1,10)

代码语言:javascript
复制
       id           time     type      value1            value2 value3
1    1612 7/1/2014 10:15 activity        none                         
2   76308 7/1/2014 10:17  battery discharging                         
3    1613 7/1/2014 10:17 activity        none                         
4    1614 7/1/2014 10:17 activity        none                         
5    1615 7/1/2014 10:17 activity        none                         
6    1616 7/1/2014 10:17 activity        none                         
7    1617 7/1/2014 10:17 activity        none                         
8  325200 7/1/2014 10:17     wifi     linksys 00:1a:70:5b:8f:21    -86
9    1618 7/1/2014 10:19 activity        none                         
10   1619 7/1/2014 10:19 activity        none                  

完整的数据可以以此链接格式下载,数据是csv,大小约为1.6MB。数据有5个重要列(时间、类型、value1、value2、value3)。类型包含:活动是指用户活动(无,高,低),sms,wifi等。

我想把我的数据绘制成这样:

X轴是间隔1小时的时间,Y轴是间隔1天的日期,然后对于每种类型,都有不同的颜色,如图中所示。

当许多价值在同一时间,所以情节看上去更厚,也为活动类型我想要不同的颜色(无,高,低)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-06 14:49:32

不确定您将如何使用这些数据来绘制图,在这里,我假设您在不同的日子中根据时间值绘制类型。看看这是不是你要找的东西:

代码语言:javascript
复制
# transforming your data
library(data.table); library(tidyr); library(ggplot2)
test = fread("data_test.csv")  # the data file is in working directory
test = separate(test, time, c("days","time"), sep=" ")
test$days = as.POSIXct(strptime(test$days, "%m/%d/%Y"))
test$time = as.POSIXct(strptime(test$time, "%H:%M"))

# to plot
ggplot(test, aes(x=time, y=type, colour=type, shape=type)) +
  theme_bw() + 
  geom_point() + 
  facet_grid(days ~.) + 
  scale_x_datetime(breaks=date_breaks("1 hour"), labels = date_format("%H:%M"))

票数 1
EN

Stack Overflow用户

发布于 2014-12-06 09:58:13

我可能给您的第一个指示是准备具有正确间隔的变量,并使用ggplot2 (也可以是格)。

使用ggplot2,您必须编写如下内容:

代码语言:javascript
复制
ggplot(aes(x = time_1h, y = value, color = type, shape = type), data = yourdata) +
 geom_point() + facet_wrap(~ date_1day, ncol = 1)

据我所知,对于每个日期,你想要在y轴上画一个图,就是在那个特定的时间里是否存在这种模式,你想要在不同的高度上画出它,这样点就不重合了。为此,您可以准备数据,例如,如果存在wifi,则给出1,如果存在调用,则给出2.这可能是个解决办法。等待其他可能的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27329655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档