Код Джона Спринга работает.Я проверю (с немного другими данными) и покажу вывод с его кодом.
Немного другие данные, с разными WindDir
, чтобы выделить диагонали (и 30 с):
WindSpeed<-c(1,2,3,5,7,2,3,4,5,6,7,8)
WindDir <- c(0, 30, 45, 60, 90, 120, 135, 150, 180, 225, 270, 315)
TimeStamp<-c("2018-01-02 01:00","2018-01-02 02:00","2018-01-02 03:00","2018-01-02 04:00","2018-01-02 05:00","2018-01-02 06:00","2018-01-02 07:00","2018-01-02 08:00","2018-01-02 09:00","2018-01-02 10:00","2018-01-02 11:00","2018-01-02 12:00")
DF<-data.frame(TimeStamp,WindSpeed, WindDir)
DF$TimeStamp <- as.POSIXct(DF$TimeStamp)
Для большей ясности я дополнил код Джона для концов стрелок, начальных точек и цвета (сгруппированы наивно).
ggplot(DF) +
geom_segment(aes(x = TimeStamp,
y = 0,
xend = TimeStamp + lubridate::dhours(WindSpeed * 1 * -cos((90-WindDir) / 360 * 2 * pi)),
yend = WindSpeed * 1 * -sin((90-WindDir) / 360 * 2 * pi),
col = factor(TimeStamp)
),
arrow = arrow(length = unit(0.5, "cm")) ) +
geom_point(aes(TimeStamp, 0), size = 1) +
coord_fixed(3600) +
theme(legend.position = "none")
Iдумаю, что это ясно показывает 45-е как хорошие, особенно последние, попавшие в линии сетки.
Используя ваши данные и этот код:
WindSpeed<-c(1,2,3,5,7,2,3,4,5,6,7,8)
WindDir<-c(180,90,320,200,350,10,270,50,9,100,110,129)
TimeStamp<-c("2018-01-02 01:00","2018-01-02 02:00","2018-01-02 03:00","2018-01-02 04:00","2018-01-02 05:00","2018-01-02 06:00","2018-01-02 07:00","2018-01-02 08:00","2018-01-02 09:00","2018-01-02 10:00","2018-01-02 11:00","2018-01-02 12:00")
DF<-data.frame(TimeStamp,WindSpeed, WindDir)
DF$TimeStamp <- as.POSIXct(DF$TimeStamp)
представляет: