2016-07-11 5 views
1

Я хочу нарисовать ветер в течение очень долгого времени, поэтому динамический сюжет - отличный выбор для других, чтобы выбрать временной диапазон. И я хочу показать направление ветра как стрелки; скорость ветра может быть линия.R динамическое направление ветра как стрелка в течение времени

Но это будет грязно, если я добавлю стрелки к каждой строке выше, и кажется, сложно добавить дату на ось x. Что конечный результат я хочу получить, как это:

enter image description here

Можно ли построить ветер стрелкой участок в R в?

Plus: здесь демонстрационные данные для участка

structure(list(date = c("2016-04-01", "2016-04-01", "2016-04-01", 
"2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", 
"2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", 
"2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", 
"2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", "2016-04-01", 
"2016-04-01", "2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", 
"2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", 
"2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", 
"2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", 
"2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02", "2016-04-02" 
), time = c("0:00:00", "1:00:00", "2:00:00", "3:00:00", "4:00:00", 
"5:00:00", "6:00:00", "7:00:00", "8:00:00", "9:00:00", "10:00:00", 
"11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00", 
"17:00:00", "18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00", 
"23:00:00", "0:00:00", "1:00:00", "2:00:00", "3:00:00", "4:00:00", 
"5:00:00", "6:00:00", "7:00:00", "8:00:00", "9:00:00", "10:00:00", 
"11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00", 
"17:00:00", "18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00", 
"23:00:00"), ws = c(0.6, 0.6, 0.3, 0.3, 0.5, 0.5, 0.4, 0.4, 0.4, 
0.6, 0.9, 0.4, 0.9, 2.3, 2, 2.5, 2.6, 2.4, 2, 2.2, 1.7, 1.2, 
1, 1, 1.4, 1.1, 1.4, 0.8, 1, 1.5, 1.2, 1.3, 1.4, 1.3, 2, 2.1, 
2.7, 2.2, 2.1, 2.5, 1.9, 2, 1.7, 1.9, 1.2, 0.4, 0.5, 0.4), wd = c(179, 
151.5, 200, 178.7, 205.5, 115.1, 110.9, 175.7, 192.9, 121, 117.5, 
171.7, 204.8, 160.7, 169.3, 171, 169.4, 172.8, 154.5, 170.6, 
151, 131.1, 105.3, 109.5, 141.9, 137.1, 113.7, 116.6, 88.7, 110.1, 
99.9, 105.5, 98.4, 101.3, 128.6, 146.9, 148.1, 148.4, 152.5, 
144.1, 145, 160, 179.2, 147.3, 156.6, 147.1, 158, 157.9)), .Names = c("date", 
"time", "ws", "wd"), class = "data.frame", row.names = c(NA, 
-48L)) 

________________________________update________________________________________

Извините за не подчеркнуть мою проблему.

Благодаря @koekenbakker, функция преуспевает в черчении направления ветра и скорости в одном plot.Otherwise, моя проблема может сосредоточиться на том, как преобразовать ветра участок в динамического сюжета. (Динамическом в выборе даты достаточно)

+0

Вы должны быть в состоянии сделать это с 'geom_line' и' 'geom_spoke' с стрелкой = стрелкой()' (вам нужно преобразовать 'wd' в радианах), но для жизни я не может получить стрелки для указания в правильном направлении. – alistaire

+0

Наличие даты и времени, как в классе datetime (например, POSIXct), значительно упростило бы очерчивание оси x –

+0

@alistaire Я попытался использовать это использование 'geom_line' и' geom_segment'with'arrow = arrow() ' используя 'sin()' и 'cos()'. Но все же трудно динамически отображать результат. – user5230058

ответ

0

Попробуйте функцию Arrowhead в shape пакете с angle аргумента:

угол (стрелкой против часовой стрелки, по отношению к оси х), в градусах [0360]; либо одно значение, либо вектор

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

library(shape) 
plot(1:nrow(a), rep(1,nrow(a)), pch=NA, ylim=c(0,5)) 
Arrowhead(x0 = 1:nrow(a), y0 = a$ws, angle=a$wd) 
+0

Да, этот ответ удовлетворяет одну часть моей проблемы, о направлении ветра и скорости ветра также очень хорошо проявляется. Но есть еще одна проблема, которую я хочу решить, - как динамически выбирать диапазон дат. В ** ggplot2 **, я могу создать симларный сюжет, как ** Arrowhead **. Для объекта ggplot я мог бы использовать динамическую функцию ** ggplotly **, но она кажется менее устойчивой **, Я смотрю пакет ** dygraph **, но в его демонстрации примера я нахожу, что это хорошо работает в линейной диаграмме, может быть, не в виде стрелки или сегментной диаграммы? – user5230058

+0

Боюсь, я не могу помочь вам с этой частью вопроса. – koekenbakker