我的数据看起来像
头(data1,10)
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
完整的数据可以this link格式下载,数据是csv,大小约为1.6 MB。 数据有5个重要的列(时间,类型,值1,值2,值3)。 type contains:activity表示用户活动(无,高,低),短信,wifi等。
我想将我的数据绘制成如下:
X轴是间隔1小时的时间,Y轴是间隔1天的日期。 然后对于每种类型都有不同的颜色,如图所示。
当许多值同时显示时,情节看起来更厚,而且对于活动类型我想要不同的颜色(无,高和低)。
真的,我不知道这样做,我需要你的帮助。 谢谢,
答案 0 :(得分:1)
不确定您将如何使用数据进行绘图,这里我假设您在不同日期绘制类型与时间值的关系。看看这是否是您正在寻找的:
# 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 :(得分:0)
我可能给你的第一个指示是用正确的间隔准备变量并使用ggplot2(或格子)。
使用ggplot2,您必须编写如下内容:
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等等......这可能是一个解决方案。等待其他可能的答案。