【问题标题】:R plot dynamic wind direction as arrow over timeR随着时间的推移将动态风向绘制为箭头
【发布时间】:2016-11-12 22:20:42
【问题描述】:

我想在很长一段时间内绘制,因此动态图是其他人选择时间范围的不错选择。我想将风向显示为箭头;风速可以是线

但是如果我在上面的每一行都添加箭头会很混乱,而且似乎很难在 x 轴上添加更多日期。我想得到的最终结果是这样的:

是否可以在 R 中绘制风箭头图?

另外:这里是绘图的演示数据

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))

__________________更新________________________________________

很抱歉没有强调我的问题。

感谢@koekenbakker,该功能在绘制风向和风速方面做得很好。否则,我的问题可能更多地集中在如何将风图转换为动态图。(动态选择日期就足够了)

【问题讨论】:

  • 你应该能够用geom_linegeom_spokearrow = arrow() 做到这一点(你需要将wd 转换为弧度),但对于我的生活,我可以' t 让箭头指向正确的方向。
  • 在日期时间(例如 POSIXct)类中使用日期和时间将使绘制 x 轴更容易
  • @alistaire 很好,我已经尝试使用geom_linegeom_segmentwitharrow=arrow() 使用sin()cos() 来做到这一点。但是动态显示结果仍然很困难。
  • @Richard Telford 对不起那个演示数据,我已经使用 paste()strptime() 处理了这两列

标签: r plot ggplot2 plotly segment


【解决方案1】:

使用angle 参数尝试shape 包中的Arrowhead 函数:

箭头的角度(逆时针,相对于 x 轴),以度为单位 [0,360];一个值或一个向量

我不确定这是否与您对风向的描述相符,也许您需要从 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)

【讨论】:

  • 是的,这个答案满足了我的一部分问题,关于风向,风速也显示得很好。但是我要解决的另一个问题是如何动态选择日期范围。在 ggplot2 中,我可以像 Arrowhead 那样创建类似的绘图。对于 ggplot 对象,我可以使用 ggplotly 函数进行动态处理,但是它似乎不太stable,我已经寻找包dygraph,但是在它的示例演示中,我发现它在折线图中做得很好,可能不是箭头或分段图?
  • 恐怕我无法帮助您解决这部分问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多