Как создать круговые временные графики в 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"), но, насколько я могу судить, это кажется неизбежным. При минимальном разрешении очень трудно увидеть отдельные столбцы на графике. Ниже приведен график, созданный с использованием тестовых данных.