Как создать круговые временные графики в R с интервалом в 1 минуту

В настоящее время я анализирую данные, изучающие поведенческий отклик BtRw на аэрофотосъемку, основанную на покадровой съемке. Ниже приведен краткий пример фреймов данных, которые я импортировал в R.

События классифицируются как количество BtRw, которые были захвачены на фотографии. Я действительно хотел бы иметь возможность создать круговой график времени, который представляет данные с интервалом в 1 минуту. Я пробовал альтернативные версии приведенного ниже кода с ограниченным успехом. Данные, которые я получил, были получены с 6:00 до 14:00.

Будем весьма благодарны за любые предложения относительно того, что я делаю неправильно.

ggplot(eventdata, aes(x=eventhour, fill = Events)) + 
geom_histogram(breaks = seq(6, 14), width = 2, colour = "grey") + 
coord_polar(start = 6) + theme_minimal() + scale_fill_brewer() + ylab ("Count") +
ggtitle("Events by Time of Day") + 
scale_x_continuous("", limits = c(6,14), breaks = seq(6, 14), labels = seq(6, 14))

        Time       Events 

131     8:09:00      2
 132     8:10:00      2
 133     8:11:00      2
 134     8:12:00      4
 135     8:13:00      4
 136     8:14:00      5
 137     8:15:00      5
 138     8:16:00      5
 139     8:17:00      5
 140     8:18:00      5
 141     8:19:00      5
 142     8:20:00      6
 143     8:21:00      6
 144     8:22:00      6
 145     8:23:00      5
 146     8:24:00      5
 147     8:25:00      5
 148     8:26:00      6
 149     8:27:00      6
 150     8:28:00      5
 151     8:29:00      5
 152     8:30:00      5
 153     8:31:00      5
 154     8:32:00      5
 155     8:33:00      5
 156     8:34:00      6
 157     8:35:00      6
 158     8:36:00      6
 159     8:37:00      6
 160     8:38:00      5
 161     8:39:00      6
 162     8:40:00      6
 163     8:41:00      6
 164     8:42:00      6
 165     8:43:00      6
 166     8:44:00      5
 167     8:45:00      4
 168     8:46:00      4
 169     8:47:00      4
 170     8:48:00      4
 171     8:49:00      4
 172     8:50:00      4
 173     8:51:00      4
 174     8:52:00      4
 175     8:53:00      4
 176     8:54:00      4
 177     8:55:00      4
 178     8:56:00      4
 179     8:57:00      4
 180     8:58:00      4
 181     8:59:00      4
 182     9:00:00      4
 183     9:01:00      4
 184     9:02:00      4
 185     9:03:00      4
 186     9:04:00      4
 187     9:05:00      4
 188     9:06:00      4
 189     9:07:00      4
 190     9:08:00      3
 191     9:09:00      3
 192     9:10:00      3
 193     9:11:00      3

1 ответ

Поэтому я не думаю, что stat_histogram - это хороший выбор, потому что вы "свернули" данные здесь. Поэтому я решил преобразовать время в число (от 6*60 до 14*60) и затем построить график с помощью geom_bar.

eventdata$minute <- sapply(strsplit(as.character(eventdata$Time), ":", fixed=T), 
    function(x) {as.numeric(x[1])*60+as.numeric(x[2])})

И затем заговор с

ggplot(eventdata, aes(x=minute, y=Events, fill=as.factor(Events))) + 
    geom_bar(stat="identity", width=2) + 
    coord_polar(start = 6*60) + theme_minimal() + scale_color_brewer() + 
    ggtitle("Events by Time of Day") + ylab ("Count") +
    scale_x_continuous("", limits = c(6,14)*60, breaks = seq(6, 13)*60, 
        labels = paste0(seq(6, 13),":00"))

Он по-прежнему выдает предупреждение (т. Е. "Position_stack требует неперекрывающихся интервалов x"), но, насколько я могу судить, это кажется неизбежным. При минимальном разрешении очень трудно увидеть отдельные столбцы на графике. Ниже приведен график, созданный с использованием тестовых данных.

введите описание изображения здесь

Другие вопросы по тегам