2015-01-12 4 views
2

Я знаю, что есть несколько ответов на вопросы, касающиеся таймсеров и нескольких фреймов данных, но я не могу понять это.ggplot несколько временных рядов неравного времени

Я хотел бы распечатать данные с четырьмя различными датами давления со временем (колонка pa). У меня есть 4 dfs отсчетов давления с отметкой времени из того же эксперимента. Тем не менее, датчики собирали данные в неравные моменты времени, а длина столбцов была неравной из-за сбоев датчиков и других всплесков в данных.

Эти два аспекта не позволили мне успешно создать график, содержащий все данные четырех датчиков. Все df имеют неравное количество наблюдений, но в пределах того же диапазона, но они различаются на уровне секунд. Например, потребуется ли временное разрешение менять часы?

Это то, что ФР выглядит следующим образом: PA_1 п = 1097361

 time    pa  wifi 
1 2014-09-01 16:21:00 100.620 1 
2 2014-09-01 17:20:33 100.572 1 
3 2014-09-01 18:20:05 100.561 0 
4 2014-09-01 19:19:38 100.523 0 
5 2014-09-01 20:19:11 100.511 1  
6 2014-09-01 21:18:43 100.534 1 

PA_2: n=914364 
     time    pa  wifi 
1 2014-09-01 15:25:05 NA   1 
2 2014-09-01 15:25:09 100.798 1 
3 2014-09-01 15:25:11 100.792 0    
4 2014-09-01 15:25:15 100.791 0    
5 2014-09-01 15:25:18 100.790 1    
6 2014-09-01 15:25:20 100.791 1 

PA_3 n=963527 
     time    pa  wifi 
1 2014-09-01 15:25:02 100.832 1 
2 2014-09-01 15:25:05 100.832 1 
3 2014-09-01 15:25:08 100.825 0 
4 2014-09-01 15:25:11 100.831 0 
5 2014-09-01 15:25:14 100.830 1 
6 2014-09-01 15:25:17 100.836 1 

PA_4: n = 1061117 
     time    pa  wifi 
1 2014-09-01 15:25:00 100.690 1 
2 2014-09-01 15:25:04 100.683 1 
3 2014-09-01 15:25:07 100.685 0 
4 2014-09-01 15:25:11 100.687 0 
5 2014-09-01 15:25:14 100.682 1 
6 2014-09-01 15:25:18 100.684 1  

Кроме того, дихотомический переменная «Wi-Fi» был добавлен в ФР для обозначения, когда Wi-Fi был включен или выключен во время experiment.Two из датчики подвергались воздействию Wi-Fi, в то время как два были вне сигнала Wi-Fi. Я хотел бы показать это на графике. Возможно, затеняя область или увеличивая размер линий, когда wifi был включен во время эксперимента, но я не слишком уверен, как это сделать. Чтобы проиллюстрировать это, я редактировал средние 2 записи wifi в примерах, но Wi-Fi включен в течение 10 дней за раз, а не несколько секунд.

Благодаря

редактировать: добавлены примеры каждого ФР и добавили несколько explinations

+0

Чтобы быть ясным, вы пытаетесь получить все четыре в качестве одной строки? А затем, возможно, разделить на переменную wifi? – JasonAizkalns

+0

Последующие образцы других 3 датчиков также – arvi1000

+1

Кроме того, вы пытаетесь построить 4 датчика как 4 разные серии, или вы объедините их для формирования 1 серии? (Я думаю, что @ jaysunice3401 выводит последнее в его/ее ответе) – arvi1000

ответ

2

Мне не совсем понятно, что вы просите, но (если это то, что вы пытаетесь сделать) вы можете комбинировать data.frames, а затем нарисовать их на одной диаграмме, используя цвет для дифференциации датчиков, а также альфа/форму настройки для дифференциации статуса Wi-Fi. Тогда нет проблем, что серия начинается и заканчивается в разное время и имеет разные измерения.

Что-то вроде этого:

library(ggplot2) 
ggplot(dat, 
     aes(x=time, y=pa, group=sensor, 
      color=factor(sensor), alpha=factor(wifi))) + 
    geom_point(aes(shape=factor(wifi)), size=3) + 
    geom_line() + 
    scale_alpha_manual(values=c(.3, 1)) 

Который (с использованием совершенно случайных данных) выглядит следующим образом:

enter image description here

Для генерации случайных данных, я сделал это:

библиотека (lubridate)

# fake data 
set.seed(123) 
n <- 40 

dat <- 
    data.frame(sensor=sample(1:4, n, replace=T), 
      hr=sample(1:24, n, replace=T), 
      min=sample(1:60, n, replace=T), 
      sec=sample(1:60, n, replace=T), 
      wifi=rbinom(n, 1, .5), 
      pa=100+rnorm(n)) 

dat$time <- with(dat, ymd_hms(paste('2014-09-01', 
            paste(hr, min, sec, sep=':')))) 
+1

А, ок! Я понимаю. Я собираюсь добавить столбец «ID датчика» и rbind() 4 dfs в один и следовать вашему коду. Спасибо вам! – Evan

+0

после конкатенации данных в 1 df, вот первый вывод: http://imgur.com/PCeKTYb, и я думаю, что текущий способ отображения, если Wi-Fi был включен/выключен, не так уж ясен. Может быть, на оси х или изменения мыслительности линии. – Evan

+0

Кроме того, как я могу получить датчики 1 и 4, чтобы они отображались в том же цвете и сенах 2 и 3 как другой цвет? – Evan

0

Я предполагаю, что вы можете получать повесила с group=1 - вы должны использовать aes(group=1) так, что ggplot() знает подсоединять данные вместе в строке.

library(ggplot2) 

# Create some data 
set.seed(1) 
PA_1 <- data.frame(time = Sys.Date()+rnorm(20, 0, 1), 
        pa = 100 + rnorm(20, 0, 2), 
        wifi = sample(0:1, 20, 2), 
        dset = 1) 

PA_2 <- data.frame(time = Sys.Date()+rnorm(15, 0, 1), 
        pa = 100 + rnorm(15, 0, 2), 
        wifi = sample(0:1, 15, 2), 
        dset = 2) 

PA_3 <- data.frame(time = Sys.Date()+rnorm(25, 0, 1), 
        pa = 100 + rnorm(25, 0, 2), 
        wifi = sample(0:1, 25, 2), 
        dset = 3) 

PA_4 <- data.frame(time = Sys.Date()+rnorm(20, 0, 1), 
        pa = 100 + rnorm(20, 0, 2), 
        wifi = sample(0:1, 20, 2), 
        dset = 4) 

# Combine the dataframes 
df <- do.call(rbind, list(PA_1, PA_2, PA_3, PA_4)) 
head(df) 
#   time  pa wifi dset 
# 1 2015-01-11 101.83795 0 1 
# 2 2015-01-12 101.56427 1 1 
# 3 2015-01-11 100.14913 0 1 
# 4 2015-01-13 96.02130 0 1 
# 5 2015-01-12 101.23965 1 1 
# 6 2015-01-11 99.88774 0 1 


# Variation 1 
p1 <- ggplot(df, aes(x=time, y=pa, group=1)) + 
    geom_line() 

# Variation 2 
p2 <- ggplot(df, aes(x=time, y=pa, group=wifi, color=factor(wifi))) + 
    geom_line() 

# Variation 3 
p3 <- ggplot(df, aes(x=time, y=pa, group=1)) + 
    geom_line() + 
    facet_wrap(~wifi) 

library(gridExtra) 
grid.arrange(p1, p2, p3, ncol=1) 

Results

В качестве альтернативы, если вы решили сохранить наборы данных "отдельный" вы можете сделать одно из следующих действий:

ggplot(df, aes(x=time, y=pa, group=dset, color=factor(dset))) + 
    geom_line() 

Separate01

ggplot(df, aes(x=time, y=pa, color=factor(dset))) + 
    geom_line() + 
    facet_grid(wifi~dset) 

Separate02

Смежные вопросы